xref: /titanic_52/usr/src/head/rpcsvc/nfs_acl.x (revision 7c478bd95313f5f23a4c958a745db2134aa03244)
1*7c478bd9Sstevel@tonic-gate /*
2*7c478bd9Sstevel@tonic-gate  * CDDL HEADER START
3*7c478bd9Sstevel@tonic-gate  *
4*7c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*7c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
6*7c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
7*7c478bd9Sstevel@tonic-gate  * with the License.
8*7c478bd9Sstevel@tonic-gate  *
9*7c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10*7c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
11*7c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
12*7c478bd9Sstevel@tonic-gate  * and limitations under the License.
13*7c478bd9Sstevel@tonic-gate  *
14*7c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
15*7c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16*7c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
17*7c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
18*7c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
19*7c478bd9Sstevel@tonic-gate  *
20*7c478bd9Sstevel@tonic-gate  * CDDL HEADER END
21*7c478bd9Sstevel@tonic-gate  */
22*7c478bd9Sstevel@tonic-gate /*
23*7c478bd9Sstevel@tonic-gate  *	Copyright 1994,2001-2003 Sun Microsystems, Inc.
24*7c478bd9Sstevel@tonic-gate  *	All rights reserved.
25*7c478bd9Sstevel@tonic-gate  *	Use is subject to license terms.
26*7c478bd9Sstevel@tonic-gate  */
27*7c478bd9Sstevel@tonic-gate 
28*7c478bd9Sstevel@tonic-gate /*
29*7c478bd9Sstevel@tonic-gate  * ident	"%Z%%M%	%I%	%E% SMI"
30*7c478bd9Sstevel@tonic-gate  */
31*7c478bd9Sstevel@tonic-gate 
32*7c478bd9Sstevel@tonic-gate const NFS_ACL_MAX_ENTRIES = 1024;
33*7c478bd9Sstevel@tonic-gate 
34*7c478bd9Sstevel@tonic-gate typedef int uid;
35*7c478bd9Sstevel@tonic-gate typedef unsigned short o_mode;
36*7c478bd9Sstevel@tonic-gate 
37*7c478bd9Sstevel@tonic-gate /*
38*7c478bd9Sstevel@tonic-gate  * This is the format of an ACL which is passed over the network.
39*7c478bd9Sstevel@tonic-gate  */
40*7c478bd9Sstevel@tonic-gate struct aclent {
41*7c478bd9Sstevel@tonic-gate 	int type;
42*7c478bd9Sstevel@tonic-gate 	uid id;
43*7c478bd9Sstevel@tonic-gate 	o_mode perm;
44*7c478bd9Sstevel@tonic-gate };
45*7c478bd9Sstevel@tonic-gate 
46*7c478bd9Sstevel@tonic-gate /*
47*7c478bd9Sstevel@tonic-gate  * The values for the type element of the aclent structure.
48*7c478bd9Sstevel@tonic-gate  */
49*7c478bd9Sstevel@tonic-gate const NA_USER_OBJ = 0x1;	/* object owner */
50*7c478bd9Sstevel@tonic-gate const NA_USER = 0x2;		/* additional users */
51*7c478bd9Sstevel@tonic-gate const NA_GROUP_OBJ = 0x4;	/* owning group of the object */
52*7c478bd9Sstevel@tonic-gate const NA_GROUP = 0x8;		/* additional groups */
53*7c478bd9Sstevel@tonic-gate const NA_CLASS_OBJ = 0x10;	/* file group class and mask entry */
54*7c478bd9Sstevel@tonic-gate const NA_OTHER_OBJ = 0x20;	/* other entry for the object */
55*7c478bd9Sstevel@tonic-gate const NA_ACL_DEFAULT = 0x1000;	/* default flag */
56*7c478bd9Sstevel@tonic-gate 
57*7c478bd9Sstevel@tonic-gate /*
58*7c478bd9Sstevel@tonic-gate  * The bit field values for the perm element of the aclent
59*7c478bd9Sstevel@tonic-gate  * structure.  The three values can be combined to form any
60*7c478bd9Sstevel@tonic-gate  * of the 8 combinations.
61*7c478bd9Sstevel@tonic-gate  */
62*7c478bd9Sstevel@tonic-gate const NA_READ = 0x4;		/* read permission */
63*7c478bd9Sstevel@tonic-gate const NA_WRITE = 0x2;		/* write permission */
64*7c478bd9Sstevel@tonic-gate const NA_EXEC = 0x1;		/* exec permission */
65*7c478bd9Sstevel@tonic-gate 
66*7c478bd9Sstevel@tonic-gate /*
67*7c478bd9Sstevel@tonic-gate  * This is the structure which contains the ACL entries for a
68*7c478bd9Sstevel@tonic-gate  * particular entity.  It contains the ACL entries which apply
69*7c478bd9Sstevel@tonic-gate  * to this object plus any default ACL entries which are
70*7c478bd9Sstevel@tonic-gate  * inherited by its children.
71*7c478bd9Sstevel@tonic-gate  *
72*7c478bd9Sstevel@tonic-gate  * The values for the mask field are defined below.
73*7c478bd9Sstevel@tonic-gate  */
74*7c478bd9Sstevel@tonic-gate struct secattr {
75*7c478bd9Sstevel@tonic-gate 	u_int mask;
76*7c478bd9Sstevel@tonic-gate 	int aclcnt;
77*7c478bd9Sstevel@tonic-gate 	aclent aclent<NFS_ACL_MAX_ENTRIES>;
78*7c478bd9Sstevel@tonic-gate 	int dfaclcnt;
79*7c478bd9Sstevel@tonic-gate 	aclent dfaclent<NFS_ACL_MAX_ENTRIES>;
80*7c478bd9Sstevel@tonic-gate };
81*7c478bd9Sstevel@tonic-gate 
82*7c478bd9Sstevel@tonic-gate /*
83*7c478bd9Sstevel@tonic-gate  * The values for the mask element of the secattr struct as well
84*7c478bd9Sstevel@tonic-gate  * as for the mask element in the arguments in the GETACL2 and
85*7c478bd9Sstevel@tonic-gate  * GETACL3 procedures.
86*7c478bd9Sstevel@tonic-gate  */
87*7c478bd9Sstevel@tonic-gate const NA_ACL = 0x1;		/* aclent contains a valid list */
88*7c478bd9Sstevel@tonic-gate const NA_ACLCNT = 0x2;		/* the number of entries in the aclent list */
89*7c478bd9Sstevel@tonic-gate const NA_DFACL = 0x4;		/* dfaclent contains a valid list */
90*7c478bd9Sstevel@tonic-gate const NA_DFACLCNT = 0x8;	/* the number of entries in the dfaclent list */
91*7c478bd9Sstevel@tonic-gate 
92*7c478bd9Sstevel@tonic-gate /*
93*7c478bd9Sstevel@tonic-gate  * This the definition for the GETACL procedure which applies to
94*7c478bd9Sstevel@tonic-gate  * NFS Version 2.
95*7c478bd9Sstevel@tonic-gate  */
96*7c478bd9Sstevel@tonic-gate struct GETACL2args {
97*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
98*7c478bd9Sstevel@tonic-gate 	u_int mask;
99*7c478bd9Sstevel@tonic-gate };
100*7c478bd9Sstevel@tonic-gate 
101*7c478bd9Sstevel@tonic-gate struct GETACL2resok {
102*7c478bd9Sstevel@tonic-gate 	struct nfsfattr attr;
103*7c478bd9Sstevel@tonic-gate 	secattr acl;
104*7c478bd9Sstevel@tonic-gate };
105*7c478bd9Sstevel@tonic-gate 
106*7c478bd9Sstevel@tonic-gate union GETACL2res switch (enum nfsstat status) {
107*7c478bd9Sstevel@tonic-gate case ACL2_OK:
108*7c478bd9Sstevel@tonic-gate 	GETACL2resok resok;
109*7c478bd9Sstevel@tonic-gate default:
110*7c478bd9Sstevel@tonic-gate 	void;
111*7c478bd9Sstevel@tonic-gate };
112*7c478bd9Sstevel@tonic-gate 
113*7c478bd9Sstevel@tonic-gate /*
114*7c478bd9Sstevel@tonic-gate  * This is the definition for the SETACL procedure which applies
115*7c478bd9Sstevel@tonic-gate  * NFS Version 2.
116*7c478bd9Sstevel@tonic-gate  */
117*7c478bd9Sstevel@tonic-gate struct SETACL2args {
118*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
119*7c478bd9Sstevel@tonic-gate 	secattr acl;
120*7c478bd9Sstevel@tonic-gate };
121*7c478bd9Sstevel@tonic-gate 
122*7c478bd9Sstevel@tonic-gate struct SETACL2resok {
123*7c478bd9Sstevel@tonic-gate 	struct nfsfattr attr;
124*7c478bd9Sstevel@tonic-gate };
125*7c478bd9Sstevel@tonic-gate 
126*7c478bd9Sstevel@tonic-gate union SETACL2res switch (enum nfsstat status) {
127*7c478bd9Sstevel@tonic-gate case ACL2_OK:
128*7c478bd9Sstevel@tonic-gate 	SETACL2resok resok;
129*7c478bd9Sstevel@tonic-gate default:
130*7c478bd9Sstevel@tonic-gate 	void;
131*7c478bd9Sstevel@tonic-gate };
132*7c478bd9Sstevel@tonic-gate 
133*7c478bd9Sstevel@tonic-gate /*
134*7c478bd9Sstevel@tonic-gate  * This is the definition for the GETATTR procedure which can be
135*7c478bd9Sstevel@tonic-gate  * used as an alternative to the GETATTR in NFS Version 2.  The
136*7c478bd9Sstevel@tonic-gate  * main difference between this GETATTR and the NFS GETATTR is
137*7c478bd9Sstevel@tonic-gate  * that this GETATTR returns the mode of the file without it being
138*7c478bd9Sstevel@tonic-gate  * changed to match the min/max permissions mapping that the NFS
139*7c478bd9Sstevel@tonic-gate  * Version 2 server does.
140*7c478bd9Sstevel@tonic-gate  */
141*7c478bd9Sstevel@tonic-gate struct GETATTR2args {
142*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
143*7c478bd9Sstevel@tonic-gate };
144*7c478bd9Sstevel@tonic-gate 
145*7c478bd9Sstevel@tonic-gate struct GETATTR2resok {
146*7c478bd9Sstevel@tonic-gate 	struct nfsfattr attr;
147*7c478bd9Sstevel@tonic-gate };
148*7c478bd9Sstevel@tonic-gate 
149*7c478bd9Sstevel@tonic-gate union GETATTR2res switch (enum nfsstat status) {
150*7c478bd9Sstevel@tonic-gate case ACL2_OK:
151*7c478bd9Sstevel@tonic-gate 	GETATTR2resok resok;
152*7c478bd9Sstevel@tonic-gate default:
153*7c478bd9Sstevel@tonic-gate 	void;
154*7c478bd9Sstevel@tonic-gate };
155*7c478bd9Sstevel@tonic-gate 
156*7c478bd9Sstevel@tonic-gate /*
157*7c478bd9Sstevel@tonic-gate  * This is the definition for the ACCESS procedure which applies
158*7c478bd9Sstevel@tonic-gate  * to NFS Version 2.
159*7c478bd9Sstevel@tonic-gate  */
160*7c478bd9Sstevel@tonic-gate struct ACCESS2args {
161*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
162*7c478bd9Sstevel@tonic-gate 	uint32 access;
163*7c478bd9Sstevel@tonic-gate };
164*7c478bd9Sstevel@tonic-gate 
165*7c478bd9Sstevel@tonic-gate /*
166*7c478bd9Sstevel@tonic-gate  * The following access permissions may be requested:
167*7c478bd9Sstevel@tonic-gate  */
168*7c478bd9Sstevel@tonic-gate const ACCESS2_READ = 0x1;	/* read data or readdir a directory */
169*7c478bd9Sstevel@tonic-gate const ACCESS2_LOOKUP = 0x2;	/* lookup a name in a directory */
170*7c478bd9Sstevel@tonic-gate const ACCESS2_MODIFY = 0x4;	/* rewrite existing file data or */
171*7c478bd9Sstevel@tonic-gate 				/* modify existing directory entries */
172*7c478bd9Sstevel@tonic-gate const ACCESS2_EXTEND = 0x8;	/* write new data or add directory entries */
173*7c478bd9Sstevel@tonic-gate const ACCESS2_DELETE = 0x10;	/* delete existing directory entry */
174*7c478bd9Sstevel@tonic-gate const ACCESS2_EXECUTE = 0x20;	/* execute file (no meaning for a directory) */
175*7c478bd9Sstevel@tonic-gate 
176*7c478bd9Sstevel@tonic-gate struct ACCESS2resok {
177*7c478bd9Sstevel@tonic-gate 	struct nfsfattr attr;
178*7c478bd9Sstevel@tonic-gate 	uint32 access;
179*7c478bd9Sstevel@tonic-gate };
180*7c478bd9Sstevel@tonic-gate 
181*7c478bd9Sstevel@tonic-gate union ACCESS2res switch (enum nfsstat status) {
182*7c478bd9Sstevel@tonic-gate case ACL2_OK:
183*7c478bd9Sstevel@tonic-gate 	ACCESS2resok resok;
184*7c478bd9Sstevel@tonic-gate default:
185*7c478bd9Sstevel@tonic-gate 	void;
186*7c478bd9Sstevel@tonic-gate };
187*7c478bd9Sstevel@tonic-gate 
188*7c478bd9Sstevel@tonic-gate /*
189*7c478bd9Sstevel@tonic-gate  * This is the definition for the GETXATTRDIR procedure which applies
190*7c478bd9Sstevel@tonic-gate  * to NFS Version 2 files.
191*7c478bd9Sstevel@tonic-gate  */
192*7c478bd9Sstevel@tonic-gate struct GETXATTRDIR2args {
193*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
194*7c478bd9Sstevel@tonic-gate 	bool create;
195*7c478bd9Sstevel@tonic-gate };
196*7c478bd9Sstevel@tonic-gate 
197*7c478bd9Sstevel@tonic-gate struct GETXATTRDIR2resok {
198*7c478bd9Sstevel@tonic-gate 	fhandle_t fh;
199*7c478bd9Sstevel@tonic-gate 	struct nfsfattr attr;
200*7c478bd9Sstevel@tonic-gate };
201*7c478bd9Sstevel@tonic-gate 
202*7c478bd9Sstevel@tonic-gate union GETXATTRDIR2res switch (enum nfsstat status) {
203*7c478bd9Sstevel@tonic-gate case ACL2_OK:
204*7c478bd9Sstevel@tonic-gate 	GETXATTRDIR2resok resok;
205*7c478bd9Sstevel@tonic-gate default:
206*7c478bd9Sstevel@tonic-gate 	void;
207*7c478bd9Sstevel@tonic-gate };
208*7c478bd9Sstevel@tonic-gate 
209*7c478bd9Sstevel@tonic-gate /*
210*7c478bd9Sstevel@tonic-gate  * This is the definition for the GETACL procedure which applies
211*7c478bd9Sstevel@tonic-gate  * to NFS Version 3 files.
212*7c478bd9Sstevel@tonic-gate  */
213*7c478bd9Sstevel@tonic-gate struct GETACL3args {
214*7c478bd9Sstevel@tonic-gate 	nfs_fh3 fh;
215*7c478bd9Sstevel@tonic-gate 	u_int mask;
216*7c478bd9Sstevel@tonic-gate };
217*7c478bd9Sstevel@tonic-gate 
218*7c478bd9Sstevel@tonic-gate struct GETACL3resok {
219*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
220*7c478bd9Sstevel@tonic-gate 	secattr acl;
221*7c478bd9Sstevel@tonic-gate };
222*7c478bd9Sstevel@tonic-gate 
223*7c478bd9Sstevel@tonic-gate struct GETACL3resfail {
224*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
225*7c478bd9Sstevel@tonic-gate };
226*7c478bd9Sstevel@tonic-gate 
227*7c478bd9Sstevel@tonic-gate union GETACL3res switch (nfsstat3 status) {
228*7c478bd9Sstevel@tonic-gate case ACL3_OK:
229*7c478bd9Sstevel@tonic-gate 	GETACL3resok resok;
230*7c478bd9Sstevel@tonic-gate default:
231*7c478bd9Sstevel@tonic-gate 	GETACL3resfail resfail;
232*7c478bd9Sstevel@tonic-gate };
233*7c478bd9Sstevel@tonic-gate 
234*7c478bd9Sstevel@tonic-gate /*
235*7c478bd9Sstevel@tonic-gate  * This is the definition for the SETACL procedure which applies
236*7c478bd9Sstevel@tonic-gate  * to NFS Version 3 files.
237*7c478bd9Sstevel@tonic-gate  */
238*7c478bd9Sstevel@tonic-gate struct SETACL3args {
239*7c478bd9Sstevel@tonic-gate 	nfs_fh3 fh;
240*7c478bd9Sstevel@tonic-gate 	secattr acl;
241*7c478bd9Sstevel@tonic-gate };
242*7c478bd9Sstevel@tonic-gate 
243*7c478bd9Sstevel@tonic-gate struct SETACL3resok {
244*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
245*7c478bd9Sstevel@tonic-gate };
246*7c478bd9Sstevel@tonic-gate 
247*7c478bd9Sstevel@tonic-gate struct SETACL3resfail {
248*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
249*7c478bd9Sstevel@tonic-gate };
250*7c478bd9Sstevel@tonic-gate 
251*7c478bd9Sstevel@tonic-gate union SETACL3res switch (nfsstat3 status) {
252*7c478bd9Sstevel@tonic-gate case ACL3_OK:
253*7c478bd9Sstevel@tonic-gate 	SETACL3resok resok;
254*7c478bd9Sstevel@tonic-gate default:
255*7c478bd9Sstevel@tonic-gate 	SETACL3resfail resfail;
256*7c478bd9Sstevel@tonic-gate };
257*7c478bd9Sstevel@tonic-gate 
258*7c478bd9Sstevel@tonic-gate /*
259*7c478bd9Sstevel@tonic-gate  * This is the definition for the GETXATTRDIR procedure which applies
260*7c478bd9Sstevel@tonic-gate  * to NFS Version 3 files.
261*7c478bd9Sstevel@tonic-gate  */
262*7c478bd9Sstevel@tonic-gate struct GETXATTRDIR3args {
263*7c478bd9Sstevel@tonic-gate 	nfs_fh3 fh;
264*7c478bd9Sstevel@tonic-gate 	bool create;
265*7c478bd9Sstevel@tonic-gate };
266*7c478bd9Sstevel@tonic-gate 
267*7c478bd9Sstevel@tonic-gate struct GETXATTRDIR3resok {
268*7c478bd9Sstevel@tonic-gate 	nfs_fh3 fh;
269*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
270*7c478bd9Sstevel@tonic-gate };
271*7c478bd9Sstevel@tonic-gate 
272*7c478bd9Sstevel@tonic-gate union GETXATTRDIR3res switch (nfsstat3 status) {
273*7c478bd9Sstevel@tonic-gate case ACL3_OK:
274*7c478bd9Sstevel@tonic-gate 	GETXATTRDIR3resok resok;
275*7c478bd9Sstevel@tonic-gate default:
276*7c478bd9Sstevel@tonic-gate 	void;
277*7c478bd9Sstevel@tonic-gate };
278*7c478bd9Sstevel@tonic-gate 
279*7c478bd9Sstevel@tonic-gate /*
280*7c478bd9Sstevel@tonic-gate  * XXX {
281*7c478bd9Sstevel@tonic-gate  * This is a transitional interface to enable Solaris NFSv4
282*7c478bd9Sstevel@tonic-gate  * clients to manipulate ACLs on Solaris servers until the
283*7c478bd9Sstevel@tonic-gate  * spec is complete enough to implement this inside the
284*7c478bd9Sstevel@tonic-gate  * NFSv4 protocol itself.  NFSv4 does handle extended
285*7c478bd9Sstevel@tonic-gate  * attributes in-band.
286*7c478bd9Sstevel@tonic-gate  */
287*7c478bd9Sstevel@tonic-gate 
288*7c478bd9Sstevel@tonic-gate /*
289*7c478bd9Sstevel@tonic-gate  * This is the definition for the GETACL procedure which applies
290*7c478bd9Sstevel@tonic-gate  * to NFS Version 4 files.
291*7c478bd9Sstevel@tonic-gate  */
292*7c478bd9Sstevel@tonic-gate struct GETACL4args {
293*7c478bd9Sstevel@tonic-gate 	nfs_fh4 fh;
294*7c478bd9Sstevel@tonic-gate 	u_int mask;
295*7c478bd9Sstevel@tonic-gate };
296*7c478bd9Sstevel@tonic-gate 
297*7c478bd9Sstevel@tonic-gate struct GETACL4resok {
298*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
299*7c478bd9Sstevel@tonic-gate 	secattr acl;
300*7c478bd9Sstevel@tonic-gate };
301*7c478bd9Sstevel@tonic-gate 
302*7c478bd9Sstevel@tonic-gate struct GETACL4resfail {
303*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
304*7c478bd9Sstevel@tonic-gate };
305*7c478bd9Sstevel@tonic-gate 
306*7c478bd9Sstevel@tonic-gate union GETACL4res switch (nfsstat3 status) {
307*7c478bd9Sstevel@tonic-gate case ACL4_OK:
308*7c478bd9Sstevel@tonic-gate 	GETACL4resok resok;
309*7c478bd9Sstevel@tonic-gate default:
310*7c478bd9Sstevel@tonic-gate 	GETACL4resfail resfail;
311*7c478bd9Sstevel@tonic-gate };
312*7c478bd9Sstevel@tonic-gate 
313*7c478bd9Sstevel@tonic-gate /*
314*7c478bd9Sstevel@tonic-gate  * This is the definition for the SETACL procedure which applies
315*7c478bd9Sstevel@tonic-gate  * to NFS Version 4 files.
316*7c478bd9Sstevel@tonic-gate  */
317*7c478bd9Sstevel@tonic-gate struct SETACL4args {
318*7c478bd9Sstevel@tonic-gate 	nfs_fh4 fh;
319*7c478bd9Sstevel@tonic-gate 	secattr acl;
320*7c478bd9Sstevel@tonic-gate };
321*7c478bd9Sstevel@tonic-gate 
322*7c478bd9Sstevel@tonic-gate struct SETACL4resok {
323*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
324*7c478bd9Sstevel@tonic-gate };
325*7c478bd9Sstevel@tonic-gate 
326*7c478bd9Sstevel@tonic-gate struct SETACL4resfail {
327*7c478bd9Sstevel@tonic-gate 	post_op_attr attr;
328*7c478bd9Sstevel@tonic-gate };
329*7c478bd9Sstevel@tonic-gate 
330*7c478bd9Sstevel@tonic-gate union SETACL4res switch (nfsstat3 status) {
331*7c478bd9Sstevel@tonic-gate case ACL4_OK:
332*7c478bd9Sstevel@tonic-gate 	SETACL4resok resok;
333*7c478bd9Sstevel@tonic-gate default:
334*7c478bd9Sstevel@tonic-gate 	SETACL4resfail resfail;
335*7c478bd9Sstevel@tonic-gate };
336*7c478bd9Sstevel@tonic-gate 
337*7c478bd9Sstevel@tonic-gate /* XXX } */
338*7c478bd9Sstevel@tonic-gate 
339*7c478bd9Sstevel@tonic-gate /*
340*7c478bd9Sstevel@tonic-gate  * Share the port with the NFS service.  NFS has to be running
341*7c478bd9Sstevel@tonic-gate  * in order for this service to be useful anyway.
342*7c478bd9Sstevel@tonic-gate  */
343*7c478bd9Sstevel@tonic-gate const NFS_ACL_PORT = 2049;
344*7c478bd9Sstevel@tonic-gate 
345*7c478bd9Sstevel@tonic-gate /*
346*7c478bd9Sstevel@tonic-gate  * This is the definition for the ACL network protocol which is used
347*7c478bd9Sstevel@tonic-gate  * to provide support for Solaris ACLs for files which are accessed
348*7c478bd9Sstevel@tonic-gate  * via NFS Version 2 and NFS Version 3.
349*7c478bd9Sstevel@tonic-gate  */
350*7c478bd9Sstevel@tonic-gate program NFS_ACL_PROGRAM {
351*7c478bd9Sstevel@tonic-gate 	version NFS_ACL_V2 {
352*7c478bd9Sstevel@tonic-gate 		void
353*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_NULL(void) = 0;
354*7c478bd9Sstevel@tonic-gate 		GETACL2res
355*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_GETACL(GETACL2args) = 1;
356*7c478bd9Sstevel@tonic-gate 		SETACL2res
357*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_SETACL(SETACL2args) = 2;
358*7c478bd9Sstevel@tonic-gate 		GETATTR2res
359*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_GETATTR(GETATTR2args) = 3;
360*7c478bd9Sstevel@tonic-gate 		ACCESS2res
361*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_ACCESS(ACCESS2args) = 4;
362*7c478bd9Sstevel@tonic-gate 		GETXATTRDIR2res
363*7c478bd9Sstevel@tonic-gate 		 ACLPROC2_GETXATTRDIR(GETXATTRDIR2args) = 5;
364*7c478bd9Sstevel@tonic-gate 	} = 2;
365*7c478bd9Sstevel@tonic-gate 	version NFS_ACL_V3 {
366*7c478bd9Sstevel@tonic-gate 		void
367*7c478bd9Sstevel@tonic-gate 		 ACLPROC3_NULL(void) = 0;
368*7c478bd9Sstevel@tonic-gate 		GETACL3res
369*7c478bd9Sstevel@tonic-gate 		 ACLPROC3_GETACL(GETACL3args) = 1;
370*7c478bd9Sstevel@tonic-gate 		SETACL3res
371*7c478bd9Sstevel@tonic-gate 		 ACLPROC3_SETACL(SETACL3args) = 2;
372*7c478bd9Sstevel@tonic-gate 		GETXATTRDIR3res
373*7c478bd9Sstevel@tonic-gate 		 ACLPROC3_GETXATTRDIR(GETXATTRDIR3args) = 3;
374*7c478bd9Sstevel@tonic-gate 	} = 3;
375*7c478bd9Sstevel@tonic-gate 	version NFS_ACL_V4 {
376*7c478bd9Sstevel@tonic-gate 		void
377*7c478bd9Sstevel@tonic-gate 		 ACLPROC4_NULL(void) = 0;
378*7c478bd9Sstevel@tonic-gate 		GETACL4res
379*7c478bd9Sstevel@tonic-gate 		 ACLPROC4_GETACL(GETACL4args) = 1;
380*7c478bd9Sstevel@tonic-gate 		SETACL4res
381*7c478bd9Sstevel@tonic-gate 		 ACLPROC4_SETACL(SETACL4args) = 2;
382*7c478bd9Sstevel@tonic-gate 	} = 4;
383*7c478bd9Sstevel@tonic-gate } = 100227;
384