#include "idl_types.h" /* IDL structures for xattrs */ [ pointer_default(unique) ] interface xattr { /* xattrs for file systems that don't have any */ typedef [public] struct { utf8string name; DATA_BLOB value; } tdb_xattr; typedef [public] struct { uint32 num_xattrs; tdb_xattr xattrs[num_xattrs]; } tdb_xattrs; /* 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; }