nfs_prot.x revision 38879
11832Swollman/*
21832Swollman * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
31832Swollman * unrestricted use provided that this legend is included on all tape
41832Swollman * media and as a part of the software program in whole or part.  Users
51832Swollman * may copy or modify Sun RPC without charge, but are not authorized
61832Swollman * to license or distribute it to anyone else except as part of a product or
71832Swollman * program developed by the user.
81832Swollman *
91832Swollman * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
101832Swollman * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
111832Swollman * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
121832Swollman *
131832Swollman * Sun RPC is provided with no support and without any obligation on the
141832Swollman * part of Sun Microsystems, Inc. to assist in its use, correction,
151832Swollman * modification or enhancement.
161832Swollman *
171832Swollman * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
181832Swollman * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
191832Swollman * OR ANY PART THEREOF.
201832Swollman *
211832Swollman * In no event will Sun Microsystems, Inc. be liable for any lost revenue
221832Swollman * or profits or other special, indirect and consequential damages, even if
231832Swollman * Sun has been advised of the possibility of such damages.
241832Swollman *
251832Swollman * Sun Microsystems, Inc.
261832Swollman * 2550 Garcia Avenue
271832Swollman * Mountain View, California  94043
281832Swollman */
291832Swollman
301832Swollman#ifndef RPC_HDR
311832Swollman%#ifndef lint
321832Swollman%/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/
331832Swollman%/*static char sccsid[] = "from: @(#)nfs_prot.x	2.1 88/08/01 4.0 RPCSRC";*/
3438879Sobrien%static char rcsid[] = "$Id: nfs_prot.x,v 1.4 1997/04/18 12:31:27 dfr Exp $";
351832Swollman%#endif /* not lint */
361832Swollman#endif
371832Swollman
381832Swollmanconst NFS_PORT          = 2049;
391832Swollmanconst NFS_MAXDATA       = 8192;
401832Swollmanconst NFS_MAXPATHLEN    = 1024;
411832Swollmanconst NFS_MAXNAMLEN	= 255;
421832Swollmanconst NFS_FHSIZE	= 32;
431832Swollmanconst NFS_COOKIESIZE	= 4;
441832Swollmanconst NFS_FIFO_DEV	= -1;	/* size kludge for named pipes */
451832Swollman
461832Swollman/*
471832Swollman * File types
481832Swollman */
491832Swollmanconst NFSMODE_FMT  = 0170000;	/* type of file */
501832Swollmanconst NFSMODE_DIR  = 0040000;	/* directory */
511832Swollmanconst NFSMODE_CHR  = 0020000;	/* character special */
521832Swollmanconst NFSMODE_BLK  = 0060000;	/* block special */
531832Swollmanconst NFSMODE_REG  = 0100000;	/* regular */
541832Swollmanconst NFSMODE_LNK  = 0120000;	/* symbolic link */
551832Swollmanconst NFSMODE_SOCK = 0140000;	/* socket */
561832Swollmanconst NFSMODE_FIFO = 0010000;	/* fifo */
571832Swollman
581832Swollman/*
591832Swollman * Error status
601832Swollman */
611832Swollmanenum nfsstat {
621832Swollman	NFS_OK= 0,		/* no error */
631832Swollman	NFSERR_PERM=1,		/* Not owner */
641832Swollman	NFSERR_NOENT=2,		/* No such file or directory */
651832Swollman	NFSERR_IO=5,		/* I/O error */
661832Swollman	NFSERR_NXIO=6,		/* No such device or address */
671832Swollman	NFSERR_ACCES=13,	/* Permission denied */
681832Swollman	NFSERR_EXIST=17,	/* File exists */
691832Swollman	NFSERR_NODEV=19,	/* No such device */
701832Swollman	NFSERR_NOTDIR=20,	/* Not a directory*/
711832Swollman	NFSERR_ISDIR=21,	/* Is a directory */
721832Swollman	NFSERR_FBIG=27,		/* File too large */
731832Swollman	NFSERR_NOSPC=28,	/* No space left on device */
741832Swollman	NFSERR_ROFS=30,		/* Read-only file system */
751832Swollman	NFSERR_NAMETOOLONG=63,	/* File name too long */
761832Swollman	NFSERR_NOTEMPTY=66,	/* Directory not empty */
771832Swollman	NFSERR_DQUOT=69,	/* Disc quota exceeded */
781832Swollman	NFSERR_STALE=70,	/* Stale NFS file handle */
791832Swollman	NFSERR_WFLUSH=99	/* write cache flushed */
801832Swollman};
811832Swollman
821832Swollman/*
831832Swollman * File types
841832Swollman */
851832Swollmanenum ftype {
861832Swollman	NFNON = 0,	/* non-file */
871832Swollman	NFREG = 1,	/* regular file */
881832Swollman	NFDIR = 2,	/* directory */
891832Swollman	NFBLK = 3,	/* block special */
901832Swollman	NFCHR = 4,	/* character special */
911832Swollman	NFLNK = 5,	/* symbolic link */
921832Swollman	NFSOCK = 6,	/* unix domain sockets */
931832Swollman	NFBAD = 7,	/* unused */
941832Swollman	NFFIFO = 8 	/* named pipe */
951832Swollman};
961832Swollman
971832Swollman/*
981832Swollman * File access handle
991832Swollman */
1001832Swollmanstruct nfs_fh {
1011832Swollman	opaque data[NFS_FHSIZE];
1021832Swollman};
1031832Swollman
1041832Swollman/*
1051832Swollman * Timeval
1061832Swollman */
1071832Swollmanstruct nfstime {
1081832Swollman	unsigned seconds;
1091832Swollman	unsigned useconds;
1101832Swollman};
1111832Swollman
1121832Swollman
1131832Swollman/*
1141832Swollman * File attributes
1151832Swollman */
1161832Swollmanstruct fattr {
1171832Swollman	ftype type;		/* file type */
1181832Swollman	unsigned mode;		/* protection mode bits */
1191832Swollman	unsigned nlink;		/* # hard links */
1201832Swollman	unsigned uid;		/* owner user id */
1211832Swollman	unsigned gid;		/* owner group id */
1221832Swollman	unsigned size;		/* file size in bytes */
1231832Swollman	unsigned blocksize;	/* prefered block size */
1241832Swollman	unsigned rdev;		/* special device # */
1251832Swollman	unsigned blocks;	/* Kb of disk used by file */
1261832Swollman	unsigned fsid;		/* device # */
1271832Swollman	unsigned fileid;	/* inode # */
1281832Swollman	nfstime	atime;		/* time of last access */
1291832Swollman	nfstime	mtime;		/* time of last modification */
1301832Swollman	nfstime	ctime;		/* time of last change */
1311832Swollman};
1321832Swollman
1331832Swollman/*
1341832Swollman * File attributes which can be set
1351832Swollman */
1361832Swollmanstruct sattr {
1371832Swollman	unsigned mode;	/* protection mode bits */
1381832Swollman	unsigned uid;	/* owner user id */
1391832Swollman	unsigned gid;	/* owner group id */
1401832Swollman	unsigned size;	/* file size in bytes */
1411832Swollman	nfstime	atime;	/* time of last access */
1421832Swollman	nfstime	mtime;	/* time of last modification */
1431832Swollman};
1441832Swollman
1451832Swollman
1461832Swollmantypedef string filename<NFS_MAXNAMLEN>;
1471832Swollmantypedef string nfspath<NFS_MAXPATHLEN>;
1481832Swollman
1491832Swollman/*
1501832Swollman * Reply status with file attributes
1511832Swollman */
1521832Swollmanunion attrstat switch (nfsstat status) {
1531832Swollmancase NFS_OK:
1541832Swollman	fattr attributes;
1551832Swollmandefault:
1561832Swollman	void;
1571832Swollman};
1581832Swollman
1591832Swollmanstruct sattrargs {
1601832Swollman	nfs_fh file;
1611832Swollman	sattr attributes;
1621832Swollman};
1631832Swollman
1641832Swollman/*
1651832Swollman * Arguments for directory operations
1661832Swollman */
1671832Swollmanstruct diropargs {
1681832Swollman	nfs_fh	dir;	/* directory file handle */
1691832Swollman	filename name;		/* name (up to NFS_MAXNAMLEN bytes) */
1701832Swollman};
1711832Swollman
1721832Swollmanstruct diropokres {
1731832Swollman	nfs_fh file;
1741832Swollman	fattr attributes;
1751832Swollman};
1761832Swollman
1771832Swollman/*
1781832Swollman * Results from directory operation
1791832Swollman */
1801832Swollmanunion diropres switch (nfsstat status) {
1811832Swollmancase NFS_OK:
1821832Swollman	diropokres diropres;
1831832Swollmandefault:
1841832Swollman	void;
1851832Swollman};
1861832Swollman
1871832Swollmanunion readlinkres switch (nfsstat status) {
1881832Swollmancase NFS_OK:
1891832Swollman	nfspath data;
1901832Swollmandefault:
1911832Swollman	void;
1921832Swollman};
1931832Swollman
1941832Swollman/*
1951832Swollman * Arguments to remote read
1961832Swollman */
1971832Swollmanstruct readargs {
1981832Swollman	nfs_fh file;		/* handle for file */
1991832Swollman	unsigned offset;	/* byte offset in file */
2001832Swollman	unsigned count;		/* immediate read count */
2011832Swollman	unsigned totalcount;	/* total read count (from this offset)*/
2021832Swollman};
2031832Swollman
2041832Swollman/*
2051832Swollman * Status OK portion of remote read reply
2061832Swollman */
2071832Swollmanstruct readokres {
2081832Swollman	fattr	attributes;	/* attributes, need for pagin*/
2091832Swollman	opaque data<NFS_MAXDATA>;
2101832Swollman};
2111832Swollman
2121832Swollmanunion readres switch (nfsstat status) {
2131832Swollmancase NFS_OK:
2141832Swollman	readokres reply;
2151832Swollmandefault:
2161832Swollman	void;
2171832Swollman};
2181832Swollman
2191832Swollman/*
2201832Swollman * Arguments to remote write
2211832Swollman */
2221832Swollmanstruct writeargs {
2231832Swollman	nfs_fh	file;		/* handle for file */
2241832Swollman	unsigned beginoffset;	/* beginning byte offset in file */
2251832Swollman	unsigned offset;	/* current byte offset in file */
2261832Swollman	unsigned totalcount;	/* total write count (to this offset)*/
2271832Swollman	opaque data<NFS_MAXDATA>;
2281832Swollman};
2291832Swollman
2301832Swollmanstruct createargs {
2311832Swollman	diropargs where;
2321832Swollman	sattr attributes;
2331832Swollman};
2341832Swollman
2351832Swollmanstruct renameargs {
2361832Swollman	diropargs from;
2371832Swollman	diropargs to;
2381832Swollman};
2391832Swollman
2401832Swollmanstruct linkargs {
2411832Swollman	nfs_fh from;
2421832Swollman	diropargs to;
2431832Swollman};
2441832Swollman
2451832Swollmanstruct symlinkargs {
2461832Swollman	diropargs from;
2471832Swollman	nfspath to;
2481832Swollman	sattr attributes;
2491832Swollman};
2501832Swollman
2511832Swollman
2521832Swollmantypedef opaque nfscookie[NFS_COOKIESIZE];
2531832Swollman
2541832Swollman/*
2551832Swollman * Arguments to readdir
2561832Swollman */
2571832Swollmanstruct readdirargs {
2581832Swollman	nfs_fh dir;		/* directory handle */
2591832Swollman	nfscookie cookie;
2601832Swollman	unsigned count;		/* number of directory bytes to read */
2611832Swollman};
2621832Swollman
2631832Swollmanstruct entry {
2641832Swollman	unsigned fileid;
2651832Swollman	filename name;
2661832Swollman	nfscookie cookie;
2671832Swollman	entry *nextentry;
2681832Swollman};
2691832Swollman
2701832Swollmanstruct dirlist {
2711832Swollman	entry *entries;
2721832Swollman	bool eof;
2731832Swollman};
2741832Swollman
2751832Swollmanunion readdirres switch (nfsstat status) {
2761832Swollmancase NFS_OK:
2771832Swollman	dirlist reply;
2781832Swollmandefault:
2791832Swollman	void;
2801832Swollman};
2811832Swollman
2821832Swollmanstruct statfsokres {
2831832Swollman	unsigned tsize;	/* preferred transfer size in bytes */
2841832Swollman	unsigned bsize;	/* fundamental file system block size */
2851832Swollman	unsigned blocks;	/* total blocks in file system */
2861832Swollman	unsigned bfree;	/* free blocks in fs */
2871832Swollman	unsigned bavail;	/* free blocks avail to non-superuser */
2881832Swollman};
2891832Swollman
2901832Swollmanunion statfsres switch (nfsstat status) {
2911832Swollmancase NFS_OK:
2921832Swollman	statfsokres reply;
2931832Swollmandefault:
2941832Swollman	void;
2951832Swollman};
2961832Swollman
29725000Sdfr#ifdef WANT_NFS3
29825000Sdfr
2991832Swollman/*
30025000Sdfr * NFSv3 constants and types
30125000Sdfr */
30225000Sdfrconst NFS3_FHSIZE	= 64;	/* maximum size in bytes of a file handle */
30325000Sdfrconst NFS3_COOKIEVERFSIZE = 8;	/* size of a cookie verifier for READDIR */
30425000Sdfrconst NFS3_CREATEVERFSIZE = 8;	/* size of the verifier used for CREATE */
30525000Sdfrconst NFS3_WRITEVERFSIZE = 8;	/* size of the verifier used for WRITE */
30625000Sdfr
30725000Sdfrtypedef unsigned hyper uint64;
30825000Sdfrtypedef hyper int64;
30925000Sdfrtypedef unsigned long uint32;
31025000Sdfrtypedef long int32;
31125000Sdfrtypedef string filename3<>;
31225000Sdfrtypedef string nfspath3<>;
31325000Sdfrtypedef uint64 fileid3;
31425000Sdfrtypedef uint64 cookie3;
31525000Sdfrtypedef opaque cookieverf3[NFS3_COOKIEVERFSIZE];
31625000Sdfrtypedef opaque createverf3[NFS3_CREATEVERFSIZE];
31725000Sdfrtypedef opaque writeverf3[NFS3_WRITEVERFSIZE];
31825000Sdfrtypedef uint32 uid3;
31925000Sdfrtypedef uint32 gid3;
32025000Sdfrtypedef uint64 size3;
32125000Sdfrtypedef uint64 offset3;
32225000Sdfrtypedef uint32 mode3;
32325000Sdfrtypedef uint32 count3;
32425000Sdfr
32525000Sdfr/*
32625000Sdfr * Error status (v3)
32725000Sdfr */
32825000Sdfrenum nfsstat3 {
32925000Sdfr	NFS3_OK	= 0,
33025000Sdfr	NFS3ERR_PERM		= 1,
33125000Sdfr	NFS3ERR_NOENT		= 2,
33225000Sdfr	NFS3ERR_IO		= 5,
33325000Sdfr	NFS3ERR_NXIO		= 6,
33425000Sdfr	NFS3ERR_ACCES		= 13,
33525000Sdfr	NFS3ERR_EXIST		= 17,
33625000Sdfr	NFS3ERR_XDEV		= 18,
33725000Sdfr	NFS3ERR_NODEV		= 19,
33825000Sdfr	NFS3ERR_NOTDIR		= 20,
33925000Sdfr	NFS3ERR_ISDIR		= 21,
34025000Sdfr	NFS3ERR_INVAL		= 22,
34125000Sdfr	NFS3ERR_FBIG		= 27,
34225000Sdfr	NFS3ERR_NOSPC		= 28,
34325000Sdfr	NFS3ERR_ROFS		= 30,
34425000Sdfr	NFS3ERR_MLINK		= 31,
34525000Sdfr	NFS3ERR_NAMETOOLONG	= 63,
34625000Sdfr	NFS3ERR_NOTEMPTY	= 66,
34725000Sdfr	NFS3ERR_DQUOT		= 69,
34825000Sdfr	NFS3ERR_STALE		= 70,
34925000Sdfr	NFS3ERR_REMOTE		= 71,
35025000Sdfr	NFS3ERR_BADHANDLE	= 10001,
35125000Sdfr	NFS3ERR_NOT_SYNC	= 10002,
35225000Sdfr	NFS3ERR_BAD_COOKIE	= 10003,
35325000Sdfr	NFS3ERR_NOTSUPP		= 10004,
35425000Sdfr	NFS3ERR_TOOSMALL	= 10005,
35525000Sdfr	NFS3ERR_SERVERFAULT	= 10006,
35625000Sdfr	NFS3ERR_BADTYPE		= 10007,
35725000Sdfr	NFS3ERR_JUKEBOX		= 10008
35825000Sdfr};
35925000Sdfr
36025000Sdfr/*
36125000Sdfr * File types (v3)
36225000Sdfr */
36325000Sdfrenum ftype3 {
36425000Sdfr	NF3REG	= 1,		/* regular file */
36525000Sdfr	NF3DIR	= 2,		/* directory */
36625000Sdfr	NF3BLK	= 3,		/* block special */
36725000Sdfr	NF3CHR	= 4,		/* character special */
36825000Sdfr	NF3LNK	= 5,		/* symbolic link */
36925000Sdfr	NF3SOCK	= 6,		/* unix domain sockets */
37025000Sdfr	NF3FIFO	= 7		/* named pipe */
37125000Sdfr};
37225000Sdfr
37325000Sdfrstruct specdata3 {
37425000Sdfr	uint32	specdata1;
37525000Sdfr	uint32	specdata2;
37625000Sdfr};
37725000Sdfr
37825000Sdfr/*
37925000Sdfr * File access handle (v3)
38025000Sdfr */
38125000Sdfrstruct nfs_fh3 {
38225000Sdfr	opaque data<NFS3_FHSIZE>;
38325000Sdfr};
38425000Sdfr
38525000Sdfr/*
38625000Sdfr * Timeval (v3)
38725000Sdfr */
38825000Sdfrstruct nfstime3 {
38925000Sdfr	uint32	seconds;
39025000Sdfr	uint32	nseconds;
39125000Sdfr};
39225000Sdfr
39325000Sdfr
39425000Sdfr/*
39525000Sdfr * File attributes (v3)
39625000Sdfr */
39725000Sdfrstruct fattr3 {
39825000Sdfr	ftype3	type;		/* file type */
39925000Sdfr	mode3	mode;		/* protection mode bits */
40025000Sdfr	uint32	nlink;		/* # hard links */
40125000Sdfr	uid3	uid;		/* owner user id */
40225000Sdfr	gid3	gid;		/* owner group id */
40325000Sdfr	size3	size;		/* file size in bytes */
40425000Sdfr	size3	used;		/* prefered block size */
40525000Sdfr	specdata3 rdev;		/* special device # */
40625000Sdfr	uint64 fsid;		/* device # */
40725000Sdfr	fileid3	fileid;		/* inode # */
40825000Sdfr	nfstime3 atime;		/* time of last access */
40925000Sdfr	nfstime3 mtime;		/* time of last modification */
41025000Sdfr	nfstime3 ctime;		/* time of last change */
41125000Sdfr};
41225000Sdfr
41325000Sdfrunion post_op_attr switch (bool attributes_follow) {
41425000Sdfrcase TRUE:
41525000Sdfr	fattr3	attributes;
41625000Sdfrcase FALSE:
41725000Sdfr	void;
41825000Sdfr};
41925000Sdfr
42025000Sdfrstruct wcc_attr {
42125000Sdfr	size3	size;
42225000Sdfr	nfstime3 mtime;
42325000Sdfr	nfstime3 ctime;
42425000Sdfr};
42525000Sdfr
42625000Sdfrunion pre_op_attr switch (bool attributes_follow) {
42725000Sdfrcase TRUE:
42825000Sdfr	wcc_attr attributes;
42925000Sdfrcase FALSE:
43025000Sdfr	void;
43125000Sdfr};
43225000Sdfr
43325000Sdfrstruct wcc_data {
43425000Sdfr	pre_op_attr before;
43525000Sdfr	post_op_attr after;
43625000Sdfr};
43725000Sdfr
43825000Sdfrunion post_op_fh3 switch (bool handle_follows) {
43925000Sdfrcase TRUE:
44025000Sdfr	nfs_fh3	handle;
44125000Sdfrcase FALSE:
44225000Sdfr	void;
44325000Sdfr};
44425000Sdfr
44525000Sdfr/*
44625000Sdfr * File attributes which can be set (v3)
44725000Sdfr */
44825000Sdfrenum time_how {
44925000Sdfr	DONT_CHANGE		= 0,
45025000Sdfr	SET_TO_SERVER_TIME	= 1,
45125000Sdfr	SET_TO_CLIENT_TIME	= 2
45225000Sdfr};
45325000Sdfr
45425000Sdfrunion set_mode3 switch (bool set_it) {
45525000Sdfrcase TRUE:
45625000Sdfr	mode3	mode;
45725000Sdfrdefault:
45825000Sdfr	void;
45925000Sdfr};
46025000Sdfr
46125000Sdfrunion set_uid3 switch (bool set_it) {
46225000Sdfrcase TRUE:
46338879Sobrien	uid3	uid;
46425000Sdfrdefault:
46525000Sdfr	void;
46625000Sdfr};
46725000Sdfr
46825000Sdfrunion set_gid3 switch (bool set_it) {
46925000Sdfrcase TRUE:
47038879Sobrien	gid3	gid;
47125000Sdfrdefault:
47225000Sdfr	void;
47325000Sdfr};
47425000Sdfr
47525000Sdfrunion set_size3 switch (bool set_it) {
47625000Sdfrcase TRUE:
47738879Sobrien	size3	size;
47825000Sdfrdefault:
47925000Sdfr	void;
48025000Sdfr};
48125000Sdfr
48225000Sdfrunion set_atime switch (time_how set_it) {
48325000Sdfrcase SET_TO_CLIENT_TIME:
48438879Sobrien	nfstime3	atime;
48525000Sdfrdefault:
48625000Sdfr	void;
48725000Sdfr};
48825000Sdfr
48925000Sdfrunion set_mtime switch (time_how set_it) {
49025000Sdfrcase SET_TO_CLIENT_TIME:
49138879Sobrien	nfstime3	mtime;
49225000Sdfrdefault:
49325000Sdfr	void;
49425000Sdfr};
49525000Sdfr
49625000Sdfrstruct sattr3 {
49725000Sdfr	set_mode3	mode;
49825000Sdfr	set_uid3	uid;
49925000Sdfr	set_gid3	gid;
50025000Sdfr	set_size3	size;
50125000Sdfr	set_atime	atime;
50225000Sdfr	set_mtime	mtime;
50325000Sdfr};
50425000Sdfr
50525000Sdfr/*
50625000Sdfr * Arguments for directory operations (v3)
50725000Sdfr */
50825000Sdfrstruct diropargs3 {
50925000Sdfr	nfs_fh3	dir;		/* directory file handle */
51025000Sdfr	filename3 name;		/* name (up to NFS_MAXNAMLEN bytes) */
51125000Sdfr};
51225000Sdfr
51325000Sdfr/*
51425000Sdfr * Arguments to getattr (v3).
51525000Sdfr */
51625000Sdfrstruct GETATTR3args {
51725000Sdfr	nfs_fh3		object;
51825000Sdfr};
51925000Sdfr
52025000Sdfrstruct GETATTR3resok {
52125000Sdfr	fattr3		obj_attributes;
52225000Sdfr};
52325000Sdfr
52425000Sdfrunion GETATTR3res switch (nfsstat3 status) {
52525000Sdfrcase NFS3_OK:
52625000Sdfr	GETATTR3resok	resok;
52725000Sdfrdefault:
52825000Sdfr	void;
52925000Sdfr};
53025000Sdfr
53125000Sdfr/*
53225000Sdfr * Arguments to setattr (v3).
53325000Sdfr */
53425000Sdfrunion sattrguard3 switch (bool check) {
53525000Sdfrcase TRUE:
53625000Sdfr	nfstime3	obj_ctime;
53725000Sdfrcase FALSE:
53825000Sdfr	void;
53925000Sdfr};
54025000Sdfr
54125000Sdfrstruct SETATTR3args {
54225000Sdfr	nfs_fh3		object;
54325000Sdfr	sattr3		new_attributes;
54425000Sdfr	sattrguard3	guard;
54525000Sdfr};
54625000Sdfr
54725000Sdfrstruct SETATTR3resok {
54825000Sdfr	wcc_data	obj_wcc;
54925000Sdfr};
55025000Sdfr
55125000Sdfrstruct SETATTR3resfail {
55225000Sdfr	wcc_data	obj_wcc;
55325000Sdfr};
55425000Sdfr
55525000Sdfrunion SETATTR3res switch (nfsstat3 status) {
55625000Sdfrcase NFS3_OK:
55725000Sdfr	SETATTR3resok	resok;
55825000Sdfrdefault:
55925000Sdfr	SETATTR3resfail	resfail;
56025000Sdfr};
56125000Sdfr
56225000Sdfr/*
56325000Sdfr * Arguments to lookup (v3).
56425000Sdfr */
56525000Sdfrstruct LOOKUP3args {
56625000Sdfr	diropargs3	what;
56725000Sdfr};
56825000Sdfr
56925000Sdfrstruct LOOKUP3resok {
57025000Sdfr	nfs_fh3		object;
57125000Sdfr	post_op_attr	obj_attributes;
57225000Sdfr	post_op_attr	dir_attributes;
57325000Sdfr};
57425000Sdfr
57525000Sdfrstruct LOOKUP3resfail {
57625000Sdfr	post_op_attr	dir_attributes;
57725000Sdfr};
57825000Sdfr
57925000Sdfrunion LOOKUP3res switch (nfsstat3 status) {
58025000Sdfrcase NFS3_OK:
58125000Sdfr	LOOKUP3resok	resok;
58225000Sdfrdefault:
58325000Sdfr	LOOKUP3resfail	resfail;
58425000Sdfr};
58525000Sdfr
58625000Sdfr/*
58725000Sdfr * Arguments to access (v3).
58825000Sdfr */
58925000Sdfrconst ACCESS3_READ	= 0x0001;
59025000Sdfrconst ACCESS3_LOOKUP	= 0x0002;
59125000Sdfrconst ACCESS3_MODIFY	= 0x0004;
59225000Sdfrconst ACCESS3_EXTEND	= 0x0008;
59325000Sdfrconst ACCESS3_DELETE	= 0x0010;
59425000Sdfrconst ACCESS3_EXECUTE	= 0x0020;
59525000Sdfr
59625000Sdfrstruct ACCESS3args {
59725000Sdfr	nfs_fh3		object;
59825000Sdfr	uint32		access;
59925000Sdfr};
60025000Sdfr
60125000Sdfrstruct ACCESS3resok {
60225000Sdfr	post_op_attr	obj_attributes;
60325000Sdfr	uint32		access;
60425000Sdfr};
60525000Sdfr
60625000Sdfrstruct ACCESS3resfail {
60725000Sdfr	post_op_attr	obj_attributes;
60825000Sdfr};
60925000Sdfr
61025000Sdfrunion ACCESS3res switch (nfsstat3 status) {
61125000Sdfrcase NFS3_OK:
61225000Sdfr	ACCESS3resok	resok;
61325000Sdfrdefault:
61425000Sdfr	ACCESS3resfail	resfail;
61525000Sdfr};
61625000Sdfr
61725000Sdfr/*
61825000Sdfr * Arguments to readlink (v3).
61925000Sdfr */
62025000Sdfrstruct READLINK3args {
62125000Sdfr	nfs_fh3		symlink;
62225000Sdfr};
62325000Sdfr
62425000Sdfrstruct READLINK3resok {
62525000Sdfr	post_op_attr	symlink_attributes;
62625000Sdfr	nfspath3	data;
62725000Sdfr};
62825000Sdfr
62925000Sdfrstruct READLINK3resfail {
63025000Sdfr	post_op_attr	symlink_attributes;
63125000Sdfr};
63225000Sdfr
63325000Sdfrunion READLINK3res switch (nfsstat3 status) {
63425000Sdfrcase NFS3_OK:
63525000Sdfr	READLINK3resok	resok;
63625000Sdfrdefault:
63725000Sdfr	READLINK3resfail resfail;
63825000Sdfr};
63925000Sdfr
64025000Sdfr/*
64125000Sdfr * Arguments to read (v3).
64225000Sdfr */
64325000Sdfrstruct READ3args {
64425000Sdfr	nfs_fh3		file;
64525000Sdfr	offset3		offset;
64625000Sdfr	count3		count;
64725000Sdfr};
64825000Sdfr
64925000Sdfrstruct READ3resok {
65025000Sdfr	post_op_attr	file_attributes;
65125000Sdfr	count3		count;
65225000Sdfr	bool		eof;
65325000Sdfr	opaque		data<>;
65425000Sdfr};
65525000Sdfr
65625000Sdfrstruct READ3resfail {
65725000Sdfr	post_op_attr	file_attributes;
65825000Sdfr};
65925000Sdfr
66038879Sobrien/* XXX: solaris 2.6 uses ``nfsstat'' here */
66125000Sdfrunion READ3res switch (nfsstat3 status) {
66225000Sdfrcase NFS3_OK:
66325000Sdfr	READ3resok	resok;
66425000Sdfrdefault:
66525000Sdfr	READ3resfail	resfail;
66625000Sdfr};
66725000Sdfr
66825000Sdfr/*
66925000Sdfr * Arguments to write (v3).
67025000Sdfr */
67125000Sdfrenum stable_how {
67225000Sdfr	UNSTABLE	= 0,
67325000Sdfr	DATA_SYNC	= 1,
67425000Sdfr	FILE_SYNC	= 2
67525000Sdfr};
67625000Sdfr
67725000Sdfrstruct WRITE3args {
67825000Sdfr	nfs_fh3		file;
67925000Sdfr	offset3		offset;
68025000Sdfr	count3		count;
68125000Sdfr	stable_how	stable;
68225000Sdfr	opaque		data<>;
68325000Sdfr};
68425000Sdfr
68525000Sdfrstruct WRITE3resok {
68625000Sdfr	wcc_data	file_wcc;
68725000Sdfr	count3		count;
68838879Sobrien	stable_how	committed;
68925000Sdfr	writeverf3	verf;
69025000Sdfr};
69125000Sdfr
69225000Sdfrstruct WRITE3resfail {
69325000Sdfr	wcc_data	file_wcc;
69425000Sdfr};
69525000Sdfr
69625000Sdfrunion WRITE3res switch (nfsstat3 status) {
69725000Sdfrcase NFS3_OK:
69825000Sdfr	WRITE3resok	resok;
69925000Sdfrdefault:
70025000Sdfr	WRITE3resfail	resfail;
70125000Sdfr};
70225000Sdfr
70325000Sdfr/*
70425000Sdfr * Arguments to create (v3).
70525000Sdfr */
70625000Sdfrenum createmode3 {
70725000Sdfr	UNCHECKED	= 0,
70825000Sdfr	GUARDED		= 1,
70925000Sdfr	EXCLUSIVE	= 2
71025000Sdfr};
71125000Sdfr
71225000Sdfrunion createhow3 switch (createmode3 mode) {
71325000Sdfrcase UNCHECKED:
71425000Sdfrcase GUARDED:
71525000Sdfr	sattr3		obj_attributes;
71625000Sdfrcase EXCLUSIVE:
71725000Sdfr	createverf3	verf;
71825000Sdfr};
71925000Sdfr
72025000Sdfrstruct CREATE3args {
72125000Sdfr	diropargs3	where;
72225000Sdfr	createhow3	how;
72325000Sdfr};
72425000Sdfr
72525000Sdfrstruct CREATE3resok {
72625000Sdfr	post_op_fh3	obj;
72725000Sdfr	post_op_attr	obj_attributes;
72825000Sdfr	wcc_data	dir_wcc;
72925000Sdfr};
73025000Sdfr
73125000Sdfrstruct CREATE3resfail {
73225000Sdfr	wcc_data	dir_wcc;
73325000Sdfr};
73425000Sdfr
73525000Sdfrunion CREATE3res switch (nfsstat3 status) {
73625000Sdfrcase NFS3_OK:
73725000Sdfr	CREATE3resok	resok;
73825000Sdfrdefault:
73925000Sdfr	CREATE3resfail	resfail;
74025000Sdfr};
74125000Sdfr
74225000Sdfr/*
74325000Sdfr * Arguments to mkdir (v3).
74425000Sdfr */
74525000Sdfrstruct MKDIR3args {
74625000Sdfr	diropargs3	where;
74725000Sdfr	sattr3		attributes;
74825000Sdfr};
74925000Sdfr
75025000Sdfrstruct MKDIR3resok {
75125000Sdfr	post_op_fh3	obj;
75225000Sdfr	post_op_attr	obj_attributes;
75325000Sdfr	wcc_data	dir_wcc;
75425000Sdfr};
75525000Sdfr
75625000Sdfrstruct MKDIR3resfail {
75725000Sdfr	wcc_data	dir_wcc;
75825000Sdfr};
75925000Sdfr
76025000Sdfrunion MKDIR3res switch (nfsstat3 status) {
76125000Sdfrcase NFS3_OK:
76225000Sdfr	MKDIR3resok	resok;
76325000Sdfrdefault:
76425000Sdfr	MKDIR3resfail	resfail;
76525000Sdfr};
76625000Sdfr
76725000Sdfr/*
76825000Sdfr * Arguments to symlink (v3).
76925000Sdfr */
77025000Sdfrstruct symlinkdata3 {
77125000Sdfr	sattr3		symlink_attributes;
77225000Sdfr	nfspath3	symlink_data;
77325000Sdfr};
77425000Sdfr
77525000Sdfrstruct SYMLINK3args {
77625000Sdfr	diropargs3	where;
77725000Sdfr	symlinkdata3	symlink;
77825000Sdfr};
77925000Sdfr
78025000Sdfrstruct SYMLINK3resok {
78125000Sdfr	post_op_fh3	obj;
78225000Sdfr	post_op_attr	obj_attributes;
78325000Sdfr	wcc_data	dir_wcc;
78425000Sdfr};
78525000Sdfr
78625000Sdfrstruct SYMLINK3resfail {
78725000Sdfr	wcc_data	dir_wcc;
78825000Sdfr};
78925000Sdfr
79025000Sdfrunion SYMLINK3res switch (nfsstat3 status) {
79125000Sdfrcase NFS3_OK:
79225000Sdfr	SYMLINK3resok	resok;
79325000Sdfrdefault:
79425000Sdfr	SYMLINK3resfail	resfail;
79525000Sdfr};
79625000Sdfr
79725000Sdfr/*
79825000Sdfr * Arguments to mknod (v3).
79925000Sdfr */
80025000Sdfrstruct devicedata3 {
80125000Sdfr	sattr3		dev_attributes;
80225000Sdfr	specdata3	spec;
80325000Sdfr};
80425000Sdfr
80525000Sdfrunion mknoddata3 switch (ftype3 type) {
80625000Sdfrcase NF3CHR:
80725000Sdfrcase NF3BLK:
80825000Sdfr	devicedata3	device;
80925000Sdfrcase NF3SOCK:
81025000Sdfrcase NF3FIFO:
81125000Sdfr	sattr3		pipe_attributes;
81225000Sdfrdefault:
81325000Sdfr	void;
81425000Sdfr};
81525000Sdfr
81625000Sdfrstruct MKNOD3args {
81725000Sdfr	diropargs3	where;
81825000Sdfr	mknoddata3	what;
81925000Sdfr};
82025000Sdfr
82125000Sdfrstruct MKNOD3resok {
82225000Sdfr	post_op_fh3	obj;
82325000Sdfr	post_op_attr	obj_attributes;
82425000Sdfr	wcc_data	dir_wcc;
82525000Sdfr};
82625000Sdfr
82725000Sdfrstruct MKNOD3resfail {
82825000Sdfr	wcc_data	dir_wcc;
82925000Sdfr};
83025000Sdfr
83125000Sdfrunion MKNOD3res switch (nfsstat3 status) {
83225000Sdfrcase NFS3_OK:
83325000Sdfr	MKNOD3resok	resok;
83425000Sdfrdefault:
83525000Sdfr	MKNOD3resfail	resfail;
83625000Sdfr};
83725000Sdfr
83825000Sdfr/*
83925000Sdfr * Arguments to remove (v3).
84025000Sdfr */
84125000Sdfrstruct REMOVE3args {
84225000Sdfr	diropargs3	object;
84325000Sdfr};
84425000Sdfr
84525000Sdfrstruct REMOVE3resok {
84625000Sdfr	wcc_data	dir_wcc;
84725000Sdfr};
84825000Sdfr
84925000Sdfrstruct REMOVE3resfail {
85025000Sdfr	wcc_data	dir_wcc;
85125000Sdfr};
85225000Sdfr
85325000Sdfrunion REMOVE3res switch (nfsstat3 status) {
85425000Sdfrcase NFS3_OK:
85525000Sdfr	REMOVE3resok	resok;
85625000Sdfrdefault:
85725000Sdfr	REMOVE3resfail	resfail;
85825000Sdfr};
85925000Sdfr
86025000Sdfr/*
86125000Sdfr * Arguments to rmdir (v3).
86225000Sdfr */
86325000Sdfrstruct RMDIR3args {
86425000Sdfr	diropargs3	object;
86525000Sdfr};
86625000Sdfr
86725000Sdfrstruct RMDIR3resok {
86825000Sdfr	wcc_data	dir_wcc;
86925000Sdfr};
87025000Sdfr
87125000Sdfrstruct RMDIR3resfail {
87225000Sdfr	wcc_data	dir_wcc;
87325000Sdfr};
87425000Sdfr
87525000Sdfrunion RMDIR3res switch (nfsstat3 status) {
87625000Sdfrcase NFS3_OK:
87725000Sdfr	RMDIR3resok	resok;
87825000Sdfrdefault:
87925000Sdfr	RMDIR3resfail	resfail;
88025000Sdfr};
88125000Sdfr
88225000Sdfr/*
88325000Sdfr * Arguments to rename (v3).
88425000Sdfr */
88525000Sdfrstruct RENAME3args {
88625000Sdfr	diropargs3	from;
88725000Sdfr	diropargs3	to;
88825000Sdfr};
88925000Sdfr
89025000Sdfrstruct RENAME3resok {
89125000Sdfr	wcc_data	fromdir_wcc;
89225000Sdfr	wcc_data	todir_wcc;
89325000Sdfr};
89425000Sdfr
89525000Sdfrstruct RENAME3resfail {
89625000Sdfr	wcc_data	fromdir_wcc;
89725000Sdfr	wcc_data	todir_wcc;
89825000Sdfr};
89925000Sdfr
90025000Sdfrunion RENAME3res switch (nfsstat3 status) {
90125000Sdfrcase NFS3_OK:
90225000Sdfr	RENAME3resok	resok;
90325000Sdfrdefault:
90425000Sdfr	RENAME3resfail	resfail;
90525000Sdfr};
90625000Sdfr
90725000Sdfr/*
90825000Sdfr * Arguments to link (v3).
90925000Sdfr */
91025000Sdfrstruct LINK3args {
91125000Sdfr	nfs_fh3		file;
91225000Sdfr	diropargs3	link;
91325000Sdfr};
91425000Sdfr
91525000Sdfrstruct LINK3resok {
91625000Sdfr	post_op_attr	file_attributes;
91725000Sdfr	wcc_data	linkdir_wcc;
91825000Sdfr};
91925000Sdfr
92025000Sdfrstruct LINK3resfail {
92125000Sdfr	post_op_attr	file_attributes;
92225000Sdfr	wcc_data	linkdir_wcc;
92325000Sdfr};
92425000Sdfr
92525000Sdfrunion LINK3res switch (nfsstat3 status) {
92625000Sdfrcase NFS3_OK:
92725000Sdfr	LINK3resok	resok;
92825000Sdfrdefault:
92925000Sdfr	LINK3resfail	resfail;
93025000Sdfr};
93125000Sdfr
93225000Sdfr/*
93325000Sdfr * Arguments to readdir (v3).
93425000Sdfr */
93525000Sdfrstruct READDIR3args {
93625000Sdfr	nfs_fh3		dir;
93725000Sdfr	cookie3		cookie;
93825000Sdfr	cookieverf3	cookieverf;
93925000Sdfr	count3		count;
94025000Sdfr};
94125000Sdfr
94225000Sdfrstruct entry3 {
94325000Sdfr	fileid3		fileid;
94425000Sdfr	filename3	name;
94525000Sdfr	cookie3		cookie;
94625000Sdfr	entry3		*nextentry;
94725000Sdfr};
94825000Sdfr
94925000Sdfrstruct dirlist3 {
95025000Sdfr	entry3		*entries;
95125000Sdfr	bool		eof;
95225000Sdfr};
95325000Sdfr
95425000Sdfrstruct READDIR3resok {
95525000Sdfr	post_op_attr	dir_attributes;
95625000Sdfr	cookieverf3	cookieverf;
95725000Sdfr	dirlist3	reply;
95825000Sdfr};
95925000Sdfr
96025000Sdfrstruct READDIR3resfail {
96125000Sdfr	post_op_attr	dir_attributes;
96225000Sdfr};
96325000Sdfr
96425000Sdfrunion READDIR3res switch (nfsstat3 status) {
96525000Sdfrcase NFS3_OK:
96625000Sdfr	READDIR3resok	resok;
96725000Sdfrdefault:
96825000Sdfr	READDIR3resfail	resfail;
96925000Sdfr};
97025000Sdfr
97125000Sdfr/*
97225000Sdfr * Arguments to readdirplus (v3).
97325000Sdfr */
97425000Sdfrstruct READDIRPLUS3args {
97525000Sdfr	nfs_fh3		dir;
97625000Sdfr	cookie3		cookie;
97725000Sdfr	cookieverf3	cookieverf;
97825000Sdfr	count3		dircount;
97925000Sdfr	count3		maxcount;
98025000Sdfr};
98125000Sdfr
98225000Sdfrstruct entryplus3 {
98325000Sdfr	fileid3		fileid;
98425000Sdfr	filename3	name;
98525000Sdfr	cookie3		cookie;
98625000Sdfr	post_op_attr	name_attributes;
98725000Sdfr	post_op_fh3	name_handle;
98825000Sdfr	entryplus3	*nextentry;
98925000Sdfr};
99025000Sdfr
99125000Sdfrstruct dirlistplus3 {
99225000Sdfr	entryplus3	*entries;
99325000Sdfr	bool		eof;
99425000Sdfr};
99525000Sdfr
99625000Sdfrstruct READDIRPLUS3resok {
99725000Sdfr	post_op_attr	dir_attributes;
99825000Sdfr	cookieverf3	cookieverf;
99925000Sdfr	dirlistplus3	reply;
100025000Sdfr};
100125000Sdfr
100225000Sdfrstruct READDIRPLUS3resfail {
100325000Sdfr	post_op_attr	dir_attributes;
100425000Sdfr};
100525000Sdfr
100625000Sdfrunion READDIRPLUS3res switch (nfsstat3 status) {
100725000Sdfrcase NFS3_OK:
100825000Sdfr	READDIRPLUS3resok	resok;
100925000Sdfrdefault:
101025000Sdfr	READDIRPLUS3resfail	resfail;
101125000Sdfr};
101225000Sdfr
101325000Sdfr/*
101425000Sdfr * Arguments to fsstat (v3).
101525000Sdfr */
101625000Sdfrstruct FSSTAT3args {
101725000Sdfr	nfs_fh3		fsroot;
101825000Sdfr};
101925000Sdfr
102025000Sdfrstruct FSSTAT3resok {
102125000Sdfr	post_op_attr	obj_attributes;
102225000Sdfr	size3		tbytes;
102325000Sdfr	size3		fbytes;
102425000Sdfr	size3		abytes;
102525000Sdfr	size3		tfiles;
102625000Sdfr	size3		ffiles;
102725000Sdfr	size3		afiles;
102825000Sdfr	uint32		invarsec;
102925000Sdfr};
103025000Sdfr
103125000Sdfrstruct FSSTAT3resfail {
103225000Sdfr	post_op_attr	obj_attributes;
103325000Sdfr};
103425000Sdfr
103525000Sdfrunion FSSTAT3res switch (nfsstat3 status) {
103625000Sdfrcase NFS3_OK:
103725000Sdfr	FSSTAT3resok	resok;
103825000Sdfrdefault:
103925000Sdfr	FSSTAT3resfail	resfail;
104025000Sdfr};
104125000Sdfr
104225000Sdfr/*
104325000Sdfr * Arguments to fsinfo (v3).
104425000Sdfr */
104525000Sdfrconst FSF3_LINK		= 0x0001;
104625000Sdfrconst FSF3_SYMLINK	= 0x0002;
104725000Sdfrconst FSF3_HOMOGENEOUS	= 0x0008;
104825000Sdfrconst FSF3_CANSETTIME	= 0x0010;
104925000Sdfr
105025000Sdfrstruct FSINFO3args {
105125000Sdfr	nfs_fh3		fsroot;
105225000Sdfr};
105325000Sdfr
105425000Sdfrstruct FSINFO3resok {
105525000Sdfr	post_op_attr	obj_attributes;
105625000Sdfr	uint32		rtmax;
105725000Sdfr	uint32		rtpref;
105825000Sdfr	uint32		rtmult;
105925000Sdfr	uint32		wtmax;
106025000Sdfr	uint32		wtpref;
106125000Sdfr	uint32		wtmult;
106225000Sdfr	uint32		dtpref;
106325000Sdfr	size3		maxfilesize;
106425000Sdfr	nfstime3	time_delta;
106525000Sdfr	uint32		properties;
106625000Sdfr};
106725000Sdfr
106825000Sdfrstruct FSINFO3resfail {
106925000Sdfr	post_op_attr	obj_attributes;
107025000Sdfr};
107125000Sdfr
107225000Sdfrunion FSINFO3res switch (nfsstat3 status) {
107325000Sdfrcase NFS3_OK:
107425000Sdfr	FSINFO3resok	resok;
107525000Sdfrdefault:
107625000Sdfr	FSINFO3resfail	resfail;
107725000Sdfr};
107825000Sdfr
107925000Sdfr/*
108025000Sdfr * Arguments to pathconf (v3).
108125000Sdfr */
108225000Sdfrstruct PATHCONF3args {
108325000Sdfr	nfs_fh3		object;
108425000Sdfr};
108525000Sdfr
108625000Sdfrstruct PATHCONF3resok {
108725000Sdfr	post_op_attr	obj_attributes;
108825000Sdfr	uint32		linkmax;
108925000Sdfr	uint32		name_max;
109025000Sdfr	bool		no_trunc;
109125000Sdfr	bool		chown_restricted;
109225000Sdfr	bool		case_insensitive;
109325000Sdfr	bool		case_preserving;
109425000Sdfr};
109525000Sdfr
109625000Sdfrstruct PATHCONF3resfail {
109725000Sdfr	post_op_attr	obj_attributes;
109825000Sdfr};
109925000Sdfr
110025000Sdfrunion PATHCONF3res switch (nfsstat3 status) {
110125000Sdfrcase NFS3_OK:
110238879Sobrien	PATHCONF3resok	resok;
110325000Sdfrdefault:
110438879Sobrien	PATHCONF3resfail	resfail;
110525000Sdfr};
110625000Sdfr
110725000Sdfr/*
110825000Sdfr * Arguments to commit (v3).
110925000Sdfr */
111025000Sdfrstruct COMMIT3args {
111125000Sdfr	nfs_fh3		file;
111225000Sdfr	offset3		offset;
111325000Sdfr	count3		count;
111425000Sdfr};
111525000Sdfr
111625000Sdfrstruct COMMIT3resok {
111725000Sdfr	wcc_data	file_wcc;
111825000Sdfr	writeverf3	verf;
111925000Sdfr};
112025000Sdfr
112125000Sdfrstruct COMMIT3resfail {
112225000Sdfr	wcc_data	file_wcc;
112325000Sdfr};
112425000Sdfr
112525000Sdfrunion COMMIT3res switch (nfsstat3 status) {
112625000Sdfrcase NFS3_OK:
112738879Sobrien	COMMIT3resok	resok;
112825000Sdfrdefault:
112938879Sobrien	COMMIT3resfail	resfail;
113025000Sdfr};
113125000Sdfr
113225000Sdfr#endif /* WANT_NFS3 */
113325000Sdfr
113425000Sdfr/*
11351832Swollman * Remote file service routines
11361832Swollman */
11371832Swollmanprogram NFS_PROGRAM {
11381832Swollman	version NFS_VERSION {
11391832Swollman		void
11401832Swollman		NFSPROC_NULL(void) = 0;
11411832Swollman
11421832Swollman		attrstat
11431832Swollman		NFSPROC_GETATTR(nfs_fh) =	1;
11441832Swollman
11451832Swollman		attrstat
11461832Swollman		NFSPROC_SETATTR(sattrargs) = 2;
11471832Swollman
11481832Swollman		void
11491832Swollman		NFSPROC_ROOT(void) = 3;
11501832Swollman
11511832Swollman		diropres
11521832Swollman		NFSPROC_LOOKUP(diropargs) = 4;
11531832Swollman
11541832Swollman		readlinkres
11551832Swollman		NFSPROC_READLINK(nfs_fh) = 5;
11561832Swollman
11571832Swollman		readres
11581832Swollman		NFSPROC_READ(readargs) = 6;
11591832Swollman
11601832Swollman		void
11611832Swollman		NFSPROC_WRITECACHE(void) = 7;
11621832Swollman
11631832Swollman		attrstat
11641832Swollman		NFSPROC_WRITE(writeargs) = 8;
11651832Swollman
11661832Swollman		diropres
11671832Swollman		NFSPROC_CREATE(createargs) = 9;
11681832Swollman
11691832Swollman		nfsstat
11701832Swollman		NFSPROC_REMOVE(diropargs) = 10;
11711832Swollman
11721832Swollman		nfsstat
11731832Swollman		NFSPROC_RENAME(renameargs) = 11;
11741832Swollman
11751832Swollman		nfsstat
11761832Swollman		NFSPROC_LINK(linkargs) = 12;
11771832Swollman
11781832Swollman		nfsstat
11791832Swollman		NFSPROC_SYMLINK(symlinkargs) = 13;
11801832Swollman
11811832Swollman		diropres
11821832Swollman		NFSPROC_MKDIR(createargs) = 14;
11831832Swollman
11841832Swollman		nfsstat
11851832Swollman		NFSPROC_RMDIR(diropargs) = 15;
11861832Swollman
11871832Swollman		readdirres
11881832Swollman		NFSPROC_READDIR(readdirargs) = 16;
11891832Swollman
11901832Swollman		statfsres
11911832Swollman		NFSPROC_STATFS(nfs_fh) = 17;
11921832Swollman	} = 2;
119338879Sobrien} = 100003;
119425000Sdfr#ifdef WANT_NFS3
119538879Sobrienprogram NFS3_PROGRAM {
119625000Sdfr	version NFS_V3 {
119725000Sdfr		void
119825000Sdfr		NFSPROC3_NULL(void)			= 0;
119925000Sdfr
120025000Sdfr		GETATTR3res
120125000Sdfr		NFSPROC3_GETATTR(GETATTR3args)		= 1;
120225000Sdfr
120325000Sdfr		SETATTR3res
120425000Sdfr		NFSPROC3_SETATTR(SETATTR3args)		= 2;
120525000Sdfr
120625000Sdfr		LOOKUP3res
120725000Sdfr		NFSPROC3_LOOKUP(LOOKUP3args)		= 3;
120825000Sdfr
120925000Sdfr		ACCESS3res
121025000Sdfr		NFSPROC3_ACCESS(ACCESS3args)		= 4;
121125000Sdfr
121225000Sdfr		READLINK3res
121325000Sdfr		NFSPROC3_READLINK(READLINK3args)	= 5;
121425000Sdfr
121525000Sdfr		READ3res
121625000Sdfr		NFSPROC3_READ(READ3args)		= 6;
121725000Sdfr
121825000Sdfr		WRITE3res
121925000Sdfr		NFSPROC3_WRITE(WRITE3args)		= 7;
122025000Sdfr
122125000Sdfr		CREATE3res
122225000Sdfr		NFSPROC3_CREATE(CREATE3args)		= 8;
122325000Sdfr
122425000Sdfr		MKDIR3res
122525000Sdfr		NFSPROC3_MKDIR(MKDIR3args)		= 9;
122625000Sdfr
122725000Sdfr		SYMLINK3res
122825000Sdfr		NFSPROC3_SYMLINK(SYMLINK3args)		= 10;
122925000Sdfr
123025000Sdfr		MKNOD3res
123125000Sdfr		NFSPROC3_MKNOD(MKNOD3args)		= 11;
123225000Sdfr
123325000Sdfr		REMOVE3res
123425000Sdfr		NFSPROC3_REMOVE(REMOVE3args)		= 12;
123525000Sdfr
123625000Sdfr		RMDIR3res
123725000Sdfr		NFSPROC3_RMDIR(RMDIR3args)		= 13;
123825000Sdfr
123925000Sdfr		RENAME3res
124025000Sdfr		NFSPROC3_RENAME(RENAME3args)		= 14;
124125000Sdfr
124225000Sdfr		LINK3res
124325000Sdfr		NFSPROC3_LINK(LINK3args)		= 15;
124425000Sdfr
124525000Sdfr		READDIR3res
124625000Sdfr		NFSPROC3_READDIR(READDIR3args)		= 16;
124725000Sdfr
124825000Sdfr		READDIRPLUS3res
124925000Sdfr		NFSPROC3_READDIRPLUS(READDIRPLUS3args)	= 17;
125025000Sdfr
125125000Sdfr		FSSTAT3res
125225000Sdfr		NFSPROC3_FSSTAT(FSSTAT3args)		= 18;
125325000Sdfr
125425000Sdfr		FSINFO3res
125525000Sdfr		NFSPROC3_FSINFO(FSINFO3args)		= 19;
125625000Sdfr
125725000Sdfr		PATHCONF3res
125825000Sdfr		NFSPROC3_PATHCONF(PATHCONF3args)	= 20;
125925000Sdfr
126025000Sdfr		COMMIT3res
126125000Sdfr		NFSPROC3_COMMIT(COMMIT3args)		= 21;
126238879Sobrien	} = 3;
126338879Sobrien} = 100003;
126425000Sdfr#endif
12651832Swollman
1266