summaryrefslogtreecommitdiff
path: root/librpc/idl/nfs4acl.idl
blob: aeab0a0d10812f434769da5baa64c93391e42471 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
#include "idl_types.h"

/*
  NFS4 ACL format on disk
  see http://www.suse.de/~agruen/nfs4acl/
*/

import "misc.idl", "security.idl";

[ uuid("18763978-8625-abc3-54ca-9892bacdf321"),
  version(1.0),
  pointer_default(unique)
]
interface nfs4acl
{
	const char *NFS4ACL_XATTR_NAME = "system.nfs4acl";

	const char *NFS4ACL_XATTR_OWNER_WHO	 = "OWNER@";
	const char *NFS4ACL_XATTR_GROUP_WHO	 = "GROUP@";
	const char *NFS4ACL_XATTR_EVERYONE_WHO   = "EVERYONE@";

	/* 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
		);
}