1 /*
2  * Ext4's on-disk acl format.  From linux/fs/ext4/acl.h
3  */
4 
5 #define EXT4_ACL_VERSION        0x0001
6 
7 /* 23.2.5 acl_tag_t values */
8 
9 #define ACL_UNDEFINED_TAG	(0x00)
10 #define ACL_USER_OBJ		(0x01)
11 #define ACL_USER		(0x02)
12 #define ACL_GROUP_OBJ		(0x04)
13 #define ACL_GROUP		(0x08)
14 #define ACL_MASK		(0x10)
15 #define ACL_OTHER		(0x20)
16 
17 /* 23.3.6 acl_type_t values */
18 
19 #define ACL_TYPE_ACCESS		(0x8000)
20 #define ACL_TYPE_DEFAULT	(0x4000)
21 
22 /* 23.2.7 ACL qualifier constants */
23 
24 #define ACL_UNDEFINED_ID	((id_t)-1)
25 
26 typedef struct {
27         __le16          e_tag;
28         __le16          e_perm;
29         __le32          e_id;
30  } ext4_acl_entry;
31 
32 typedef struct {
33         __le16          e_tag;
34         __le16          e_perm;
35 } ext4_acl_entry_short;
36 
37 typedef struct {
38          __le32          a_version;
39 } ext4_acl_header;
40 
41 
42 /* Supported ACL a_version fields */
43  #define POSIX_ACL_XATTR_VERSION 0x0002
44 
45 typedef struct {
46         __le16                  e_tag;
47         __le16                  e_perm;
48         __le32                  e_id;
49 } posix_acl_xattr_entry;
50 
51 typedef struct {
52         __le32                  a_version;
53 #if __GNUC_PREREQ (4, 8)
54 #pragma GCC diagnostic push
55 #pragma GCC diagnostic ignored "-Wpedantic"
56 #endif
57         posix_acl_xattr_entry   a_entries[0];
58 #if __GNUC_PREREQ (4, 8)
59 #pragma GCC diagnostic pop
60 #endif
61 } posix_acl_xattr_header;
62 
63