From 515c92a759ad30059f65d3e65dc9f642dc03852a Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 21 Oct 2006 09:46:12 +0000 Subject: r19441: work in progress support for NFS4 ACLs in Samba4 on Linux. Still work to do, particularly with getting the detailed bit mappings right, and on sid mapping. Does not pass RAW-ACLS yet (This used to be commit b92553481b534d0ef5277dbfe8c0d64a03f819eb) --- source4/librpc/config.mk | 9 ++++++++- source4/librpc/idl/nfs4acl.idl | 41 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 source4/librpc/idl/nfs4acl.idl (limited to 'source4/librpc') diff --git a/source4/librpc/config.mk b/source4/librpc/config.mk index b1c45e47da..cf58e40c26 100644 --- a/source4/librpc/config.mk +++ b/source4/librpc/config.mk @@ -144,6 +144,13 @@ OBJ_FILES = gen_ndr/ndr_samr.o PUBLIC_HEADERS = gen_ndr/samr.h PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_LSA NDR_SECURITY +[LIBRARY::NDR_NFS4ACL] +VERSION = 0.0.1 +SO_VERSION = 0 +OBJ_FILES = gen_ndr/ndr_nfs4acl.o +PUBLIC_HEADERS = gen_ndr/nfs4acl.h +PUBLIC_DEPENDENCIES = LIBNDR NDR_MISC NDR_SECURITY + [LIBRARY::NDR_SPOOLSS] VERSION = 0.0.1 SO_VERSION = 0 @@ -370,7 +377,7 @@ PUBLIC_DEPENDENCIES = \ NDR_NETLOGON NDR_TRKWKS NDR_KEYSVC NDR_KRB5PAC NDR_XATTR NDR_SCHANNEL \ NDR_ROT NDR_DRSBLOBS NDR_SVCCTL NDR_NBT NDR_WINSREPL NDR_SECURITY \ NDR_INITSHUTDOWN NDR_DNSSERVER NDR_WINSTATION NDR_IRPC NDR_DCOM NDR_OPENDB \ - NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI + NDR_SASL_HELPERS NDR_NOTIFY NDR_WINBIND NDR_FRSRPC NDR_FRSAPI NDR_NFS4ACL [LIBRARY::RPC_NDR_ROT] VERSION = 0.0.1 diff --git a/source4/librpc/idl/nfs4acl.idl b/source4/librpc/idl/nfs4acl.idl new file mode 100644 index 0000000000..dc136150f4 --- /dev/null +++ b/source4/librpc/idl/nfs4acl.idl @@ -0,0 +1,41 @@ +#include "idl_types.h" + +/* + NFS4 ACL format on disk + see http://www.suse.de/~agruen/nfs4acl/ +*/ + +[ uuid("18763978-8625-abc3-54ca-9892bacdf321"), + version(1.0), + pointer_default(unique), + depends(misc,security) +] +interface nfs4acl +{ + const char *NFS4ACL_XATTR_NAME = "system.nfs4acl"; + + /* these structures use the same bit values and other constants as + in security.idl */ + typedef [flag(NDR_BIG_ENDIAN)] struct { + uint16 e_type; + uint16 e_flags; + uint32 e_mask; + uint32 e_id; + utf8string e_who; + [flag(NDR_ALIGN4)] DATA_BLOB _pad; + } nfs4ace; + + typedef [public,flag(NDR_BIG_ENDIAN)] struct { + uint8 a_version; + uint8 a_flags; + uint16 a_count; + uint32 a_owner_mask; + uint32 a_group_mask; + uint32 a_other_mask; + nfs4ace ace[a_count]; + } nfs4acl; + + NTSTATUS nfs4acl_test( + [in] nfs4acl acl + ); +} -- cgit