diff options
author | Stefan (metze) Metzmacher <metze@samba.org> | 2009-10-28 15:42:47 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2009-10-28 15:42:47 -0700 |
commit | 25f96a4058c731e302e2d45bd670e598a7e591b7 (patch) | |
tree | d90cd270a311dafa4675750ae8eb29e55877ad11 /librpc/idl | |
parent | c27194a7e08b51a36a3214a84dcd3d6a12c7f891 (diff) | |
download | samba-25f96a4058c731e302e2d45bd670e598a7e591b7.tar.gz samba-25f96a4058c731e302e2d45bd670e598a7e591b7.tar.bz2 samba-25f96a4058c731e302e2d45bd670e598a7e591b7.zip |
Add in Metze's new code to ndr encode the user.DOSATTRIB
blobs. Next I'll change the create timestamp and dos attribute
code to use this.
Diffstat (limited to 'librpc/idl')
-rw-r--r-- | librpc/idl/xattr.idl | 53 |
1 files changed, 49 insertions, 4 deletions
diff --git a/librpc/idl/xattr.idl b/librpc/idl/xattr.idl index 4485caa48f..1dd98a9588 100644 --- a/librpc/idl/xattr.idl +++ b/librpc/idl/xattr.idl @@ -11,6 +11,9 @@ import "security.idl"; [ + uuid("12345778-1234-abcd-0001-00000002"), + version(0.0), + helper("../librpc/ndr/ndr_xattr.h"), pointer_default(unique) ] interface xattr @@ -22,6 +25,18 @@ interface xattr using a union we can cope with new version of this structure more easily */ + /* + * the FFFF level is never really used, + * it's used to pass the information from + * the old hex string attrib information + * we have a handwritten parser which converts + * the hex string to the xattr_DosInfoFFFFCompat strucure + */ + + typedef struct { + uint32 attrib; + } xattr_DosInfoFFFFCompat; + typedef struct { uint32 attrib; uint32 ea_size; @@ -51,16 +66,46 @@ interface xattr utf8string name; } xattr_DosInfo2Old; - typedef [switch_type(uint16)] union { - [case(1)] xattr_DosInfo1 info1; - [case(2)] xattr_DosInfo2Old oldinfo2; - } xattr_DosInfo; + typedef [bitmap32bit] bitmap { + XATTR_DOSINFO_ATTRIB = 0x00000001, + XATTR_DOSINFO_EA_SIZE = 0x00000002, + XATTR_DOSINFO_SIZE = 0x00000004, + XATTR_DOSINFO_ALLOC_SIZE = 0x00000008, + XATTR_DOSINFO_CREATE_TIME = 0x00000010, + XATTR_DOSINFO_CHANGE_TIME = 0x00000020 + } xattr_DosInfoValidFlags; + + typedef struct { + xattr_DosInfoValidFlags valid_flags; + uint32 attrib; + uint32 ea_size; + udlong size; + udlong alloc_size; + NTTIME create_time; + NTTIME change_time; + } xattr_DosInfo3; + + typedef [public,switch_type(uint16)] union { + [case(0xFFFF)] xattr_DosInfoFFFFCompat compatinfoFFFF; + [case(1)] xattr_DosInfo1 info1; + [case(2)] xattr_DosInfo2Old oldinfo2; + [case(3)] xattr_DosInfo3 info3; + } xattr_DosInfo; typedef [public] struct { uint16 version; [switch_is(version)] xattr_DosInfo info; } xattr_DosAttrib; + typedef [public,nopush,nopull,noprint] struct { + astring attrib_hex; + uint16 version; + [switch_is(version)] xattr_DosInfo info; + } xattr_DOSATTRIB; + + void xattr_parse_DOSATTRIB( + [in] xattr_DOSATTRIB x + ); /* we store DOS style extended attributes in a DosEAs xattr */ const char *XATTR_DOSEAS_NAME = "user.DosEAs"; |