2006-10-21 13:46:12 +04:00
#include "idl_types.h"
/*
NFS4 ACL format on disk
see http://www.suse.de/~agruen/nfs4acl/
*/
2006-11-07 01:54:49 +03:00
import "misc.idl", "security.idl";
2017-08-15 09:17:22 +03:00
[
2006-10-21 13:46:12 +04:00
version(1.0),
2006-11-07 01:54:49 +03:00
pointer_default(unique)
2006-10-21 13:46:12 +04:00
]
2016-09-13 09:07:21 +03:00
interface nfs4acl_interface
2006-10-21 13:46:12 +04:00
{
2017-11-02 14:17:48 +03:00
const char *NFS4ACL_NDR_XATTR_NAME = "security.nfs4acl_ndr";
2006-10-21 13:46:12 +04:00
2013-04-14 13:51:42 +04:00
const char *NFS4ACL_XATTR_OWNER_WHO = "OWNER@";
const char *NFS4ACL_XATTR_GROUP_WHO = "GROUP@";
const char *NFS4ACL_XATTR_EVERYONE_WHO = "EVERYONE@";
2017-10-19 15:22:00 +03:00
const uint8 ACL4_XATTR_VERSION_40 = 0x00;
const uint8 ACL4_XATTR_VERSION_41 = 0x01;
2017-11-02 14:45:48 +03:00
const uint8 ACL4_XATTR_VERSION_DEFAULT = ACL4_XATTR_VERSION_41;
2017-10-19 15:22:00 +03:00
2017-10-19 23:44:38 +03:00
const uint8 ACL4_AUTO_INHERIT = 0x01;
const uint8 ACL4_PROTECTED = 0x02;
const uint8 ACL4_DEFAULTED = 0x04;
const uint8 ACL4_WRITE_THROUGH = 0x40;
2006-10-21 13:46:12 +04:00
/* 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;
}