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