#include "idl_types.h" /* IDL structures for xattr file attributes this has nothing to do with RPC, we are just using our NDR/IDL infrastructure as a convenient way to store linearised information about a file in a architecture independent manner */ interface xattr { const string XATTR_DOSATTRIB_NAME = "user.DosAttrib"; const string XATTR_DOSATTRIB_ESTIMATED_SIZE = 64; /* we store basic dos attributes in a DosAttrib xattr. By using a union we can cope with new version of this structure more easily */ typedef struct { uint32 attrib; uint32 ea_size; uint64 size; uint64 alloc_size; NTTIME create_time; NTTIME change_time; } xattr_DosInfo1; typedef union { [case(1)] xattr_DosInfo1 info1; } xattr_DosInfo; typedef [public] struct { uint16 version; [switch_is(version)] xattr_DosInfo info; } xattr_DosAttrib; /* we store DOS style extended attributes in a DosEAs xattr */ const string XATTR_DOSEAS_NAME = "user.DosEAs"; const string XATTR_DOSEAS_ESTIMATED_SIZE = 100; typedef struct { utf8string name; DATA_BLOB value; } xattr_EA; typedef [public] struct { uint16 num_eas; [size_is(num_eas)] xattr_EA *eas; } xattr_DosEAs; }