summaryrefslogtreecommitdiff
path: root/librpc/idl/xattr.idl
diff options
context:
space:
mode:
authorStefan (metze) Metzmacher <metze@samba.org>2009-10-28 15:42:47 -0700
committerJeremy Allison <jra@samba.org>2009-10-28 15:42:47 -0700
commit25f96a4058c731e302e2d45bd670e598a7e591b7 (patch)
treed90cd270a311dafa4675750ae8eb29e55877ad11 /librpc/idl/xattr.idl
parentc27194a7e08b51a36a3214a84dcd3d6a12c7f891 (diff)
downloadsamba-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/xattr.idl')
-rw-r--r--librpc/idl/xattr.idl53
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";