xref: /onnv-gate/usr/src/uts/common/nfs/nfs_acl.h (revision 1610:3436e82414c8)
10Sstevel@tonic-gate /*
20Sstevel@tonic-gate  * CDDL HEADER START
30Sstevel@tonic-gate  *
40Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
5*1610Sthurlow  * Common Development and Distribution License (the "License").
6*1610Sthurlow  * You may not use this file except in compliance with the License.
70Sstevel@tonic-gate  *
80Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
90Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
100Sstevel@tonic-gate  * See the License for the specific language governing permissions
110Sstevel@tonic-gate  * and limitations under the License.
120Sstevel@tonic-gate  *
130Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
140Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
150Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
160Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
170Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
180Sstevel@tonic-gate  *
190Sstevel@tonic-gate  * CDDL HEADER END
200Sstevel@tonic-gate  */
210Sstevel@tonic-gate /*
22*1610Sthurlow  *	Copyright 2006 Sun Microsystems, Inc.
230Sstevel@tonic-gate  *	All rights reserved.
240Sstevel@tonic-gate  *	Use is subject to license terms.
250Sstevel@tonic-gate  */
260Sstevel@tonic-gate 
270Sstevel@tonic-gate #ifndef _NFS_NFS_ACL_H
280Sstevel@tonic-gate #define	_NFS_NFS_ACL_H
290Sstevel@tonic-gate 
300Sstevel@tonic-gate #pragma ident	"%Z%%M%	%I%	%E% SMI"
310Sstevel@tonic-gate 
320Sstevel@tonic-gate #ifdef	__cplusplus
330Sstevel@tonic-gate extern "C" {
340Sstevel@tonic-gate #endif
350Sstevel@tonic-gate 
360Sstevel@tonic-gate #define	NFS_ACL_MAX_ENTRIES	1024
370Sstevel@tonic-gate 
380Sstevel@tonic-gate typedef ushort_t o_mode;
390Sstevel@tonic-gate 
400Sstevel@tonic-gate struct aclent {
410Sstevel@tonic-gate 	int type;
420Sstevel@tonic-gate 	uid32_t id;
430Sstevel@tonic-gate 	o_mode perm;
440Sstevel@tonic-gate };
450Sstevel@tonic-gate typedef struct aclent aclent;
460Sstevel@tonic-gate 
470Sstevel@tonic-gate #define	NA_USER_OBJ	0x1
480Sstevel@tonic-gate #define	NA_USER		0x2
490Sstevel@tonic-gate #define	NA_GROUP_OBJ	0x4
500Sstevel@tonic-gate #define	NA_GROUP	0x8
510Sstevel@tonic-gate #define	NA_CLASS_OBJ	0x10
520Sstevel@tonic-gate #define	NA_OTHER_OBJ	0x20
530Sstevel@tonic-gate #define	NA_ACL_DEFAULT	0x1000
540Sstevel@tonic-gate 
550Sstevel@tonic-gate #define	NA_READ		0x4
560Sstevel@tonic-gate #define	NA_WRITE	0x2
570Sstevel@tonic-gate #define	NA_EXEC		0x1
580Sstevel@tonic-gate 
590Sstevel@tonic-gate struct secattr {
600Sstevel@tonic-gate 	uint32 mask;
610Sstevel@tonic-gate 	int aclcnt;
620Sstevel@tonic-gate 	struct {
630Sstevel@tonic-gate 		uint_t aclent_len;
640Sstevel@tonic-gate 		aclent *aclent_val;
650Sstevel@tonic-gate 	} aclent;
660Sstevel@tonic-gate 	int dfaclcnt;
670Sstevel@tonic-gate 	struct {
680Sstevel@tonic-gate 		uint_t dfaclent_len;
690Sstevel@tonic-gate 		aclent *dfaclent_val;
700Sstevel@tonic-gate 	} dfaclent;
710Sstevel@tonic-gate };
720Sstevel@tonic-gate typedef struct secattr secattr;
730Sstevel@tonic-gate 
740Sstevel@tonic-gate #define	NA_ACL		0x1
750Sstevel@tonic-gate #define	NA_ACLCNT	0x2
760Sstevel@tonic-gate #define	NA_DFACL	0x4
770Sstevel@tonic-gate #define	NA_DFACLCNT	0x8
780Sstevel@tonic-gate 
790Sstevel@tonic-gate struct GETACL2args {
800Sstevel@tonic-gate 	fhandle_t fh;
810Sstevel@tonic-gate 	uint32 mask;
820Sstevel@tonic-gate };
830Sstevel@tonic-gate typedef struct GETACL2args GETACL2args;
840Sstevel@tonic-gate 
850Sstevel@tonic-gate struct GETACL2resok {
860Sstevel@tonic-gate 	struct nfsfattr attr;
870Sstevel@tonic-gate 	vsecattr_t acl;
880Sstevel@tonic-gate };
890Sstevel@tonic-gate typedef struct GETACL2resok GETACL2resok;
900Sstevel@tonic-gate 
910Sstevel@tonic-gate struct GETACL2res {
920Sstevel@tonic-gate 	enum nfsstat status;
930Sstevel@tonic-gate 	union {
940Sstevel@tonic-gate 		GETACL2resok ok;
950Sstevel@tonic-gate 	} res_u;
960Sstevel@tonic-gate };
970Sstevel@tonic-gate typedef struct GETACL2res GETACL2res;
980Sstevel@tonic-gate 
990Sstevel@tonic-gate struct SETACL2args {
1000Sstevel@tonic-gate 	fhandle_t fh;
1010Sstevel@tonic-gate 	vsecattr_t acl;
1020Sstevel@tonic-gate };
1030Sstevel@tonic-gate typedef struct SETACL2args SETACL2args;
1040Sstevel@tonic-gate 
1050Sstevel@tonic-gate struct SETACL2resok {
1060Sstevel@tonic-gate 	struct nfsfattr attr;
1070Sstevel@tonic-gate };
1080Sstevel@tonic-gate typedef struct SETACL2resok SETACL2resok;
1090Sstevel@tonic-gate 
1100Sstevel@tonic-gate struct SETACL2res {
1110Sstevel@tonic-gate 	enum nfsstat status;
1120Sstevel@tonic-gate 	union {
1130Sstevel@tonic-gate 		SETACL2resok ok;
1140Sstevel@tonic-gate 	} res_u;
1150Sstevel@tonic-gate };
1160Sstevel@tonic-gate typedef struct SETACL2res SETACL2res;
1170Sstevel@tonic-gate 
1180Sstevel@tonic-gate struct GETATTR2args {
1190Sstevel@tonic-gate 	fhandle_t fh;
1200Sstevel@tonic-gate };
1210Sstevel@tonic-gate typedef struct GETATTR2args GETATTR2args;
1220Sstevel@tonic-gate 
1230Sstevel@tonic-gate struct GETATTR2resok {
1240Sstevel@tonic-gate 	struct nfsfattr attr;
1250Sstevel@tonic-gate };
1260Sstevel@tonic-gate typedef struct GETATTR2resok GETATTR2resok;
1270Sstevel@tonic-gate 
1280Sstevel@tonic-gate struct GETATTR2res {
1290Sstevel@tonic-gate 	enum nfsstat status;
1300Sstevel@tonic-gate 	union {
1310Sstevel@tonic-gate 		GETATTR2resok ok;
1320Sstevel@tonic-gate 	} res_u;
1330Sstevel@tonic-gate };
1340Sstevel@tonic-gate typedef struct GETATTR2res GETATTR2res;
1350Sstevel@tonic-gate 
1360Sstevel@tonic-gate struct ACCESS2args {
1370Sstevel@tonic-gate 	fhandle_t fh;
1380Sstevel@tonic-gate 	uint32 access;
1390Sstevel@tonic-gate };
1400Sstevel@tonic-gate typedef struct ACCESS2args ACCESS2args;
1410Sstevel@tonic-gate 
1420Sstevel@tonic-gate #define	ACCESS2_READ	0x1
1430Sstevel@tonic-gate #define	ACCESS2_LOOKUP	0x2
1440Sstevel@tonic-gate #define	ACCESS2_MODIFY	0x4
1450Sstevel@tonic-gate #define	ACCESS2_EXTEND	0x8
1460Sstevel@tonic-gate #define	ACCESS2_DELETE	0x10
1470Sstevel@tonic-gate #define	ACCESS2_EXECUTE	0x20
1480Sstevel@tonic-gate 
1490Sstevel@tonic-gate struct ACCESS2resok {
1500Sstevel@tonic-gate 	struct nfsfattr attr;
1510Sstevel@tonic-gate 	uint32 access;
1520Sstevel@tonic-gate };
1530Sstevel@tonic-gate typedef struct ACCESS2resok ACCESS2resok;
1540Sstevel@tonic-gate 
1550Sstevel@tonic-gate struct ACCESS2res {
1560Sstevel@tonic-gate 	enum nfsstat status;
1570Sstevel@tonic-gate 	union {
1580Sstevel@tonic-gate 		ACCESS2resok ok;
1590Sstevel@tonic-gate 	} res_u;
1600Sstevel@tonic-gate };
1610Sstevel@tonic-gate typedef struct ACCESS2res ACCESS2res;
1620Sstevel@tonic-gate 
1630Sstevel@tonic-gate struct GETXATTRDIR2args {
1640Sstevel@tonic-gate 	fhandle_t fh;
1650Sstevel@tonic-gate 	bool_t create;
1660Sstevel@tonic-gate };
1670Sstevel@tonic-gate typedef struct GETXATTRDIR2args GETXATTRDIR2args;
1680Sstevel@tonic-gate 
1690Sstevel@tonic-gate struct GETXATTRDIR2resok {
1700Sstevel@tonic-gate 	fhandle_t fh;
1710Sstevel@tonic-gate 	struct nfsfattr attr;
1720Sstevel@tonic-gate };
1730Sstevel@tonic-gate typedef struct GETXATTRDIR2resok GETXATTRDIR2resok;
1740Sstevel@tonic-gate 
1750Sstevel@tonic-gate struct GETXATTRDIR2res {
1760Sstevel@tonic-gate 	enum nfsstat status;
1770Sstevel@tonic-gate 	union {
1780Sstevel@tonic-gate 		GETXATTRDIR2resok ok;
1790Sstevel@tonic-gate 	} res_u;
1800Sstevel@tonic-gate };
1810Sstevel@tonic-gate typedef struct GETXATTRDIR2res GETXATTRDIR2res;
1820Sstevel@tonic-gate 
1830Sstevel@tonic-gate struct GETACL3args {
1840Sstevel@tonic-gate 	nfs_fh3 fh;
1850Sstevel@tonic-gate 	uint32 mask;
1860Sstevel@tonic-gate };
1870Sstevel@tonic-gate typedef struct GETACL3args GETACL3args;
1880Sstevel@tonic-gate 
1890Sstevel@tonic-gate struct GETACL3resok {
1900Sstevel@tonic-gate 	post_op_attr attr;
1910Sstevel@tonic-gate 	vsecattr_t acl;
1920Sstevel@tonic-gate };
1930Sstevel@tonic-gate typedef struct GETACL3resok GETACL3resok;
1940Sstevel@tonic-gate 
1950Sstevel@tonic-gate struct GETACL3resfail {
1960Sstevel@tonic-gate 	post_op_attr attr;
1970Sstevel@tonic-gate };
1980Sstevel@tonic-gate typedef struct GETACL3resfail GETACL3resfail;
1990Sstevel@tonic-gate 
2000Sstevel@tonic-gate struct GETACL3res {
2010Sstevel@tonic-gate 	nfsstat3 status;
2020Sstevel@tonic-gate 	union {
2030Sstevel@tonic-gate 		GETACL3resok ok;
2040Sstevel@tonic-gate 		GETACL3resfail fail;
2050Sstevel@tonic-gate 	} res_u;
2060Sstevel@tonic-gate };
2070Sstevel@tonic-gate typedef struct GETACL3res GETACL3res;
2080Sstevel@tonic-gate 
2090Sstevel@tonic-gate struct SETACL3args {
2100Sstevel@tonic-gate 	nfs_fh3 fh;
2110Sstevel@tonic-gate 	vsecattr_t acl;
2120Sstevel@tonic-gate };
2130Sstevel@tonic-gate typedef struct SETACL3args SETACL3args;
2140Sstevel@tonic-gate 
2150Sstevel@tonic-gate struct SETACL3resok {
2160Sstevel@tonic-gate 	post_op_attr attr;
2170Sstevel@tonic-gate };
2180Sstevel@tonic-gate typedef struct SETACL3resok SETACL3resok;
2190Sstevel@tonic-gate 
2200Sstevel@tonic-gate struct SETACL3resfail {
2210Sstevel@tonic-gate 	post_op_attr attr;
2220Sstevel@tonic-gate };
2230Sstevel@tonic-gate typedef struct SETACL3resfail SETACL3resfail;
2240Sstevel@tonic-gate 
2250Sstevel@tonic-gate struct SETACL3res {
2260Sstevel@tonic-gate 	nfsstat3 status;
2270Sstevel@tonic-gate 	union {
2280Sstevel@tonic-gate 		SETACL3resok ok;
2290Sstevel@tonic-gate 		SETACL3resfail fail;
2300Sstevel@tonic-gate 	} res_u;
2310Sstevel@tonic-gate };
2320Sstevel@tonic-gate typedef struct SETACL3res SETACL3res;
2330Sstevel@tonic-gate 
2340Sstevel@tonic-gate struct GETXATTRDIR3args {
2350Sstevel@tonic-gate 	nfs_fh3 fh;
2360Sstevel@tonic-gate 	bool_t create;
2370Sstevel@tonic-gate };
2380Sstevel@tonic-gate typedef struct GETXATTRDIR3args GETXATTRDIR3args;
2390Sstevel@tonic-gate 
2400Sstevel@tonic-gate struct GETXATTRDIR3resok {
2410Sstevel@tonic-gate 	nfs_fh3 fh;
2420Sstevel@tonic-gate 	post_op_attr attr;
2430Sstevel@tonic-gate };
2440Sstevel@tonic-gate typedef struct GETXATTRDIR3resok GETXATTRDIR3resok;
2450Sstevel@tonic-gate 
2460Sstevel@tonic-gate struct GETXATTRDIR3res {
2470Sstevel@tonic-gate 	nfsstat3 status;
2480Sstevel@tonic-gate 	union {
2490Sstevel@tonic-gate 		GETXATTRDIR3resok ok;
2500Sstevel@tonic-gate 	} res_u;
2510Sstevel@tonic-gate };
2520Sstevel@tonic-gate typedef struct GETXATTRDIR3res GETXATTRDIR3res;
2530Sstevel@tonic-gate 
2540Sstevel@tonic-gate #define	NFS_ACL_PROGRAM	((rpcprog_t)(100227))
2550Sstevel@tonic-gate #define	NFS_ACL_VERSMIN	((rpcvers_t)(2))
2560Sstevel@tonic-gate #define	NFS_ACL_VERSMAX	((rpcvers_t)(3))
2570Sstevel@tonic-gate 
2580Sstevel@tonic-gate #define	NFS_ACL_V2		((rpcvers_t)(2))
2590Sstevel@tonic-gate #define	ACLPROC2_NULL		((rpcproc_t)(0))
2600Sstevel@tonic-gate #define	ACLPROC2_GETACL		((rpcproc_t)(1))
2610Sstevel@tonic-gate #define	ACLPROC2_SETACL		((rpcproc_t)(2))
2620Sstevel@tonic-gate #define	ACLPROC2_GETATTR	((rpcproc_t)(3))
2630Sstevel@tonic-gate #define	ACLPROC2_ACCESS		((rpcproc_t)(4))
2640Sstevel@tonic-gate #define	ACLPROC2_GETXATTRDIR	((rpcproc_t)(5))
2650Sstevel@tonic-gate 
2660Sstevel@tonic-gate #define	NFS_ACL_V3		((rpcvers_t)(3))
2670Sstevel@tonic-gate #define	ACLPROC3_NULL		((rpcproc_t)(0))
2680Sstevel@tonic-gate #define	ACLPROC3_GETACL		((rpcproc_t)(1))
2690Sstevel@tonic-gate #define	ACLPROC3_SETACL		((rpcproc_t)(2))
2700Sstevel@tonic-gate #define	ACLPROC3_GETXATTRDIR	((rpcproc_t)(3))
2710Sstevel@tonic-gate 
2720Sstevel@tonic-gate #ifdef _KERNEL
2730Sstevel@tonic-gate /* the xdr functions */
2740Sstevel@tonic-gate extern bool_t xdr_uid(XDR *, uid32_t *);
2750Sstevel@tonic-gate extern bool_t xdr_o_mode(XDR *, o_mode *);
2760Sstevel@tonic-gate extern bool_t xdr_aclent(XDR *, aclent_t *);
2770Sstevel@tonic-gate extern bool_t xdr_secattr(XDR *, vsecattr_t *);
2780Sstevel@tonic-gate 
2790Sstevel@tonic-gate extern bool_t xdr_GETACL2args(XDR *, GETACL2args *);
2800Sstevel@tonic-gate extern bool_t xdr_fastGETACL2args(XDR *, GETACL2args **);
2810Sstevel@tonic-gate extern bool_t xdr_GETACL2resok(XDR *, GETACL2resok *);
2820Sstevel@tonic-gate extern bool_t xdr_GETACL2res(XDR *, GETACL2res *);
2830Sstevel@tonic-gate extern bool_t xdr_SETACL2args(XDR *, SETACL2args *);
2840Sstevel@tonic-gate extern bool_t xdr_SETACL2resok(XDR *, SETACL2resok *);
2850Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
2860Sstevel@tonic-gate extern bool_t xdr_fastSETACL2resok(XDR *, SETACL2resok *);
2870Sstevel@tonic-gate #endif
2880Sstevel@tonic-gate extern bool_t xdr_SETACL2res(XDR *, SETACL2res *);
2890Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
2900Sstevel@tonic-gate extern bool_t xdr_fastSETACL2res(XDR *, SETACL2res *);
2910Sstevel@tonic-gate #endif
2920Sstevel@tonic-gate extern bool_t xdr_GETATTR2args(XDR *, GETATTR2args *);
2930Sstevel@tonic-gate extern bool_t xdr_fastGETATTR2args(XDR *, GETATTR2args **);
2940Sstevel@tonic-gate extern bool_t xdr_GETATTR2resok(XDR *, GETATTR2resok *);
2950Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
2960Sstevel@tonic-gate extern bool_t xdr_fastGETATTR2resok(XDR *, GETATTR2resok *);
2970Sstevel@tonic-gate #endif
2980Sstevel@tonic-gate extern bool_t xdr_GETATTR2res(XDR *, GETATTR2res *);
2990Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
3000Sstevel@tonic-gate extern bool_t xdr_fastGETATTR2res(XDR *, GETATTR2res *);
3010Sstevel@tonic-gate #endif
3020Sstevel@tonic-gate extern bool_t xdr_ACCESS2args(XDR *, ACCESS2args *);
3030Sstevel@tonic-gate extern bool_t xdr_fastACCESS2args(XDR *, ACCESS2args **);
3040Sstevel@tonic-gate extern bool_t xdr_ACCESS2resok(XDR *, ACCESS2resok *);
3050Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
3060Sstevel@tonic-gate extern bool_t xdr_fastACCESS2resok(XDR *, ACCESS2resok *);
3070Sstevel@tonic-gate #endif
3080Sstevel@tonic-gate extern bool_t xdr_ACCESS2res(XDR *, ACCESS2res *);
3090Sstevel@tonic-gate #ifdef _LITTLE_ENDIAN
3100Sstevel@tonic-gate extern bool_t xdr_fastACCESS2res(XDR *, ACCESS2res *);
3110Sstevel@tonic-gate #endif
3120Sstevel@tonic-gate extern bool_t xdr_GETXATTRDIR2args(XDR *, GETXATTRDIR2args *);
3130Sstevel@tonic-gate extern bool_t xdr_GETXATTRDIR2res(XDR *, GETXATTRDIR2res *);
3140Sstevel@tonic-gate 
3150Sstevel@tonic-gate extern bool_t xdr_GETACL3args(XDR *, GETACL3args *);
3160Sstevel@tonic-gate extern bool_t xdr_GETACL3resok(XDR *, GETACL3resok *);
3170Sstevel@tonic-gate extern bool_t xdr_GETACL3resfail(XDR *, GETACL3resfail *);
3180Sstevel@tonic-gate extern bool_t xdr_GETACL3res(XDR *, GETACL3res *);
3190Sstevel@tonic-gate extern bool_t xdr_SETACL3args(XDR *, SETACL3args *);
3200Sstevel@tonic-gate extern bool_t xdr_SETACL3resok(XDR *, SETACL3resok *);
3210Sstevel@tonic-gate extern bool_t xdr_SETACL3resfail(XDR *, SETACL3resfail *);
3220Sstevel@tonic-gate extern bool_t xdr_SETACL3res(XDR *, SETACL3res *);
3230Sstevel@tonic-gate extern bool_t xdr_GETXATTRDIR3args(XDR *, GETXATTRDIR3args *);
3240Sstevel@tonic-gate extern bool_t xdr_GETXATTRDIR3res(XDR *, GETXATTRDIR3res *);
3250Sstevel@tonic-gate 
3260Sstevel@tonic-gate #endif
3270Sstevel@tonic-gate 
3280Sstevel@tonic-gate #ifdef _KERNEL
3290Sstevel@tonic-gate /* the service procedures */
3300Sstevel@tonic-gate extern void acl2_getacl(GETACL2args *, GETACL2res *,
3310Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
332*1610Sthurlow extern void *acl2_getacl_getfh(GETACL2args *);
3330Sstevel@tonic-gate extern void acl2_getacl_free(GETACL2res *);
3340Sstevel@tonic-gate extern void acl2_setacl(SETACL2args *, SETACL2res *,
3350Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
336*1610Sthurlow extern void *acl2_setacl_getfh(SETACL2args *);
3370Sstevel@tonic-gate extern void acl2_getattr(GETATTR2args *, GETATTR2res *,
3380Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
339*1610Sthurlow extern void *acl2_getattr_getfh(GETATTR2args *);
3400Sstevel@tonic-gate extern void acl2_access(ACCESS2args *, ACCESS2res *,
3410Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
342*1610Sthurlow extern void *acl2_access_getfh(ACCESS2args *);
3430Sstevel@tonic-gate extern void acl2_getxattrdir(GETXATTRDIR2args *, GETXATTRDIR2res *,
3440Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
345*1610Sthurlow extern void *acl2_getxattrdir_getfh(GETXATTRDIR2args *);
3460Sstevel@tonic-gate 
3470Sstevel@tonic-gate extern void acl3_getacl(GETACL3args *, GETACL3res *,
3480Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
349*1610Sthurlow extern void *acl3_getacl_getfh(GETACL3args *);
3500Sstevel@tonic-gate extern void acl3_getacl_free(GETACL3res *);
3510Sstevel@tonic-gate extern void acl3_setacl(SETACL3args *, SETACL3res *,
3520Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
353*1610Sthurlow extern void *acl3_setacl_getfh(SETACL3args *);
3540Sstevel@tonic-gate extern void acl3_getxattrdir(GETXATTRDIR3args *, GETXATTRDIR3res *,
3550Sstevel@tonic-gate 			struct exportinfo *, struct svc_req *, cred_t *);
356*1610Sthurlow extern void *acl3_getxattrdir_getfh(GETXATTRDIR3args *);
3570Sstevel@tonic-gate 
3580Sstevel@tonic-gate #endif
3590Sstevel@tonic-gate 
3600Sstevel@tonic-gate #ifdef _KERNEL
3610Sstevel@tonic-gate /* the client side procedures */
3620Sstevel@tonic-gate extern int acl_getacl2(vnode_t *, vsecattr_t *, int, cred_t *);
3630Sstevel@tonic-gate extern int acl_setacl2(vnode_t *, vsecattr_t *, int, cred_t *);
3640Sstevel@tonic-gate extern int acl_getattr2_otw(vnode_t *, vattr_t *, cred_t *);
3650Sstevel@tonic-gate extern int acl_access2(vnode_t *, int, int, cred_t *);
3660Sstevel@tonic-gate extern int acl_getxattrdir2(vnode_t *, vnode_t **, bool_t, cred_t *, int);
3670Sstevel@tonic-gate extern int acl_getacl3(vnode_t *, vsecattr_t *, int, cred_t *);
3680Sstevel@tonic-gate extern int acl_setacl3(vnode_t *, vsecattr_t *, int, cred_t *);
3690Sstevel@tonic-gate extern int acl_getxattrdir3(vnode_t *, vnode_t **, bool_t, cred_t *, int);
3700Sstevel@tonic-gate extern int acl2call(mntinfo_t *, rpcproc_t, xdrproc_t, caddr_t, xdrproc_t,
3710Sstevel@tonic-gate 			caddr_t, cred_t *, int *, enum nfsstat *, int,
3720Sstevel@tonic-gate 			failinfo_t *);
3730Sstevel@tonic-gate extern int acl3call(mntinfo_t *, rpcproc_t, xdrproc_t, caddr_t, xdrproc_t,
3740Sstevel@tonic-gate 			caddr_t, cred_t *, int *, nfsstat3 *, int,
3750Sstevel@tonic-gate 			failinfo_t *);
3760Sstevel@tonic-gate extern void nfs_acl_free(vsecattr_t *);
3770Sstevel@tonic-gate #endif
3780Sstevel@tonic-gate 
3790Sstevel@tonic-gate #ifdef _KERNEL
3800Sstevel@tonic-gate /* server and client data structures */
3810Sstevel@tonic-gate extern kstat_named_t	*aclproccnt_v2_ptr;
3820Sstevel@tonic-gate extern kstat_named_t	*aclproccnt_v3_ptr;
3830Sstevel@tonic-gate 
3840Sstevel@tonic-gate extern char		*aclnames_v2[];
3850Sstevel@tonic-gate extern uchar_t		acl_call_type_v2[];
3860Sstevel@tonic-gate extern uchar_t		acl_ss_call_type_v2[];
3870Sstevel@tonic-gate extern uchar_t		acl_timer_type_v2[];
3880Sstevel@tonic-gate 
3890Sstevel@tonic-gate extern char		*aclnames_v3[];
3900Sstevel@tonic-gate extern uchar_t		acl_call_type_v3[];
3910Sstevel@tonic-gate extern uchar_t		acl_ss_call_type_v3[];
3920Sstevel@tonic-gate extern uchar_t		acl_timer_type_v3[];
3930Sstevel@tonic-gate #endif
3940Sstevel@tonic-gate 
3950Sstevel@tonic-gate #ifdef	__cplusplus
3960Sstevel@tonic-gate }
3970Sstevel@tonic-gate #endif
3980Sstevel@tonic-gate 
3990Sstevel@tonic-gate #endif	/* _NFS_NFS_ACL_H */
400