xref: /reactos/base/services/nfsd/nfs41_const.h (revision c2c66aff)
1 /* NFSv4.1 client for Windows
2  * Copyright � 2012 The Regents of the University of Michigan
3  *
4  * Olga Kornievskaia <aglo@umich.edu>
5  * Casey Bodley <cbodley@umich.edu>
6  *
7  * This library is free software; you can redistribute it and/or modify it
8  * under the terms of the GNU Lesser General Public License as published by
9  * the Free Software Foundation; either version 2.1 of the License, or (at
10  * your option) any later version.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * without any warranty; without even the implied warranty of merchantability
14  * or fitness for a particular purpose.  See the GNU Lesser General Public
15  * License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public License
18  * along with this library; if not, write to the Free Software Foundation,
19  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA
20  */
21 
22 #ifndef __NFS41_NFS_CONST_H__
23 #define __NFS41_NFS_CONST_H__
24 
25 
26 /*
27  * Sizes
28  */
29 #define NFS4_FHSIZE             128
30 #define NFS4_VERIFIER_SIZE      8
31 #define NFS4_OPAQUE_LIMIT       1024
32 #define NFS4_SESSIONID_SIZE     16
33 #define NFS4_STATEID_OTHER      12
34 #define NFS4_EASIZE             256
35 #define NFS4_EANAME_SIZE        128
36 
37 
38 #define NFS41_MAX_FILEIO_SIZE   (1024 * 1024)
39 #define NFS41_MAX_SERVER_CACHE  1024
40 #define NFS41_MAX_RPC_REQS      128
41 
42 #define UPCALL_BUF_SIZE         2048
43 
44 /* MaximumComponentNameLength reported for FileFsAttributeInformation */
45 #define NFS41_MAX_COMPONENT_LEN     256
46 #define NFS41_MAX_PATH_LEN          1280
47 
48 #define NFS41_HOSTNAME_LEN          64
49 #define NFS41_ADDRS_PER_SERVER      4
50 
51 /* max length of ipv6 address       48
52  * sizeof(".255.255")              + 8 */
53 #define NFS41_UNIVERSAL_ADDR_LEN    56
54 
55 /* "udp" "tcp" "udp6" "tcp6" */
56 #define NFS41_NETWORK_ID_LEN        4
57 
58 /* msdn: There is a maximum of 31 reparse points (and
59  * therefore symbolic links) allowed in a particular path. */
60 #define NFS41_MAX_SYMLINK_DEPTH     31
61 
62 
63 /* 424 bytes: max rpc header for reply with data */
64 /* 32 bytes: max COMPOUND response */
65 /* 40 bytes: max SEQUENCE response */
66 /* 4 bytes: max PUTFH response */
67 /* 12 bytes: max READ response */
68 #define READ_OVERHEAD       512
69 
70 /* 840 bytes: max rpc header for call */
71 /* 32 bytes: max COMPOUND request */
72 /* 32 bytes: max SEQUENCE request */
73 /* 132 bytes: max PUTFH request */
74 /* 32 bytes: max WRITE request */
75 #define WRITE_OVERHEAD      1068
76 
77 
78 #define NFS41_RPC_PROGRAM   100003
79 #define NFS41_RPC_VERSION   4
80 #define NFS41_RPC_CBPROGRAM 0x2358
81 
82 
83 /*
84  * Error status
85  */
86 enum nfsstat4 {
87     NFS4_OK                     = 0,        /* everything is okay      */
88     NFS4ERR_PERM                = 1,        /* caller not privileged   */
89     NFS4ERR_NOENT               = 2,        /* no such file/directory  */
90     NFS4ERR_IO                  = 5,        /* hard I/O error          */
91     NFS4ERR_NXIO                = 6,        /* no such device          */
92     NFS4ERR_ACCESS              = 13,       /* access denied           */
93     NFS4ERR_EXIST               = 17,       /* file already exists     */
94     NFS4ERR_XDEV                = 18,       /* different filesystems   */
95 
96     NFS4ERR_NOTDIR              = 20,       /* should be a directory   */
97     NFS4ERR_ISDIR               = 21,       /* should not be directory */
98     NFS4ERR_INVAL               = 22,       /* invalid argument        */
99     NFS4ERR_FBIG                = 27,       /* file exceeds server max */
100     NFS4ERR_NOSPC               = 28,       /* no space on filesystem  */
101     NFS4ERR_ROFS                = 30,       /* read-only filesystem    */
102     NFS4ERR_MLINK               = 31,       /* too many hard links     */
103     NFS4ERR_NAMETOOLONG         = 63,       /* name exceeds server max */
104     NFS4ERR_NOTEMPTY            = 66,       /* directory not empty     */
105     NFS4ERR_DQUOT               = 69,       /* hard quota limit reached*/
106     NFS4ERR_STALE               = 70,       /* file no longer exists   */
107     NFS4ERR_BADHANDLE           = 10001,    /* Illegal filehandle      */
108     NFS4ERR_BAD_COOKIE          = 10003,    /* READDIR cookie is stale */
109     NFS4ERR_NOTSUPP             = 10004,    /* operation not supported */
110     NFS4ERR_TOOSMALL            = 10005,    /* response limit exceeded */
111     NFS4ERR_SERVERFAULT         = 10006,    /* undefined server error  */
112     NFS4ERR_BADTYPE             = 10007,    /* type invalid for CREATE */
113     NFS4ERR_DELAY               = 10008,    /* file "busy" - retry     */
114     NFS4ERR_SAME                = 10009,    /* nverify says attrs same */
115     NFS4ERR_DENIED              = 10010,    /* lock unavailable        */
116     NFS4ERR_EXPIRED             = 10011,    /* lock lease expired      */
117     NFS4ERR_LOCKED              = 10012,    /* I/O failed due to lock  */
118     NFS4ERR_GRACE               = 10013,    /* in grace period         */
119     NFS4ERR_FHEXPIRED           = 10014,    /* filehandle expired      */
120     NFS4ERR_SHARE_DENIED        = 10015,    /* share reserve denied    */
121     NFS4ERR_WRONGSEC            = 10016,    /* wrong security flavor   */
122     NFS4ERR_CLID_INUSE          = 10017,    /* clientid in use         */
123 
124     /* NFS4ERR_RESOURCE is not a valid error in NFSv4.1 */
125     NFS4ERR_RESOURCE            = 10018,    /* resource exhaustion     */
126     NFS4ERR_MOVED               = 10019,    /* filesystem relocated    */
127     NFS4ERR_NOFILEHANDLE        = 10020,    /* current FH is not set   */
128     NFS4ERR_MINOR_VERS_MISMATCH = 10021,    /* minor vers not supp     */
129     NFS4ERR_STALE_CLIENTID      = 10022,    /* server has rebooted     */
130     NFS4ERR_STALE_STATEID       = 10023,    /* server has rebooted     */
131     NFS4ERR_OLD_STATEID         = 10024,    /* state is out of sync    */
132     NFS4ERR_BAD_STATEID         = 10025,    /* incorrect stateid       */
133     NFS4ERR_BAD_SEQID           = 10026,    /* request is out of seq.  */
134     NFS4ERR_NOT_SAME            = 10027,    /* verify - attrs not same */
135     NFS4ERR_LOCK_RANGE          = 10028,    /* overlapping lock range  */
136     NFS4ERR_SYMLINK             = 10029,    /* should be file/directory*/
137     NFS4ERR_RESTOREFH           = 10030,    /* no saved filehandle     */
138     NFS4ERR_LEASE_MOVED         = 10031,    /* some filesystem moved   */
139     NFS4ERR_ATTRNOTSUPP         = 10032,    /* recommended attr not sup*/
140     NFS4ERR_NO_GRACE            = 10033,    /* reclaim outside of grace*/
141     NFS4ERR_RECLAIM_BAD         = 10034,    /* reclaim error at server */
142     NFS4ERR_RECLAIM_CONFLICT    = 10035,    /* conflict on reclaim     */
143     NFS4ERR_BADXDR              = 10036,    /* XDR decode failed       */
144     NFS4ERR_LOCKS_HELD          = 10037,    /* file locks held at CLOSE*/
145     NFS4ERR_OPENMODE            = 10038,    /* conflict in OPEN and I/O*/
146     NFS4ERR_BADOWNER            = 10039,    /* owner translation bad   */
147     NFS4ERR_BADCHAR             = 10040,    /* utf-8 char not supported*/
148     NFS4ERR_BADNAME             = 10041,    /* name not supported      */
149     NFS4ERR_BAD_RANGE           = 10042,    /* lock range not supported*/
150     NFS4ERR_LOCK_NOTSUPP        = 10043,    /* no atomic up/downgrade  */
151     NFS4ERR_OP_ILLEGAL          = 10044,    /* undefined operation     */
152     NFS4ERR_DEADLOCK            = 10045,    /* file locking deadlock   */
153     NFS4ERR_FILE_OPEN           = 10046,    /* open file blocks op.    */
154     NFS4ERR_ADMIN_REVOKED       = 10047,    /* lockowner state revoked */
155     NFS4ERR_CB_PATH_DOWN        = 10048,    /* callback path down      */
156 
157     /* NFSv4.1 errors start here. */
158     NFS4ERR_BADIOMODE           = 10049,
159     NFS4ERR_BADLAYOUT           = 10050,
160     NFS4ERR_BAD_SESSION_DIGEST  = 10051,
161     NFS4ERR_BADSESSION          = 10052,
162     NFS4ERR_BADSLOT             = 10053,
163     NFS4ERR_COMPLETE_ALREADY    = 10054,
164     NFS4ERR_CONN_NOT_BOUND_TO_SESSION = 10055,
165     NFS4ERR_DELEG_ALREADY_WANTED = 10056,
166     NFS4ERR_BACK_CHAN_BUSY      = 10057,    /*backchan reqs outstanding*/
167     NFS4ERR_LAYOUTTRYLATER      = 10058,
168     NFS4ERR_LAYOUTUNAVAILABLE   = 10059,
169     NFS4ERR_NOMATCHING_LAYOUT   = 10060,
170     NFS4ERR_RECALLCONFLICT      = 10061,
171     NFS4ERR_UNKNOWN_LAYOUTTYPE  = 10062,
172     NFS4ERR_SEQ_MISORDERED      = 10063,    /* unexpected seq.ID in req*/
173     NFS4ERR_SEQUENCE_POS        = 10064,    /* [CB_]SEQ. op not 1st op */
174     NFS4ERR_REQ_TOO_BIG         = 10065,    /* request too big         */
175     NFS4ERR_REP_TOO_BIG         = 10066,    /* reply too big           */
176     NFS4ERR_REP_TOO_BIG_TO_CACHE = 10067,   /* rep. not all cached     */
177     NFS4ERR_RETRY_UNCACHED_REP  = 10068,    /* retry & rep. uncached   */
178     NFS4ERR_UNSAFE_COMPOUND     = 10069,    /* retry/recovery too hard */
179     NFS4ERR_TOO_MANY_OPS        = 10070,    /*too many ops in [CB_]COMP*/
180     NFS4ERR_OP_NOT_IN_SESSION   = 10071,    /* op needs [CB_]SEQ. op   */
181     NFS4ERR_HASH_ALG_UNSUPP     = 10072,    /* hash alg. not supp.     */
182                                             /* Error 10073 is unused.  */
183     NFS4ERR_CLIENTID_BUSY       = 10074,    /* clientid has state      */
184     NFS4ERR_PNFS_IO_HOLE        = 10075,    /* IO to _SPARSE file hole */
185     NFS4ERR_SEQ_FALSE_RETRY     = 10076,    /* Retry != original req.  */
186     NFS4ERR_BAD_HIGH_SLOT       = 10077,    /* req has bad highest_slot*/
187     NFS4ERR_DEADSESSION         = 10078,    /*new req sent to dead sess*/
188     NFS4ERR_ENCR_ALG_UNSUPP     = 10079,    /* encr alg. not supp.     */
189     NFS4ERR_PNFS_NO_LAYOUT      = 10080,    /* I/O without a layout    */
190     NFS4ERR_NOT_ONLY_OP         = 10081,    /* addl ops not allowed    */
191     NFS4ERR_WRONG_CRED          = 10082,    /* op done by wrong cred   */
192     NFS4ERR_WRONG_TYPE          = 10083,    /* op on wrong type object */
193     NFS4ERR_DIRDELEG_UNAVAIL    = 10084,    /* delegation not avail.   */
194     NFS4ERR_REJECT_DELEG        = 10085,    /* cb rejected delegation  */
195     NFS4ERR_RETURNCONFLICT      = 10086,    /* layout get before return*/
196     NFS4ERR_DELEG_REVOKED       = 10087     /* deleg./layout revoked   */
197 };
198 
199 #define MAKE_WORD0(XXX) (1 << XXX)
200 #define MAKE_WORD1(XXX) (1 << (XXX-32))
201 #define MAKE_WORD2(XXX) (1 << (XXX-64))
202 
203 enum {
204 /*
205  * Mandatory Attributes
206  */
207     FATTR4_WORD0_SUPPORTED_ATTRS    = MAKE_WORD0(0),
208     FATTR4_WORD0_TYPE               = MAKE_WORD0(1),
209     FATTR4_WORD0_FH_EXPIRE_TYPE     = MAKE_WORD0(2),
210     FATTR4_WORD0_CHANGE             = MAKE_WORD0(3),
211     FATTR4_WORD0_SIZE               = MAKE_WORD0(4),
212     FATTR4_WORD0_LINK_SUPPORT       = MAKE_WORD0(5),
213     FATTR4_WORD0_SYMLINK_SUPPORT    = MAKE_WORD0(6),
214     FATTR4_WORD0_NAMED_ATTR         = MAKE_WORD0(7),
215     FATTR4_WORD0_FSID               = MAKE_WORD0(8),
216     FATTR4_WORD0_UNIQUE_HANDLES     = MAKE_WORD0(9),
217     FATTR4_WORD0_LEASE_TIME         = MAKE_WORD0(10),
218     FATTR4_WORD0_RDATTR_ERROR       = MAKE_WORD0(11),
219     FATTR4_WORD0_FILEHANDLE         = MAKE_WORD0(19),
220     FATTR4_WORD2_SUPPATTR_EXCLCREAT = MAKE_WORD2(75),
221 
222 /*
223  * Recommended Attributes
224  */
225     FATTR4_WORD0_ACL                = MAKE_WORD0(12),
226     FATTR4_WORD0_ACLSUPPORT         = MAKE_WORD0(13),
227     FATTR4_WORD0_ARCHIVE            = MAKE_WORD0(14),
228     FATTR4_WORD0_CANSETTIME         = MAKE_WORD0(15),
229     FATTR4_WORD0_CASE_INSENSITIVE   = MAKE_WORD0(16),
230     FATTR4_WORD0_CASE_PRESERVING    = MAKE_WORD0(17),
231     FATTR4_WORD0_CHOWN_RESTRICTED   = MAKE_WORD0(18),
232     FATTR4_WORD0_FILEID             = MAKE_WORD0(20),
233     FATTR4_WORD0_FILES_AVAIL        = MAKE_WORD0(21),
234     FATTR4_WORD0_FILES_FREE         = MAKE_WORD0(22),
235     FATTR4_WORD0_FILES_TOTAL        = MAKE_WORD0(23),
236     FATTR4_WORD0_FS_LOCATIONS       = MAKE_WORD0(24),
237     FATTR4_WORD0_HIDDEN             = MAKE_WORD0(25),
238     FATTR4_WORD0_HOMOGENEOUS        = MAKE_WORD0(26),
239     FATTR4_WORD0_MAXFILESIZE        = MAKE_WORD0(27),
240     FATTR4_WORD0_MAXLINK            = MAKE_WORD0(28),
241     FATTR4_WORD0_MAXNAME            = MAKE_WORD0(29),
242     FATTR4_WORD0_MAXREAD            = MAKE_WORD0(30),
243     FATTR4_WORD0_MAXWRITE           = MAKE_WORD0(31),
244     FATTR4_WORD1_MIMETYPE           = MAKE_WORD1(32),
245     FATTR4_WORD1_MODE               = MAKE_WORD1(33),
246     FATTR4_WORD1_NO_TRUNC           = MAKE_WORD1(34),
247     FATTR4_WORD1_NUMLINKS           = MAKE_WORD1(35),
248     FATTR4_WORD1_OWNER              = MAKE_WORD1(36),
249     FATTR4_WORD1_OWNER_GROUP        = MAKE_WORD1(37),
250     FATTR4_WORD1_QUOTA_AVAIL_HARD   = MAKE_WORD1(38),
251     FATTR4_WORD1_QUOTA_AVAIL_SOFT   = MAKE_WORD1(39),
252     FATTR4_WORD1_QUOTA_USED         = MAKE_WORD1(40),
253     FATTR4_WORD1_RAWDEV             = MAKE_WORD1(41),
254     FATTR4_WORD1_SPACE_AVAIL        = MAKE_WORD1(42),
255     FATTR4_WORD1_SPACE_FREE         = MAKE_WORD1(43),
256     FATTR4_WORD1_SPACE_TOTAL        = MAKE_WORD1(44),
257     FATTR4_WORD1_SPACE_USED         = MAKE_WORD1(45),
258     FATTR4_WORD1_SYSTEM             = MAKE_WORD1(46),
259     FATTR4_WORD1_TIME_ACCESS        = MAKE_WORD1(47),
260     FATTR4_WORD1_TIME_ACCESS_SET    = MAKE_WORD1(48),
261     FATTR4_WORD1_TIME_BACKUP        = MAKE_WORD1(49),
262     FATTR4_WORD1_TIME_CREATE        = MAKE_WORD1(50),
263     FATTR4_WORD1_TIME_DELTA         = MAKE_WORD1(51),
264     FATTR4_WORD1_TIME_METADATA      = MAKE_WORD1(52),
265     FATTR4_WORD1_TIME_MODIFY        = MAKE_WORD1(53),
266     FATTR4_WORD1_TIME_MODIFY_SET    = MAKE_WORD1(54),
267     FATTR4_WORD1_MOUNTED_ON_FILEID  = MAKE_WORD1(55),
268     FATTR4_WORD1_DIR_NOTIF_DELAY    = MAKE_WORD1(56),
269     FATTR4_WORD1_DIRENT_NOTIF_DELAY = MAKE_WORD1(57),
270     FATTR4_WORD1_DACL               = MAKE_WORD1(58),
271     FATTR4_WORD1_SACL               = MAKE_WORD1(59),
272     FATTR4_WORD1_CHANGE_POLICY      = MAKE_WORD1(60),
273     FATTR4_WORD1_FS_STATUS          = MAKE_WORD1(61),
274     FATTR4_WORD1_FS_LAYOUT_TYPE     = MAKE_WORD1(62),
275     FATTR4_WORD1_LAYOUT_HINT        = MAKE_WORD1(63),
276     FATTR4_WORD2_LAYOUT_TYPE        = MAKE_WORD2(64),
277     FATTR4_WORD2_LAYOUT_BLKSIZE     = MAKE_WORD2(65),
278     FATTR4_WORD2_LAYOUT_ALIGNMENT   = MAKE_WORD2(66),
279     FATTR4_WORD2_FS_LOCATIONS_INFO  = MAKE_WORD2(67),
280     FATTR4_WORD2_MDSTHRESHOLD       = MAKE_WORD2(68),
281     FATTR4_WORD2_RETENTION_GET      = MAKE_WORD2(69),
282     FATTR4_WORD2_RETENTION_SET      = MAKE_WORD2(70),
283     FATTR4_WORD2_RETENTEVT_GET      = MAKE_WORD2(71),
284     FATTR4_WORD2_RETENTEVT_SET      = MAKE_WORD2(72),
285     FATTR4_WORD2_RETENTION_HOLD     = MAKE_WORD2(73),
286     FATTR4_WORD2_MODE_SET_MASKED    = MAKE_WORD2(74),
287     FATTR4_WORD2_FS_CHARSET_CAP     = MAKE_WORD2(76),
288 };
289 
290 /*
291  * File types
292  */
293 enum nfs_ftype4 {
294     NF4REG          = 1,    /* Regular File */
295     NF4DIR          = 2,    /* Directory */
296     NF4BLK          = 3,    /* Special File - block device */
297     NF4CHR          = 4,    /* Special File - character device */
298     NF4LNK          = 5,    /* Symbolic Link */
299     NF4SOCK         = 6,    /* Special File - socket */
300     NF4FIFO         = 7,    /* Special File - fifo */
301     NF4ATTRDIR      = 8,    /* Attribute Directory */
302     NF4NAMEDATTR    = 9,    /* Named Attribute */
303 
304     NFS_FTYPE_MASK  = 0xF
305 };
306 
307 #define CREATE_SESSION4_FLAG_PERSIST        0x00000001
308 #define CREATE_SESSION4_FLAG_CONN_BACK_CHAN 0x00000002
309 #define CREATE_SESSION4_FLAG_CONN_RDMA      0x00000004
310 
311 /* ACLS aclsupport attribute values */
312 #define ACL4_SUPPORT_ALLOW_ACL  0x00000001
313 #define ACL4_SUPPORT_DENY_ACL   0x00000002
314 #define ACL4_SUPPORT_AUDIT_ACL  0x00000004
315 #define ACL4_SUPPORT_ALARM_ACL  0x00000008
316 
317 /* ACLS acetype4 field constants */
318 #define ACE4_ACCESS_ALLOWED_ACE_TYPE      0x00000000
319 #define ACE4_ACCESS_DENIED_ACE_TYPE       0x00000001
320 #define ACE4_SYSTEM_AUDIT_ACE_TYPE        0x00000002
321 #define ACE4_SYSTEM_ALARM_ACE_TYPE        0x00000003
322 
323 /* ACLS acemask4 field constants */
324 #define ACE4_READ_DATA            0x00000001
325 #define ACE4_LIST_DIRECTORY       0x00000001
326 #define ACE4_WRITE_DATA           0x00000002
327 #define ACE4_ADD_FILE             0x00000002
328 #define ACE4_APPEND_DATA          0x00000004
329 #define ACE4_ADD_SUBDIRECTORY     0x00000004
330 #define ACE4_READ_NAMED_ATTRS     0x00000008
331 #define ACE4_WRITE_NAMED_ATTRS    0x00000010
332 #define ACE4_EXECUTE              0x00000020
333 #define ACE4_DELETE_CHILD         0x00000040
334 #define ACE4_READ_ATTRIBUTES      0x00000080
335 #define ACE4_WRITE_ATTRIBUTES     0x00000100
336 #define ACE4_WRITE_RETENTION      0x00000200
337 #define ACE4_WRITE_RETENTION_HOLD 0x00000400
338 
339 #define ACE4_DELETE               0x00010000
340 #define ACE4_READ_ACL             0x00020000
341 #define ACE4_WRITE_ACL            0x00040000
342 #define ACE4_WRITE_OWNER          0x00080000
343 #define ACE4_SYNCHRONIZE          0x00100000
344 
345 #define ACE4_ALL_FILE ACE4_READ_DATA|ACE4_WRITE_DATA|ACE4_APPEND_DATA| \
346         ACE4_READ_NAMED_ATTRS|ACE4_WRITE_NAMED_ATTRS|ACE4_EXECUTE| \
347         ACE4_READ_ATTRIBUTES|ACE4_WRITE_ATTRIBUTES| \
348         ACE4_DELETE|ACE4_READ_ACL|ACE4_WRITE_ACL|ACE4_WRITE_OWNER| \
349         ACE4_SYNCHRONIZE
350 #define ACE4_ALL_DIR ACE4_READ_DATA|ACE4_WRITE_DATA|ACE4_APPEND_DATA| \
351         ACE4_READ_NAMED_ATTRS|ACE4_WRITE_NAMED_ATTRS|ACE4_EXECUTE| \
352         ACE4_DELETE_CHILD|ACE4_READ_ATTRIBUTES|ACE4_WRITE_ATTRIBUTES| \
353         ACE4_DELETE|ACE4_READ_ACL|ACE4_WRITE_ACL|ACE4_WRITE_OWNER| \
354         ACE4_SYNCHRONIZE
355 
356 #define ACE4_GENERIC_READ ACE4_READ_DATA|ACE4_READ_NAMED_ATTRS| \
357         ACE4_READ_ATTRIBUTES|ACE4_READ_ACL|ACE4_SYNCHRONIZE
358 #define ACE4_GENERIC_WRITE ACE4_WRITE_DATA|ACE4_WRITE_NAMED_ATTRS| \
359         ACE4_WRITE_ATTRIBUTES|ACE4_READ_ACL|ACE4_SYNCHRONIZE
360 #define ACE4_GENERIC_EXECUTE ACE4_EXECUTE|ACE4_READ_ATTRIBUTES| \
361         ACE4_READ_ACL|ACE4_SYNCHRONIZE
362 
363 
364 
365 #define ACE4_FILE_ALL_ACCESS ACE4_READ_DATA|ACE4_LIST_DIRECTORY| \
366         ACE4_WRITE_DATA|ACE4_ADD_FILE|ACE4_APPEND_DATA|ACE4_ADD_SUBDIRECTORY| \
367         ACE4_READ_NAMED_ATTRS|ACE4_WRITE_NAMED_ATTRS|ACE4_EXECUTE| \
368         ACE4_READ_ATTRIBUTES|ACE4_WRITE_ATTRIBUTES
369 
370 /* ACLS aceflag4 field constants */
371 #define ACE4_FILE_INHERIT_ACE             0x00000001
372 #define ACE4_DIRECTORY_INHERIT_ACE        0x00000002
373 #define ACE4_NO_PROPAGATE_INHERIT_ACE     0x00000004
374 #define ACE4_INHERIT_ONLY_ACE             0x00000008
375 #define ACE4_SUCCESSFUL_ACCESS_ACE_FLAG   0x00000010
376 #define ACE4_FAILED_ACCESS_ACE_FLAG       0x00000020
377 #define ACE4_IDENTIFIER_GROUP             0x00000040
378 #define ACE4_INHERITED_ACE                0x00000080
379 
380 /* ACLS well-defined WHOs */
381 #define ACE4_OWNER "OWNER@"
382 #define ACE4_GROUP "GROUP@"
383 #define ACE4_EVERYONE "EVERYONE@"
384 #define ACE4_INTERACTIVE "INTERACTIVE@"
385 #define ACE4_NETWORK "NETWORK@"
386 #define ACE4_DIALUP "DIALUP@"
387 #define ACE4_BATCH "BATCH@"
388 #define ACE4_ANONYMOUS "ANONYMOUS@"
389 #define ACE4_AUTHENTICATED "AUTHENTICATED@"
390 #define ACE4_SERVICE "SERVICE@"
391 #define ACE4_NOBODY "nobody"
392 
393 /* ACLE nfsacl41 aclflag4 constants */
394 #define ACL4_AUTO_INHERIT         0x00000001
395 #define ACL4_PROTECTED            0x00000002
396 #define ACL4_DEFAULTED            0x00000004
397 
398 
399 #endif /* !__NFS41_NFS_CONST_H__ */
400