xref: /csrg-svn/usr.sbin/amd/rpcx/nfs_prot.h (revision 44928)
1*44928Smckusick /*
2*44928Smckusick  * $Id: nfs_prot.h,v 5.2 90/06/23 22:20:24 jsp Rel $
3*44928Smckusick  *
4*44928Smckusick  * Copyright (c) 1990 Jan-Simon Pendry
5*44928Smckusick  * Copyright (c) 1990 Imperial College of Science, Technology & Medicine
6*44928Smckusick  * Copyright (c) 1990 The Regents of the University of California.
7*44928Smckusick  * All rights reserved.
8*44928Smckusick  *
9*44928Smckusick  * This code is derived from software contributed to Berkeley by
10*44928Smckusick  * Jan-Simon Pendry at Imperial College, London.
11*44928Smckusick  *
12*44928Smckusick  * %sccs.include.redist.c%
13*44928Smckusick  *
14*44928Smckusick  *	@(#)nfs_prot.h	5.1 (Berkeley) 07/19/90
15*44928Smckusick  */
16*44928Smckusick 
17*44928Smckusick #define	xdr_nfsstat xdr_enum
18*44928Smckusick #define	xdr_ftype xdr_enum
19*44928Smckusick 
20*44928Smckusick #define NFS_PORT 2049
21*44928Smckusick #define NFS_MAXDATA 8192
22*44928Smckusick #define NFS_MAXPATHLEN 1024
23*44928Smckusick #define NFS_MAXNAMLEN 255
24*44928Smckusick #define NFS_FHSIZE 32
25*44928Smckusick #define NFS_COOKIESIZE 4
26*44928Smckusick #define NFS_FIFO_DEV -1
27*44928Smckusick #define NFSMODE_FMT 0170000
28*44928Smckusick #define NFSMODE_DIR 0040000
29*44928Smckusick #define NFSMODE_CHR 0020000
30*44928Smckusick #define NFSMODE_BLK 0060000
31*44928Smckusick #define NFSMODE_REG 0100000
32*44928Smckusick #define NFSMODE_LNK 0120000
33*44928Smckusick #define NFSMODE_SOCK 0140000
34*44928Smckusick #define NFSMODE_FIFO 0010000
35*44928Smckusick 
36*44928Smckusick enum nfsstat {
37*44928Smckusick 	NFS_OK = 0,
38*44928Smckusick 	NFSERR_PERM = 1,
39*44928Smckusick 	NFSERR_NOENT = 2,
40*44928Smckusick 	NFSERR_IO = 5,
41*44928Smckusick 	NFSERR_NXIO = 6,
42*44928Smckusick 	NFSERR_ACCES = 13,
43*44928Smckusick 	NFSERR_EXIST = 17,
44*44928Smckusick 	NFSERR_NODEV = 19,
45*44928Smckusick 	NFSERR_NOTDIR = 20,
46*44928Smckusick 	NFSERR_ISDIR = 21,
47*44928Smckusick 	NFSERR_FBIG = 27,
48*44928Smckusick 	NFSERR_NOSPC = 28,
49*44928Smckusick 	NFSERR_ROFS = 30,
50*44928Smckusick 	NFSERR_NAMETOOLONG = 63,
51*44928Smckusick 	NFSERR_NOTEMPTY = 66,
52*44928Smckusick 	NFSERR_DQUOT = 69,
53*44928Smckusick 	NFSERR_STALE = 70,
54*44928Smckusick 	NFSERR_WFLUSH = 99
55*44928Smckusick };
56*44928Smckusick typedef enum nfsstat nfsstat;
57*44928Smckusick bool_t xdr_nfsstat();
58*44928Smckusick 
59*44928Smckusick 
60*44928Smckusick enum ftype {
61*44928Smckusick 	NFNON = 0,
62*44928Smckusick 	NFREG = 1,
63*44928Smckusick 	NFDIR = 2,
64*44928Smckusick 	NFBLK = 3,
65*44928Smckusick 	NFCHR = 4,
66*44928Smckusick 	NFLNK = 5,
67*44928Smckusick 	NFSOCK = 6,
68*44928Smckusick 	NFBAD = 7,
69*44928Smckusick 	NFFIFO = 8
70*44928Smckusick };
71*44928Smckusick typedef enum ftype ftype;
72*44928Smckusick /* static bool_t xdr_ftype(); */
73*44928Smckusick 
74*44928Smckusick 
75*44928Smckusick struct nfs_fh {
76*44928Smckusick 	char data[NFS_FHSIZE];
77*44928Smckusick };
78*44928Smckusick typedef struct nfs_fh nfs_fh;
79*44928Smckusick bool_t xdr_nfs_fh();
80*44928Smckusick 
81*44928Smckusick 
82*44928Smckusick struct nfstime {
83*44928Smckusick 	u_int seconds;
84*44928Smckusick 	u_int useconds;
85*44928Smckusick };
86*44928Smckusick typedef struct nfstime nfstime;
87*44928Smckusick /* static bool_t xdr_nfstime(); */
88*44928Smckusick 
89*44928Smckusick 
90*44928Smckusick struct fattr {
91*44928Smckusick 	ftype type;
92*44928Smckusick 	u_int mode;
93*44928Smckusick 	u_int nlink;
94*44928Smckusick 	u_int uid;
95*44928Smckusick 	u_int gid;
96*44928Smckusick 	u_int size;
97*44928Smckusick 	u_int blocksize;
98*44928Smckusick 	u_int rdev;
99*44928Smckusick 	u_int blocks;
100*44928Smckusick 	u_int fsid;
101*44928Smckusick 	u_int fileid;
102*44928Smckusick 	nfstime atime;
103*44928Smckusick 	nfstime mtime;
104*44928Smckusick 	nfstime ctime;
105*44928Smckusick };
106*44928Smckusick typedef struct fattr fattr;
107*44928Smckusick /* static bool_t xdr_fattr(); */
108*44928Smckusick 
109*44928Smckusick 
110*44928Smckusick struct sattr {
111*44928Smckusick 	u_int mode;
112*44928Smckusick 	u_int uid;
113*44928Smckusick 	u_int gid;
114*44928Smckusick 	u_int size;
115*44928Smckusick 	nfstime atime;
116*44928Smckusick 	nfstime mtime;
117*44928Smckusick };
118*44928Smckusick typedef struct sattr sattr;
119*44928Smckusick /* static bool_t xdr_sattr(); */
120*44928Smckusick 
121*44928Smckusick 
122*44928Smckusick typedef char *filename;
123*44928Smckusick /* static bool_t xdr_filename(); */
124*44928Smckusick 
125*44928Smckusick 
126*44928Smckusick typedef char *nfspath;
127*44928Smckusick bool_t xdr_nfspath();
128*44928Smckusick 
129*44928Smckusick 
130*44928Smckusick struct attrstat {
131*44928Smckusick 	nfsstat status;
132*44928Smckusick 	union {
133*44928Smckusick 		fattr attributes;
134*44928Smckusick 	} attrstat_u;
135*44928Smckusick };
136*44928Smckusick typedef struct attrstat attrstat;
137*44928Smckusick bool_t xdr_attrstat();
138*44928Smckusick 
139*44928Smckusick 
140*44928Smckusick struct sattrargs {
141*44928Smckusick 	nfs_fh file;
142*44928Smckusick 	sattr attributes;
143*44928Smckusick };
144*44928Smckusick typedef struct sattrargs sattrargs;
145*44928Smckusick bool_t xdr_sattrargs();
146*44928Smckusick 
147*44928Smckusick 
148*44928Smckusick struct diropargs {
149*44928Smckusick 	nfs_fh dir;
150*44928Smckusick 	filename name;
151*44928Smckusick };
152*44928Smckusick typedef struct diropargs diropargs;
153*44928Smckusick bool_t xdr_diropargs();
154*44928Smckusick 
155*44928Smckusick 
156*44928Smckusick struct diropokres {
157*44928Smckusick 	nfs_fh file;
158*44928Smckusick 	fattr attributes;
159*44928Smckusick };
160*44928Smckusick typedef struct diropokres diropokres;
161*44928Smckusick bool_t xdr_diropokres();
162*44928Smckusick 
163*44928Smckusick 
164*44928Smckusick struct diropres {
165*44928Smckusick 	nfsstat status;
166*44928Smckusick 	union {
167*44928Smckusick 		diropokres diropres;
168*44928Smckusick 	} diropres_u;
169*44928Smckusick };
170*44928Smckusick typedef struct diropres diropres;
171*44928Smckusick bool_t xdr_diropres();
172*44928Smckusick 
173*44928Smckusick 
174*44928Smckusick struct readlinkres {
175*44928Smckusick 	nfsstat status;
176*44928Smckusick 	union {
177*44928Smckusick 		nfspath data;
178*44928Smckusick 	} readlinkres_u;
179*44928Smckusick };
180*44928Smckusick typedef struct readlinkres readlinkres;
181*44928Smckusick bool_t xdr_readlinkres();
182*44928Smckusick 
183*44928Smckusick 
184*44928Smckusick struct readargs {
185*44928Smckusick 	nfs_fh file;
186*44928Smckusick 	u_int offset;
187*44928Smckusick 	u_int count;
188*44928Smckusick 	u_int totalcount;
189*44928Smckusick };
190*44928Smckusick typedef struct readargs readargs;
191*44928Smckusick bool_t xdr_readargs();
192*44928Smckusick 
193*44928Smckusick 
194*44928Smckusick struct readokres {
195*44928Smckusick 	fattr attributes;
196*44928Smckusick 	struct {
197*44928Smckusick 		u_int data_len;
198*44928Smckusick 		char *data_val;
199*44928Smckusick 	} data;
200*44928Smckusick };
201*44928Smckusick typedef struct readokres readokres;
202*44928Smckusick bool_t xdr_readokres();
203*44928Smckusick 
204*44928Smckusick 
205*44928Smckusick struct readres {
206*44928Smckusick 	nfsstat status;
207*44928Smckusick 	union {
208*44928Smckusick 		readokres reply;
209*44928Smckusick 	} readres_u;
210*44928Smckusick };
211*44928Smckusick typedef struct readres readres;
212*44928Smckusick bool_t xdr_readres();
213*44928Smckusick 
214*44928Smckusick 
215*44928Smckusick struct writeargs {
216*44928Smckusick 	nfs_fh file;
217*44928Smckusick 	u_int beginoffset;
218*44928Smckusick 	u_int offset;
219*44928Smckusick 	u_int totalcount;
220*44928Smckusick 	struct {
221*44928Smckusick 		u_int data_len;
222*44928Smckusick 		char *data_val;
223*44928Smckusick 	} data;
224*44928Smckusick };
225*44928Smckusick typedef struct writeargs writeargs;
226*44928Smckusick bool_t xdr_writeargs();
227*44928Smckusick 
228*44928Smckusick 
229*44928Smckusick struct createargs {
230*44928Smckusick 	diropargs where;
231*44928Smckusick 	sattr attributes;
232*44928Smckusick };
233*44928Smckusick typedef struct createargs createargs;
234*44928Smckusick bool_t xdr_createargs();
235*44928Smckusick 
236*44928Smckusick 
237*44928Smckusick struct renameargs {
238*44928Smckusick 	diropargs from;
239*44928Smckusick 	diropargs to;
240*44928Smckusick };
241*44928Smckusick typedef struct renameargs renameargs;
242*44928Smckusick bool_t xdr_renameargs();
243*44928Smckusick 
244*44928Smckusick 
245*44928Smckusick struct linkargs {
246*44928Smckusick 	nfs_fh from;
247*44928Smckusick 	diropargs to;
248*44928Smckusick };
249*44928Smckusick typedef struct linkargs linkargs;
250*44928Smckusick bool_t xdr_linkargs();
251*44928Smckusick 
252*44928Smckusick 
253*44928Smckusick struct symlinkargs {
254*44928Smckusick 	diropargs from;
255*44928Smckusick 	nfspath to;
256*44928Smckusick 	sattr attributes;
257*44928Smckusick };
258*44928Smckusick typedef struct symlinkargs symlinkargs;
259*44928Smckusick bool_t xdr_symlinkargs();
260*44928Smckusick 
261*44928Smckusick 
262*44928Smckusick typedef char nfscookie[NFS_COOKIESIZE];
263*44928Smckusick /* static bool_t xdr_nfscookie(); */
264*44928Smckusick 
265*44928Smckusick 
266*44928Smckusick struct readdirargs {
267*44928Smckusick 	nfs_fh dir;
268*44928Smckusick 	nfscookie cookie;
269*44928Smckusick 	u_int count;
270*44928Smckusick };
271*44928Smckusick typedef struct readdirargs readdirargs;
272*44928Smckusick bool_t xdr_readdirargs();
273*44928Smckusick 
274*44928Smckusick 
275*44928Smckusick struct entry {
276*44928Smckusick 	u_int fileid;
277*44928Smckusick 	filename name;
278*44928Smckusick 	nfscookie cookie;
279*44928Smckusick 	struct entry *nextentry;
280*44928Smckusick };
281*44928Smckusick typedef struct entry entry;
282*44928Smckusick /* static bool_t xdr_entry(); */
283*44928Smckusick 
284*44928Smckusick 
285*44928Smckusick struct dirlist {
286*44928Smckusick 	entry *entries;
287*44928Smckusick 	bool_t eof;
288*44928Smckusick };
289*44928Smckusick typedef struct dirlist dirlist;
290*44928Smckusick /* static bool_t xdr_dirlist(); */
291*44928Smckusick 
292*44928Smckusick 
293*44928Smckusick struct readdirres {
294*44928Smckusick 	nfsstat status;
295*44928Smckusick 	union {
296*44928Smckusick 		dirlist reply;
297*44928Smckusick 	} readdirres_u;
298*44928Smckusick };
299*44928Smckusick typedef struct readdirres readdirres;
300*44928Smckusick bool_t xdr_readdirres();
301*44928Smckusick 
302*44928Smckusick 
303*44928Smckusick struct statfsokres {
304*44928Smckusick 	u_int tsize;
305*44928Smckusick 	u_int bsize;
306*44928Smckusick 	u_int blocks;
307*44928Smckusick 	u_int bfree;
308*44928Smckusick 	u_int bavail;
309*44928Smckusick };
310*44928Smckusick typedef struct statfsokres statfsokres;
311*44928Smckusick bool_t xdr_statfsokres();
312*44928Smckusick 
313*44928Smckusick 
314*44928Smckusick struct statfsres {
315*44928Smckusick 	nfsstat status;
316*44928Smckusick 	union {
317*44928Smckusick 		statfsokres reply;
318*44928Smckusick 	} statfsres_u;
319*44928Smckusick };
320*44928Smckusick typedef struct statfsres statfsres;
321*44928Smckusick bool_t xdr_statfsres();
322*44928Smckusick 
323*44928Smckusick 
324*44928Smckusick #define NFS_PROGRAM ((u_long)100003)
325*44928Smckusick #define NFS_VERSION ((u_long)2)
326*44928Smckusick #define NFSPROC_NULL ((u_long)0)
327*44928Smckusick extern voidp nfsproc_null_2();
328*44928Smckusick #define NFSPROC_GETATTR ((u_long)1)
329*44928Smckusick extern attrstat *nfsproc_getattr_2();
330*44928Smckusick #define NFSPROC_SETATTR ((u_long)2)
331*44928Smckusick extern attrstat *nfsproc_setattr_2();
332*44928Smckusick #define NFSPROC_ROOT ((u_long)3)
333*44928Smckusick extern voidp nfsproc_root_2();
334*44928Smckusick #define NFSPROC_LOOKUP ((u_long)4)
335*44928Smckusick extern diropres *nfsproc_lookup_2();
336*44928Smckusick #define NFSPROC_READLINK ((u_long)5)
337*44928Smckusick extern readlinkres *nfsproc_readlink_2();
338*44928Smckusick #define NFSPROC_READ ((u_long)6)
339*44928Smckusick extern readres *nfsproc_read_2();
340*44928Smckusick #define NFSPROC_WRITECACHE ((u_long)7)
341*44928Smckusick extern voidp nfsproc_writecache_2();
342*44928Smckusick #define NFSPROC_WRITE ((u_long)8)
343*44928Smckusick extern attrstat *nfsproc_write_2();
344*44928Smckusick #define NFSPROC_CREATE ((u_long)9)
345*44928Smckusick extern diropres *nfsproc_create_2();
346*44928Smckusick #define NFSPROC_REMOVE ((u_long)10)
347*44928Smckusick extern nfsstat *nfsproc_remove_2();
348*44928Smckusick #define NFSPROC_RENAME ((u_long)11)
349*44928Smckusick extern nfsstat *nfsproc_rename_2();
350*44928Smckusick #define NFSPROC_LINK ((u_long)12)
351*44928Smckusick extern nfsstat *nfsproc_link_2();
352*44928Smckusick #define NFSPROC_SYMLINK ((u_long)13)
353*44928Smckusick extern nfsstat *nfsproc_symlink_2();
354*44928Smckusick #define NFSPROC_MKDIR ((u_long)14)
355*44928Smckusick extern diropres *nfsproc_mkdir_2();
356*44928Smckusick #define NFSPROC_RMDIR ((u_long)15)
357*44928Smckusick extern nfsstat *nfsproc_rmdir_2();
358*44928Smckusick #define NFSPROC_READDIR ((u_long)16)
359*44928Smckusick extern readdirres *nfsproc_readdir_2();
360*44928Smckusick #define NFSPROC_STATFS ((u_long)17)
361*44928Smckusick extern statfsres *nfsproc_statfs_2();
362*44928Smckusick 
363