From 0c840bd8d2f650e805bd7d03c2b3fe530b431a4f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 15 Oct 2008 15:57:39 +0200 Subject: Share xattr implementation. --- source4/librpc/idl/xattr.idl | 134 ------------------------------------------- 1 file changed, 134 deletions(-) delete mode 100644 source4/librpc/idl/xattr.idl (limited to 'source4/librpc') diff --git a/source4/librpc/idl/xattr.idl b/source4/librpc/idl/xattr.idl deleted file mode 100644 index ba0123aed0..0000000000 --- a/source4/librpc/idl/xattr.idl +++ /dev/null @@ -1,134 +0,0 @@ -#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 -*/ - -import "security.idl"; - -[ - pointer_default(unique) -] -interface xattr -{ - const char *XATTR_DOSATTRIB_NAME = "user.DosAttrib"; - const int 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; - udlong size; - udlong alloc_size; - NTTIME create_time; - NTTIME change_time; - } xattr_DosInfo1; - -/* - We use xattrDosInfo1 again when we store values. - Because the sticky write time is now stored in the opendb - and xattr_DosInfo2Old is only present to parse existing - values from disk. - - const int XATTR_ATTRIB_FLAG_STICKY_WRITE_TIME = 0x1; -*/ - typedef struct { - uint32 flags; - uint32 attrib; - uint32 ea_size; - udlong size; - udlong alloc_size; - NTTIME create_time; - NTTIME change_time; - NTTIME write_time; /* only used when sticky write time is set */ - utf8string name; - } xattr_DosInfo2Old; - - typedef [switch_type(uint16)] union { - [case(1)] xattr_DosInfo1 info1; - [case(2)] xattr_DosInfo2Old oldinfo2; - } 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 char *XATTR_DOSEAS_NAME = "user.DosEAs"; - - typedef struct { - utf8string name; - DATA_BLOB value; - } xattr_EA; - - typedef [public] struct { - uint16 num_eas; - [size_is(num_eas)] xattr_EA *eas; - } xattr_DosEAs; - - /* we store stream information in this xattr structure. Then - the streams themselves are stored in - user.DosStream.STREAMNAME or in external files, according - to the flags */ - const char *XATTR_DOSSTREAMS_NAME = "user.DosStreams"; - - const int XATTR_STREAM_FLAG_INTERNAL = 0x00000001; - - /* stream data is stored in attributes with the given prefix */ - const char *XATTR_DOSSTREAM_PREFIX = "user.DosStream."; - - const int XATTR_MAX_STREAM_SIZE = 0x4000; - const int XATTR_MAX_STREAM_SIZE_TDB = 0x100000; - - typedef struct { - uint32 flags; - udlong size; - udlong alloc_size; - utf8string name; - } xattr_DosStream; - - typedef [public] struct { - uint32 num_streams; - [size_is(num_streams)] xattr_DosStream *streams; - } xattr_DosStreams; - - - /* we store the NT ACL a NTACL xattr. It is versioned so we - can later add other acl attribs (such as posix acl mapping) - - we put this xattr in the security namespace to ensure that - only trusted users can write to the ACL - - stored in "security.NTACL" - - Version 1. raw SD stored as Samba4 does it. - Version 2. raw SD + last changed timestamp so we - can discard if this doesn't match the POSIX st_ctime. - */ - - const char *XATTR_NTACL_NAME = "security.NTACL"; - - typedef [public] struct { - security_descriptor *sd; - NTTIME last_changed; - } security_descriptor_timestamp; - - typedef [switch_type(uint16)] union { - [case(1)] security_descriptor *sd; - [case(2)] security_descriptor_timestamp *sd_ts; - } xattr_NTACL_Info; - - typedef [public] struct { - uint16 version; - [switch_is(version)] xattr_NTACL_Info info; - } xattr_NTACL; -} -- cgit