nfs_prot.x revision 1.5 1 1.1 jtc /*
2 1.1 jtc * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
3 1.1 jtc * unrestricted use provided that this legend is included on all tape
4 1.1 jtc * media and as a part of the software program in whole or part. Users
5 1.1 jtc * may copy or modify Sun RPC without charge, but are not authorized
6 1.1 jtc * to license or distribute it to anyone else except as part of a product or
7 1.1 jtc * program developed by the user.
8 1.4 simonb *
9 1.1 jtc * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
10 1.1 jtc * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
11 1.1 jtc * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
12 1.4 simonb *
13 1.1 jtc * Sun RPC is provided with no support and without any obligation on the
14 1.1 jtc * part of Sun Microsystems, Inc. to assist in its use, correction,
15 1.1 jtc * modification or enhancement.
16 1.4 simonb *
17 1.1 jtc * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
18 1.1 jtc * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
19 1.1 jtc * OR ANY PART THEREOF.
20 1.4 simonb *
21 1.1 jtc * In no event will Sun Microsystems, Inc. be liable for any lost revenue
22 1.1 jtc * or profits or other special, indirect and consequential damages, even if
23 1.1 jtc * Sun has been advised of the possibility of such damages.
24 1.4 simonb *
25 1.1 jtc * Sun Microsystems, Inc.
26 1.1 jtc * 2550 Garcia Avenue
27 1.1 jtc * Mountain View, California 94043
28 1.1 jtc */
29 1.1 jtc
30 1.1 jtc #ifndef RPC_HDR
31 1.3 lukem %#include <sys/cdefs.h>
32 1.1 jtc %#ifndef lint
33 1.1 jtc %/*static char sccsid[] = "from: @(#)nfs_prot.x 1.2 87/10/12 Copyr 1987 Sun Micro";*/
34 1.1 jtc %/*static char sccsid[] = "from: @(#)nfs_prot.x 2.1 88/08/01 4.0 RPCSRC";*/
35 1.5 yamt %__RCSID("$NetBSD: nfs_prot.x,v 1.5 2003/05/08 13:32:00 yamt Exp $");
36 1.1 jtc %#endif /* not lint */
37 1.1 jtc #endif
38 1.1 jtc
39 1.1 jtc const NFS_PORT = 2049;
40 1.1 jtc const NFS_MAXDATA = 8192;
41 1.1 jtc const NFS_MAXPATHLEN = 1024;
42 1.1 jtc const NFS_MAXNAMLEN = 255;
43 1.1 jtc const NFS_FHSIZE = 32;
44 1.1 jtc const NFS_COOKIESIZE = 4;
45 1.1 jtc const NFS_FIFO_DEV = -1; /* size kludge for named pipes */
46 1.1 jtc
47 1.1 jtc /*
48 1.1 jtc * File types
49 1.1 jtc */
50 1.1 jtc const NFSMODE_FMT = 0170000; /* type of file */
51 1.1 jtc const NFSMODE_DIR = 0040000; /* directory */
52 1.1 jtc const NFSMODE_CHR = 0020000; /* character special */
53 1.1 jtc const NFSMODE_BLK = 0060000; /* block special */
54 1.1 jtc const NFSMODE_REG = 0100000; /* regular */
55 1.1 jtc const NFSMODE_LNK = 0120000; /* symbolic link */
56 1.1 jtc const NFSMODE_SOCK = 0140000; /* socket */
57 1.1 jtc const NFSMODE_FIFO = 0010000; /* fifo */
58 1.1 jtc
59 1.1 jtc /*
60 1.1 jtc * Error status
61 1.1 jtc */
62 1.1 jtc enum nfsstat {
63 1.1 jtc NFS_OK= 0, /* no error */
64 1.1 jtc NFSERR_PERM=1, /* Not owner */
65 1.1 jtc NFSERR_NOENT=2, /* No such file or directory */
66 1.1 jtc NFSERR_IO=5, /* I/O error */
67 1.1 jtc NFSERR_NXIO=6, /* No such device or address */
68 1.1 jtc NFSERR_ACCES=13, /* Permission denied */
69 1.1 jtc NFSERR_EXIST=17, /* File exists */
70 1.1 jtc NFSERR_NODEV=19, /* No such device */
71 1.1 jtc NFSERR_NOTDIR=20, /* Not a directory*/
72 1.1 jtc NFSERR_ISDIR=21, /* Is a directory */
73 1.1 jtc NFSERR_FBIG=27, /* File too large */
74 1.1 jtc NFSERR_NOSPC=28, /* No space left on device */
75 1.1 jtc NFSERR_ROFS=30, /* Read-only file system */
76 1.1 jtc NFSERR_NAMETOOLONG=63, /* File name too long */
77 1.1 jtc NFSERR_NOTEMPTY=66, /* Directory not empty */
78 1.1 jtc NFSERR_DQUOT=69, /* Disc quota exceeded */
79 1.1 jtc NFSERR_STALE=70, /* Stale NFS file handle */
80 1.1 jtc NFSERR_WFLUSH=99 /* write cache flushed */
81 1.1 jtc };
82 1.1 jtc
83 1.1 jtc /*
84 1.1 jtc * File types
85 1.1 jtc */
86 1.1 jtc enum ftype {
87 1.1 jtc NFNON = 0, /* non-file */
88 1.1 jtc NFREG = 1, /* regular file */
89 1.1 jtc NFDIR = 2, /* directory */
90 1.1 jtc NFBLK = 3, /* block special */
91 1.1 jtc NFCHR = 4, /* character special */
92 1.1 jtc NFLNK = 5, /* symbolic link */
93 1.1 jtc NFSOCK = 6, /* unix domain sockets */
94 1.1 jtc NFBAD = 7, /* unused */
95 1.1 jtc NFFIFO = 8 /* named pipe */
96 1.1 jtc };
97 1.1 jtc
98 1.1 jtc /*
99 1.1 jtc * File access handle
100 1.1 jtc */
101 1.1 jtc struct nfs_fh {
102 1.1 jtc opaque data[NFS_FHSIZE];
103 1.1 jtc };
104 1.1 jtc
105 1.4 simonb /*
106 1.1 jtc * Timeval
107 1.1 jtc */
108 1.1 jtc struct nfstime {
109 1.1 jtc unsigned seconds;
110 1.1 jtc unsigned useconds;
111 1.1 jtc };
112 1.1 jtc
113 1.1 jtc
114 1.1 jtc /*
115 1.1 jtc * File attributes
116 1.1 jtc */
117 1.1 jtc struct fattr {
118 1.1 jtc ftype type; /* file type */
119 1.1 jtc unsigned mode; /* protection mode bits */
120 1.1 jtc unsigned nlink; /* # hard links */
121 1.1 jtc unsigned uid; /* owner user id */
122 1.1 jtc unsigned gid; /* owner group id */
123 1.1 jtc unsigned size; /* file size in bytes */
124 1.1 jtc unsigned blocksize; /* prefered block size */
125 1.1 jtc unsigned rdev; /* special device # */
126 1.1 jtc unsigned blocks; /* Kb of disk used by file */
127 1.1 jtc unsigned fsid; /* device # */
128 1.1 jtc unsigned fileid; /* inode # */
129 1.1 jtc nfstime atime; /* time of last access */
130 1.1 jtc nfstime mtime; /* time of last modification */
131 1.1 jtc nfstime ctime; /* time of last change */
132 1.1 jtc };
133 1.1 jtc
134 1.1 jtc /*
135 1.1 jtc * File attributes which can be set
136 1.1 jtc */
137 1.1 jtc struct sattr {
138 1.1 jtc unsigned mode; /* protection mode bits */
139 1.1 jtc unsigned uid; /* owner user id */
140 1.1 jtc unsigned gid; /* owner group id */
141 1.1 jtc unsigned size; /* file size in bytes */
142 1.1 jtc nfstime atime; /* time of last access */
143 1.1 jtc nfstime mtime; /* time of last modification */
144 1.1 jtc };
145 1.1 jtc
146 1.1 jtc
147 1.4 simonb typedef string filename<NFS_MAXNAMLEN>;
148 1.1 jtc typedef string nfspath<NFS_MAXPATHLEN>;
149 1.1 jtc
150 1.1 jtc /*
151 1.1 jtc * Reply status with file attributes
152 1.1 jtc */
153 1.1 jtc union attrstat switch (nfsstat status) {
154 1.1 jtc case NFS_OK:
155 1.1 jtc fattr attributes;
156 1.1 jtc default:
157 1.1 jtc void;
158 1.1 jtc };
159 1.1 jtc
160 1.1 jtc struct sattrargs {
161 1.1 jtc nfs_fh file;
162 1.1 jtc sattr attributes;
163 1.1 jtc };
164 1.1 jtc
165 1.1 jtc /*
166 1.1 jtc * Arguments for directory operations
167 1.1 jtc */
168 1.1 jtc struct diropargs {
169 1.1 jtc nfs_fh dir; /* directory file handle */
170 1.1 jtc filename name; /* name (up to NFS_MAXNAMLEN bytes) */
171 1.1 jtc };
172 1.1 jtc
173 1.1 jtc struct diropokres {
174 1.1 jtc nfs_fh file;
175 1.1 jtc fattr attributes;
176 1.1 jtc };
177 1.1 jtc
178 1.1 jtc /*
179 1.1 jtc * Results from directory operation
180 1.1 jtc */
181 1.1 jtc union diropres switch (nfsstat status) {
182 1.1 jtc case NFS_OK:
183 1.1 jtc diropokres diropres;
184 1.1 jtc default:
185 1.1 jtc void;
186 1.1 jtc };
187 1.1 jtc
188 1.1 jtc union readlinkres switch (nfsstat status) {
189 1.1 jtc case NFS_OK:
190 1.1 jtc nfspath data;
191 1.1 jtc default:
192 1.1 jtc void;
193 1.1 jtc };
194 1.1 jtc
195 1.1 jtc /*
196 1.1 jtc * Arguments to remote read
197 1.1 jtc */
198 1.1 jtc struct readargs {
199 1.1 jtc nfs_fh file; /* handle for file */
200 1.1 jtc unsigned offset; /* byte offset in file */
201 1.1 jtc unsigned count; /* immediate read count */
202 1.1 jtc unsigned totalcount; /* total read count (from this offset)*/
203 1.1 jtc };
204 1.1 jtc
205 1.1 jtc /*
206 1.1 jtc * Status OK portion of remote read reply
207 1.1 jtc */
208 1.1 jtc struct readokres {
209 1.1 jtc fattr attributes; /* attributes, need for pagin*/
210 1.1 jtc opaque data<NFS_MAXDATA>;
211 1.1 jtc };
212 1.1 jtc
213 1.1 jtc union readres switch (nfsstat status) {
214 1.1 jtc case NFS_OK:
215 1.1 jtc readokres reply;
216 1.1 jtc default:
217 1.1 jtc void;
218 1.1 jtc };
219 1.1 jtc
220 1.1 jtc /*
221 1.4 simonb * Arguments to remote write
222 1.1 jtc */
223 1.1 jtc struct writeargs {
224 1.1 jtc nfs_fh file; /* handle for file */
225 1.1 jtc unsigned beginoffset; /* beginning byte offset in file */
226 1.1 jtc unsigned offset; /* current byte offset in file */
227 1.1 jtc unsigned totalcount; /* total write count (to this offset)*/
228 1.1 jtc opaque data<NFS_MAXDATA>;
229 1.1 jtc };
230 1.1 jtc
231 1.1 jtc struct createargs {
232 1.1 jtc diropargs where;
233 1.1 jtc sattr attributes;
234 1.1 jtc };
235 1.1 jtc
236 1.1 jtc struct renameargs {
237 1.1 jtc diropargs from;
238 1.1 jtc diropargs to;
239 1.1 jtc };
240 1.1 jtc
241 1.1 jtc struct linkargs {
242 1.1 jtc nfs_fh from;
243 1.1 jtc diropargs to;
244 1.1 jtc };
245 1.1 jtc
246 1.1 jtc struct symlinkargs {
247 1.1 jtc diropargs from;
248 1.1 jtc nfspath to;
249 1.1 jtc sattr attributes;
250 1.1 jtc };
251 1.1 jtc
252 1.1 jtc
253 1.1 jtc typedef opaque nfscookie[NFS_COOKIESIZE];
254 1.1 jtc
255 1.1 jtc /*
256 1.1 jtc * Arguments to readdir
257 1.1 jtc */
258 1.1 jtc struct readdirargs {
259 1.1 jtc nfs_fh dir; /* directory handle */
260 1.1 jtc nfscookie cookie;
261 1.1 jtc unsigned count; /* number of directory bytes to read */
262 1.1 jtc };
263 1.1 jtc
264 1.1 jtc struct entry {
265 1.1 jtc unsigned fileid;
266 1.1 jtc filename name;
267 1.1 jtc nfscookie cookie;
268 1.1 jtc entry *nextentry;
269 1.1 jtc };
270 1.1 jtc
271 1.1 jtc struct dirlist {
272 1.1 jtc entry *entries;
273 1.1 jtc bool eof;
274 1.1 jtc };
275 1.1 jtc
276 1.1 jtc union readdirres switch (nfsstat status) {
277 1.1 jtc case NFS_OK:
278 1.1 jtc dirlist reply;
279 1.1 jtc default:
280 1.1 jtc void;
281 1.1 jtc };
282 1.1 jtc
283 1.1 jtc struct statfsokres {
284 1.1 jtc unsigned tsize; /* preferred transfer size in bytes */
285 1.1 jtc unsigned bsize; /* fundamental file system block size */
286 1.1 jtc unsigned blocks; /* total blocks in file system */
287 1.1 jtc unsigned bfree; /* free blocks in fs */
288 1.1 jtc unsigned bavail; /* free blocks avail to non-superuser */
289 1.1 jtc };
290 1.1 jtc
291 1.1 jtc union statfsres switch (nfsstat status) {
292 1.1 jtc case NFS_OK:
293 1.1 jtc statfsokres reply;
294 1.1 jtc default:
295 1.1 jtc void;
296 1.1 jtc };
297 1.1 jtc
298 1.1 jtc /*
299 1.5 yamt * NFSv3 constants and types
300 1.5 yamt */
301 1.5 yamt const NFS3_FHSIZE = 64; /* maximum size in bytes of a file handle */
302 1.5 yamt const NFS3_COOKIEVERFSIZE = 8; /* size of a cookie verifier for READDIR */
303 1.5 yamt const NFS3_CREATEVERFSIZE = 8; /* size of the verifier used for CREATE */
304 1.5 yamt const NFS3_WRITEVERFSIZE = 8; /* size of the verifier used for WRITE */
305 1.5 yamt
306 1.5 yamt typedef u_int64_t uint64; /* XXX */
307 1.5 yamt typedef int64_t int64; /* XXX */
308 1.5 yamt typedef unsigned long uint32;
309 1.5 yamt typedef long int32;
310 1.5 yamt typedef string filename3<>;
311 1.5 yamt typedef string nfspath3<>;
312 1.5 yamt typedef uint64 fileid3;
313 1.5 yamt typedef uint64 cookie3;
314 1.5 yamt typedef opaque cookieverf3[NFS3_COOKIEVERFSIZE];
315 1.5 yamt typedef opaque createverf3[NFS3_CREATEVERFSIZE];
316 1.5 yamt typedef opaque writeverf3[NFS3_WRITEVERFSIZE];
317 1.5 yamt typedef uint32 uid3;
318 1.5 yamt typedef uint32 gid3;
319 1.5 yamt typedef uint64 size3;
320 1.5 yamt typedef uint64 offset3;
321 1.5 yamt typedef uint32 mode3;
322 1.5 yamt typedef uint32 count3;
323 1.5 yamt
324 1.5 yamt /*
325 1.5 yamt * Error status (v3)
326 1.5 yamt */
327 1.5 yamt enum nfsstat3 {
328 1.5 yamt NFS3_OK = 0,
329 1.5 yamt NFS3ERR_PERM = 1,
330 1.5 yamt NFS3ERR_NOENT = 2,
331 1.5 yamt NFS3ERR_IO = 5,
332 1.5 yamt NFS3ERR_NXIO = 6,
333 1.5 yamt NFS3ERR_ACCES = 13,
334 1.5 yamt NFS3ERR_EXIST = 17,
335 1.5 yamt NFS3ERR_XDEV = 18,
336 1.5 yamt NFS3ERR_NODEV = 19,
337 1.5 yamt NFS3ERR_NOTDIR = 20,
338 1.5 yamt NFS3ERR_ISDIR = 21,
339 1.5 yamt NFS3ERR_INVAL = 22,
340 1.5 yamt NFS3ERR_FBIG = 27,
341 1.5 yamt NFS3ERR_NOSPC = 28,
342 1.5 yamt NFS3ERR_ROFS = 30,
343 1.5 yamt NFS3ERR_MLINK = 31,
344 1.5 yamt NFS3ERR_NAMETOOLONG = 63,
345 1.5 yamt NFS3ERR_NOTEMPTY = 66,
346 1.5 yamt NFS3ERR_DQUOT = 69,
347 1.5 yamt NFS3ERR_STALE = 70,
348 1.5 yamt NFS3ERR_REMOTE = 71,
349 1.5 yamt NFS3ERR_BADHANDLE = 10001,
350 1.5 yamt NFS3ERR_NOT_SYNC = 10002,
351 1.5 yamt NFS3ERR_BAD_COOKIE = 10003,
352 1.5 yamt NFS3ERR_NOTSUPP = 10004,
353 1.5 yamt NFS3ERR_TOOSMALL = 10005,
354 1.5 yamt NFS3ERR_SERVERFAULT = 10006,
355 1.5 yamt NFS3ERR_BADTYPE = 10007,
356 1.5 yamt NFS3ERR_JUKEBOX = 10008
357 1.5 yamt };
358 1.5 yamt
359 1.5 yamt /*
360 1.5 yamt * File types (v3)
361 1.5 yamt */
362 1.5 yamt enum ftype3 {
363 1.5 yamt NF3REG = 1, /* regular file */
364 1.5 yamt NF3DIR = 2, /* directory */
365 1.5 yamt NF3BLK = 3, /* block special */
366 1.5 yamt NF3CHR = 4, /* character special */
367 1.5 yamt NF3LNK = 5, /* symbolic link */
368 1.5 yamt NF3SOCK = 6, /* unix domain sockets */
369 1.5 yamt NF3FIFO = 7 /* named pipe */
370 1.5 yamt };
371 1.5 yamt
372 1.5 yamt struct specdata3 {
373 1.5 yamt uint32 specdata1;
374 1.5 yamt uint32 specdata2;
375 1.5 yamt };
376 1.5 yamt
377 1.5 yamt /*
378 1.5 yamt * File access handle (v3)
379 1.5 yamt */
380 1.5 yamt struct nfs_fh3 {
381 1.5 yamt opaque data<NFS3_FHSIZE>;
382 1.5 yamt };
383 1.5 yamt
384 1.5 yamt /*
385 1.5 yamt * Timeval (v3)
386 1.5 yamt */
387 1.5 yamt struct nfstime3 {
388 1.5 yamt uint32 seconds;
389 1.5 yamt uint32 nseconds;
390 1.5 yamt };
391 1.5 yamt
392 1.5 yamt
393 1.5 yamt /*
394 1.5 yamt * File attributes (v3)
395 1.5 yamt */
396 1.5 yamt struct fattr3 {
397 1.5 yamt ftype3 type; /* file type */
398 1.5 yamt mode3 mode; /* protection mode bits */
399 1.5 yamt uint32 nlink; /* # hard links */
400 1.5 yamt uid3 uid; /* owner user id */
401 1.5 yamt gid3 gid; /* owner group id */
402 1.5 yamt size3 size; /* file size in bytes */
403 1.5 yamt size3 used; /* prefered block size */
404 1.5 yamt specdata3 rdev; /* special device # */
405 1.5 yamt uint64 fsid; /* device # */
406 1.5 yamt fileid3 fileid; /* inode # */
407 1.5 yamt nfstime3 atime; /* time of last access */
408 1.5 yamt nfstime3 mtime; /* time of last modification */
409 1.5 yamt nfstime3 ctime; /* time of last change */
410 1.5 yamt };
411 1.5 yamt
412 1.5 yamt union post_op_attr switch (bool attributes_follow) {
413 1.5 yamt case TRUE:
414 1.5 yamt fattr3 attributes;
415 1.5 yamt case FALSE:
416 1.5 yamt void;
417 1.5 yamt };
418 1.5 yamt
419 1.5 yamt struct wcc_attr {
420 1.5 yamt size3 size;
421 1.5 yamt nfstime3 mtime;
422 1.5 yamt nfstime3 ctime;
423 1.5 yamt };
424 1.5 yamt
425 1.5 yamt union pre_op_attr switch (bool attributes_follow) {
426 1.5 yamt case TRUE:
427 1.5 yamt wcc_attr attributes;
428 1.5 yamt case FALSE:
429 1.5 yamt void;
430 1.5 yamt };
431 1.5 yamt
432 1.5 yamt struct wcc_data {
433 1.5 yamt pre_op_attr before;
434 1.5 yamt post_op_attr after;
435 1.5 yamt };
436 1.5 yamt
437 1.5 yamt union post_op_fh3 switch (bool handle_follows) {
438 1.5 yamt case TRUE:
439 1.5 yamt nfs_fh3 handle;
440 1.5 yamt case FALSE:
441 1.5 yamt void;
442 1.5 yamt };
443 1.5 yamt
444 1.5 yamt /*
445 1.5 yamt * File attributes which can be set (v3)
446 1.5 yamt */
447 1.5 yamt enum time_how {
448 1.5 yamt DONT_CHANGE = 0,
449 1.5 yamt SET_TO_SERVER_TIME = 1,
450 1.5 yamt SET_TO_CLIENT_TIME = 2
451 1.5 yamt };
452 1.5 yamt
453 1.5 yamt union set_mode3 switch (bool set_it) {
454 1.5 yamt case TRUE:
455 1.5 yamt mode3 mode;
456 1.5 yamt default:
457 1.5 yamt void;
458 1.5 yamt };
459 1.5 yamt
460 1.5 yamt union set_uid3 switch (bool set_it) {
461 1.5 yamt case TRUE:
462 1.5 yamt uid3 uid;
463 1.5 yamt default:
464 1.5 yamt void;
465 1.5 yamt };
466 1.5 yamt
467 1.5 yamt union set_gid3 switch (bool set_it) {
468 1.5 yamt case TRUE:
469 1.5 yamt gid3 gid;
470 1.5 yamt default:
471 1.5 yamt void;
472 1.5 yamt };
473 1.5 yamt
474 1.5 yamt union set_size3 switch (bool set_it) {
475 1.5 yamt case TRUE:
476 1.5 yamt size3 size;
477 1.5 yamt default:
478 1.5 yamt void;
479 1.5 yamt };
480 1.5 yamt
481 1.5 yamt union set_atime switch (time_how set_it) {
482 1.5 yamt case SET_TO_CLIENT_TIME:
483 1.5 yamt nfstime3 atime;
484 1.5 yamt default:
485 1.5 yamt void;
486 1.5 yamt };
487 1.5 yamt
488 1.5 yamt union set_mtime switch (time_how set_it) {
489 1.5 yamt case SET_TO_CLIENT_TIME:
490 1.5 yamt nfstime3 mtime;
491 1.5 yamt default:
492 1.5 yamt void;
493 1.5 yamt };
494 1.5 yamt
495 1.5 yamt struct sattr3 {
496 1.5 yamt set_mode3 mode;
497 1.5 yamt set_uid3 uid;
498 1.5 yamt set_gid3 gid;
499 1.5 yamt set_size3 size;
500 1.5 yamt set_atime atime;
501 1.5 yamt set_mtime mtime;
502 1.5 yamt };
503 1.5 yamt
504 1.5 yamt /*
505 1.5 yamt * Arguments for directory operations (v3)
506 1.5 yamt */
507 1.5 yamt struct diropargs3 {
508 1.5 yamt nfs_fh3 dir; /* directory file handle */
509 1.5 yamt filename3 name; /* name (up to NFS_MAXNAMLEN bytes) */
510 1.5 yamt };
511 1.5 yamt
512 1.5 yamt /*
513 1.5 yamt * Arguments to getattr (v3).
514 1.5 yamt */
515 1.5 yamt struct GETATTR3args {
516 1.5 yamt nfs_fh3 object;
517 1.5 yamt };
518 1.5 yamt
519 1.5 yamt struct GETATTR3resok {
520 1.5 yamt fattr3 obj_attributes;
521 1.5 yamt };
522 1.5 yamt
523 1.5 yamt union GETATTR3res switch (nfsstat3 status) {
524 1.5 yamt case NFS3_OK:
525 1.5 yamt GETATTR3resok resok;
526 1.5 yamt default:
527 1.5 yamt void;
528 1.5 yamt };
529 1.5 yamt
530 1.5 yamt /*
531 1.5 yamt * Arguments to setattr (v3).
532 1.5 yamt */
533 1.5 yamt union sattrguard3 switch (bool check) {
534 1.5 yamt case TRUE:
535 1.5 yamt nfstime3 obj_ctime;
536 1.5 yamt case FALSE:
537 1.5 yamt void;
538 1.5 yamt };
539 1.5 yamt
540 1.5 yamt struct SETATTR3args {
541 1.5 yamt nfs_fh3 object;
542 1.5 yamt sattr3 new_attributes;
543 1.5 yamt sattrguard3 guard;
544 1.5 yamt };
545 1.5 yamt
546 1.5 yamt struct SETATTR3resok {
547 1.5 yamt wcc_data obj_wcc;
548 1.5 yamt };
549 1.5 yamt
550 1.5 yamt struct SETATTR3resfail {
551 1.5 yamt wcc_data obj_wcc;
552 1.5 yamt };
553 1.5 yamt
554 1.5 yamt union SETATTR3res switch (nfsstat3 status) {
555 1.5 yamt case NFS3_OK:
556 1.5 yamt SETATTR3resok resok;
557 1.5 yamt default:
558 1.5 yamt SETATTR3resfail resfail;
559 1.5 yamt };
560 1.5 yamt
561 1.5 yamt /*
562 1.5 yamt * Arguments to lookup (v3).
563 1.5 yamt */
564 1.5 yamt struct LOOKUP3args {
565 1.5 yamt diropargs3 what;
566 1.5 yamt };
567 1.5 yamt
568 1.5 yamt struct LOOKUP3resok {
569 1.5 yamt nfs_fh3 object;
570 1.5 yamt post_op_attr obj_attributes;
571 1.5 yamt post_op_attr dir_attributes;
572 1.5 yamt };
573 1.5 yamt
574 1.5 yamt struct LOOKUP3resfail {
575 1.5 yamt post_op_attr dir_attributes;
576 1.5 yamt };
577 1.5 yamt
578 1.5 yamt union LOOKUP3res switch (nfsstat3 status) {
579 1.5 yamt case NFS3_OK:
580 1.5 yamt LOOKUP3resok resok;
581 1.5 yamt default:
582 1.5 yamt LOOKUP3resfail resfail;
583 1.5 yamt };
584 1.5 yamt
585 1.5 yamt /*
586 1.5 yamt * Arguments to access (v3).
587 1.5 yamt */
588 1.5 yamt const ACCESS3_READ = 0x0001;
589 1.5 yamt const ACCESS3_LOOKUP = 0x0002;
590 1.5 yamt const ACCESS3_MODIFY = 0x0004;
591 1.5 yamt const ACCESS3_EXTEND = 0x0008;
592 1.5 yamt const ACCESS3_DELETE = 0x0010;
593 1.5 yamt const ACCESS3_EXECUTE = 0x0020;
594 1.5 yamt
595 1.5 yamt struct ACCESS3args {
596 1.5 yamt nfs_fh3 object;
597 1.5 yamt uint32 access;
598 1.5 yamt };
599 1.5 yamt
600 1.5 yamt struct ACCESS3resok {
601 1.5 yamt post_op_attr obj_attributes;
602 1.5 yamt uint32 access;
603 1.5 yamt };
604 1.5 yamt
605 1.5 yamt struct ACCESS3resfail {
606 1.5 yamt post_op_attr obj_attributes;
607 1.5 yamt };
608 1.5 yamt
609 1.5 yamt union ACCESS3res switch (nfsstat3 status) {
610 1.5 yamt case NFS3_OK:
611 1.5 yamt ACCESS3resok resok;
612 1.5 yamt default:
613 1.5 yamt ACCESS3resfail resfail;
614 1.5 yamt };
615 1.5 yamt
616 1.5 yamt /*
617 1.5 yamt * Arguments to readlink (v3).
618 1.5 yamt */
619 1.5 yamt struct READLINK3args {
620 1.5 yamt nfs_fh3 symlink;
621 1.5 yamt };
622 1.5 yamt
623 1.5 yamt struct READLINK3resok {
624 1.5 yamt post_op_attr symlink_attributes;
625 1.5 yamt nfspath3 data;
626 1.5 yamt };
627 1.5 yamt
628 1.5 yamt struct READLINK3resfail {
629 1.5 yamt post_op_attr symlink_attributes;
630 1.5 yamt };
631 1.5 yamt
632 1.5 yamt union READLINK3res switch (nfsstat3 status) {
633 1.5 yamt case NFS3_OK:
634 1.5 yamt READLINK3resok resok;
635 1.5 yamt default:
636 1.5 yamt READLINK3resfail resfail;
637 1.5 yamt };
638 1.5 yamt
639 1.5 yamt /*
640 1.5 yamt * Arguments to read (v3).
641 1.5 yamt */
642 1.5 yamt struct READ3args {
643 1.5 yamt nfs_fh3 file;
644 1.5 yamt offset3 offset;
645 1.5 yamt count3 count;
646 1.5 yamt };
647 1.5 yamt
648 1.5 yamt struct READ3resok {
649 1.5 yamt post_op_attr file_attributes;
650 1.5 yamt count3 count;
651 1.5 yamt bool eof;
652 1.5 yamt opaque data<>;
653 1.5 yamt };
654 1.5 yamt
655 1.5 yamt struct READ3resfail {
656 1.5 yamt post_op_attr file_attributes;
657 1.5 yamt };
658 1.5 yamt
659 1.5 yamt /* XXX: solaris 2.6 uses ``nfsstat'' here */
660 1.5 yamt union READ3res switch (nfsstat3 status) {
661 1.5 yamt case NFS3_OK:
662 1.5 yamt READ3resok resok;
663 1.5 yamt default:
664 1.5 yamt READ3resfail resfail;
665 1.5 yamt };
666 1.5 yamt
667 1.5 yamt /*
668 1.5 yamt * Arguments to write (v3).
669 1.5 yamt */
670 1.5 yamt enum stable_how {
671 1.5 yamt UNSTABLE = 0,
672 1.5 yamt DATA_SYNC = 1,
673 1.5 yamt FILE_SYNC = 2
674 1.5 yamt };
675 1.5 yamt
676 1.5 yamt struct WRITE3args {
677 1.5 yamt nfs_fh3 file;
678 1.5 yamt offset3 offset;
679 1.5 yamt count3 count;
680 1.5 yamt stable_how stable;
681 1.5 yamt opaque data<>;
682 1.5 yamt };
683 1.5 yamt
684 1.5 yamt struct WRITE3resok {
685 1.5 yamt wcc_data file_wcc;
686 1.5 yamt count3 count;
687 1.5 yamt stable_how committed;
688 1.5 yamt writeverf3 verf;
689 1.5 yamt };
690 1.5 yamt
691 1.5 yamt struct WRITE3resfail {
692 1.5 yamt wcc_data file_wcc;
693 1.5 yamt };
694 1.5 yamt
695 1.5 yamt union WRITE3res switch (nfsstat3 status) {
696 1.5 yamt case NFS3_OK:
697 1.5 yamt WRITE3resok resok;
698 1.5 yamt default:
699 1.5 yamt WRITE3resfail resfail;
700 1.5 yamt };
701 1.5 yamt
702 1.5 yamt /*
703 1.5 yamt * Arguments to create (v3).
704 1.5 yamt */
705 1.5 yamt enum createmode3 {
706 1.5 yamt UNCHECKED = 0,
707 1.5 yamt GUARDED = 1,
708 1.5 yamt EXCLUSIVE = 2
709 1.5 yamt };
710 1.5 yamt
711 1.5 yamt union createhow3 switch (createmode3 mode) {
712 1.5 yamt case UNCHECKED:
713 1.5 yamt case GUARDED:
714 1.5 yamt sattr3 obj_attributes;
715 1.5 yamt case EXCLUSIVE:
716 1.5 yamt createverf3 verf;
717 1.5 yamt };
718 1.5 yamt
719 1.5 yamt struct CREATE3args {
720 1.5 yamt diropargs3 where;
721 1.5 yamt createhow3 how;
722 1.5 yamt };
723 1.5 yamt
724 1.5 yamt struct CREATE3resok {
725 1.5 yamt post_op_fh3 obj;
726 1.5 yamt post_op_attr obj_attributes;
727 1.5 yamt wcc_data dir_wcc;
728 1.5 yamt };
729 1.5 yamt
730 1.5 yamt struct CREATE3resfail {
731 1.5 yamt wcc_data dir_wcc;
732 1.5 yamt };
733 1.5 yamt
734 1.5 yamt union CREATE3res switch (nfsstat3 status) {
735 1.5 yamt case NFS3_OK:
736 1.5 yamt CREATE3resok resok;
737 1.5 yamt default:
738 1.5 yamt CREATE3resfail resfail;
739 1.5 yamt };
740 1.5 yamt
741 1.5 yamt /*
742 1.5 yamt * Arguments to mkdir (v3).
743 1.5 yamt */
744 1.5 yamt struct MKDIR3args {
745 1.5 yamt diropargs3 where;
746 1.5 yamt sattr3 attributes;
747 1.5 yamt };
748 1.5 yamt
749 1.5 yamt struct MKDIR3resok {
750 1.5 yamt post_op_fh3 obj;
751 1.5 yamt post_op_attr obj_attributes;
752 1.5 yamt wcc_data dir_wcc;
753 1.5 yamt };
754 1.5 yamt
755 1.5 yamt struct MKDIR3resfail {
756 1.5 yamt wcc_data dir_wcc;
757 1.5 yamt };
758 1.5 yamt
759 1.5 yamt union MKDIR3res switch (nfsstat3 status) {
760 1.5 yamt case NFS3_OK:
761 1.5 yamt MKDIR3resok resok;
762 1.5 yamt default:
763 1.5 yamt MKDIR3resfail resfail;
764 1.5 yamt };
765 1.5 yamt
766 1.5 yamt /*
767 1.5 yamt * Arguments to symlink (v3).
768 1.5 yamt */
769 1.5 yamt struct symlinkdata3 {
770 1.5 yamt sattr3 symlink_attributes;
771 1.5 yamt nfspath3 symlink_data;
772 1.5 yamt };
773 1.5 yamt
774 1.5 yamt struct SYMLINK3args {
775 1.5 yamt diropargs3 where;
776 1.5 yamt symlinkdata3 symlink;
777 1.5 yamt };
778 1.5 yamt
779 1.5 yamt struct SYMLINK3resok {
780 1.5 yamt post_op_fh3 obj;
781 1.5 yamt post_op_attr obj_attributes;
782 1.5 yamt wcc_data dir_wcc;
783 1.5 yamt };
784 1.5 yamt
785 1.5 yamt struct SYMLINK3resfail {
786 1.5 yamt wcc_data dir_wcc;
787 1.5 yamt };
788 1.5 yamt
789 1.5 yamt union SYMLINK3res switch (nfsstat3 status) {
790 1.5 yamt case NFS3_OK:
791 1.5 yamt SYMLINK3resok resok;
792 1.5 yamt default:
793 1.5 yamt SYMLINK3resfail resfail;
794 1.5 yamt };
795 1.5 yamt
796 1.5 yamt /*
797 1.5 yamt * Arguments to mknod (v3).
798 1.5 yamt */
799 1.5 yamt struct devicedata3 {
800 1.5 yamt sattr3 dev_attributes;
801 1.5 yamt specdata3 spec;
802 1.5 yamt };
803 1.5 yamt
804 1.5 yamt union mknoddata3 switch (ftype3 type) {
805 1.5 yamt case NF3CHR:
806 1.5 yamt case NF3BLK:
807 1.5 yamt devicedata3 device;
808 1.5 yamt case NF3SOCK:
809 1.5 yamt case NF3FIFO:
810 1.5 yamt sattr3 pipe_attributes;
811 1.5 yamt default:
812 1.5 yamt void;
813 1.5 yamt };
814 1.5 yamt
815 1.5 yamt struct MKNOD3args {
816 1.5 yamt diropargs3 where;
817 1.5 yamt mknoddata3 what;
818 1.5 yamt };
819 1.5 yamt
820 1.5 yamt struct MKNOD3resok {
821 1.5 yamt post_op_fh3 obj;
822 1.5 yamt post_op_attr obj_attributes;
823 1.5 yamt wcc_data dir_wcc;
824 1.5 yamt };
825 1.5 yamt
826 1.5 yamt struct MKNOD3resfail {
827 1.5 yamt wcc_data dir_wcc;
828 1.5 yamt };
829 1.5 yamt
830 1.5 yamt union MKNOD3res switch (nfsstat3 status) {
831 1.5 yamt case NFS3_OK:
832 1.5 yamt MKNOD3resok resok;
833 1.5 yamt default:
834 1.5 yamt MKNOD3resfail resfail;
835 1.5 yamt };
836 1.5 yamt
837 1.5 yamt /*
838 1.5 yamt * Arguments to remove (v3).
839 1.5 yamt */
840 1.5 yamt struct REMOVE3args {
841 1.5 yamt diropargs3 object;
842 1.5 yamt };
843 1.5 yamt
844 1.5 yamt struct REMOVE3resok {
845 1.5 yamt wcc_data dir_wcc;
846 1.5 yamt };
847 1.5 yamt
848 1.5 yamt struct REMOVE3resfail {
849 1.5 yamt wcc_data dir_wcc;
850 1.5 yamt };
851 1.5 yamt
852 1.5 yamt union REMOVE3res switch (nfsstat3 status) {
853 1.5 yamt case NFS3_OK:
854 1.5 yamt REMOVE3resok resok;
855 1.5 yamt default:
856 1.5 yamt REMOVE3resfail resfail;
857 1.5 yamt };
858 1.5 yamt
859 1.5 yamt /*
860 1.5 yamt * Arguments to rmdir (v3).
861 1.5 yamt */
862 1.5 yamt struct RMDIR3args {
863 1.5 yamt diropargs3 object;
864 1.5 yamt };
865 1.5 yamt
866 1.5 yamt struct RMDIR3resok {
867 1.5 yamt wcc_data dir_wcc;
868 1.5 yamt };
869 1.5 yamt
870 1.5 yamt struct RMDIR3resfail {
871 1.5 yamt wcc_data dir_wcc;
872 1.5 yamt };
873 1.5 yamt
874 1.5 yamt union RMDIR3res switch (nfsstat3 status) {
875 1.5 yamt case NFS3_OK:
876 1.5 yamt RMDIR3resok resok;
877 1.5 yamt default:
878 1.5 yamt RMDIR3resfail resfail;
879 1.5 yamt };
880 1.5 yamt
881 1.5 yamt /*
882 1.5 yamt * Arguments to rename (v3).
883 1.5 yamt */
884 1.5 yamt struct RENAME3args {
885 1.5 yamt diropargs3 from;
886 1.5 yamt diropargs3 to;
887 1.5 yamt };
888 1.5 yamt
889 1.5 yamt struct RENAME3resok {
890 1.5 yamt wcc_data fromdir_wcc;
891 1.5 yamt wcc_data todir_wcc;
892 1.5 yamt };
893 1.5 yamt
894 1.5 yamt struct RENAME3resfail {
895 1.5 yamt wcc_data fromdir_wcc;
896 1.5 yamt wcc_data todir_wcc;
897 1.5 yamt };
898 1.5 yamt
899 1.5 yamt union RENAME3res switch (nfsstat3 status) {
900 1.5 yamt case NFS3_OK:
901 1.5 yamt RENAME3resok resok;
902 1.5 yamt default:
903 1.5 yamt RENAME3resfail resfail;
904 1.5 yamt };
905 1.5 yamt
906 1.5 yamt /*
907 1.5 yamt * Arguments to link (v3).
908 1.5 yamt */
909 1.5 yamt struct LINK3args {
910 1.5 yamt nfs_fh3 file;
911 1.5 yamt diropargs3 link;
912 1.5 yamt };
913 1.5 yamt
914 1.5 yamt struct LINK3resok {
915 1.5 yamt post_op_attr file_attributes;
916 1.5 yamt wcc_data linkdir_wcc;
917 1.5 yamt };
918 1.5 yamt
919 1.5 yamt struct LINK3resfail {
920 1.5 yamt post_op_attr file_attributes;
921 1.5 yamt wcc_data linkdir_wcc;
922 1.5 yamt };
923 1.5 yamt
924 1.5 yamt union LINK3res switch (nfsstat3 status) {
925 1.5 yamt case NFS3_OK:
926 1.5 yamt LINK3resok resok;
927 1.5 yamt default:
928 1.5 yamt LINK3resfail resfail;
929 1.5 yamt };
930 1.5 yamt
931 1.5 yamt /*
932 1.5 yamt * Arguments to readdir (v3).
933 1.5 yamt */
934 1.5 yamt struct READDIR3args {
935 1.5 yamt nfs_fh3 dir;
936 1.5 yamt cookie3 cookie;
937 1.5 yamt cookieverf3 cookieverf;
938 1.5 yamt count3 count;
939 1.5 yamt };
940 1.5 yamt
941 1.5 yamt struct entry3 {
942 1.5 yamt fileid3 fileid;
943 1.5 yamt filename3 name;
944 1.5 yamt cookie3 cookie;
945 1.5 yamt entry3 *nextentry;
946 1.5 yamt };
947 1.5 yamt
948 1.5 yamt struct dirlist3 {
949 1.5 yamt entry3 *entries;
950 1.5 yamt bool eof;
951 1.5 yamt };
952 1.5 yamt
953 1.5 yamt struct READDIR3resok {
954 1.5 yamt post_op_attr dir_attributes;
955 1.5 yamt cookieverf3 cookieverf;
956 1.5 yamt dirlist3 reply;
957 1.5 yamt };
958 1.5 yamt
959 1.5 yamt struct READDIR3resfail {
960 1.5 yamt post_op_attr dir_attributes;
961 1.5 yamt };
962 1.5 yamt
963 1.5 yamt union READDIR3res switch (nfsstat3 status) {
964 1.5 yamt case NFS3_OK:
965 1.5 yamt READDIR3resok resok;
966 1.5 yamt default:
967 1.5 yamt READDIR3resfail resfail;
968 1.5 yamt };
969 1.5 yamt
970 1.5 yamt /*
971 1.5 yamt * Arguments to readdirplus (v3).
972 1.5 yamt */
973 1.5 yamt struct READDIRPLUS3args {
974 1.5 yamt nfs_fh3 dir;
975 1.5 yamt cookie3 cookie;
976 1.5 yamt cookieverf3 cookieverf;
977 1.5 yamt count3 dircount;
978 1.5 yamt count3 maxcount;
979 1.5 yamt };
980 1.5 yamt
981 1.5 yamt struct entryplus3 {
982 1.5 yamt fileid3 fileid;
983 1.5 yamt filename3 name;
984 1.5 yamt cookie3 cookie;
985 1.5 yamt post_op_attr name_attributes;
986 1.5 yamt post_op_fh3 name_handle;
987 1.5 yamt entryplus3 *nextentry;
988 1.5 yamt };
989 1.5 yamt
990 1.5 yamt struct dirlistplus3 {
991 1.5 yamt entryplus3 *entries;
992 1.5 yamt bool eof;
993 1.5 yamt };
994 1.5 yamt
995 1.5 yamt struct READDIRPLUS3resok {
996 1.5 yamt post_op_attr dir_attributes;
997 1.5 yamt cookieverf3 cookieverf;
998 1.5 yamt dirlistplus3 reply;
999 1.5 yamt };
1000 1.5 yamt
1001 1.5 yamt struct READDIRPLUS3resfail {
1002 1.5 yamt post_op_attr dir_attributes;
1003 1.5 yamt };
1004 1.5 yamt
1005 1.5 yamt union READDIRPLUS3res switch (nfsstat3 status) {
1006 1.5 yamt case NFS3_OK:
1007 1.5 yamt READDIRPLUS3resok resok;
1008 1.5 yamt default:
1009 1.5 yamt READDIRPLUS3resfail resfail;
1010 1.5 yamt };
1011 1.5 yamt
1012 1.5 yamt /*
1013 1.5 yamt * Arguments to fsstat (v3).
1014 1.5 yamt */
1015 1.5 yamt struct FSSTAT3args {
1016 1.5 yamt nfs_fh3 fsroot;
1017 1.5 yamt };
1018 1.5 yamt
1019 1.5 yamt struct FSSTAT3resok {
1020 1.5 yamt post_op_attr obj_attributes;
1021 1.5 yamt size3 tbytes;
1022 1.5 yamt size3 fbytes;
1023 1.5 yamt size3 abytes;
1024 1.5 yamt size3 tfiles;
1025 1.5 yamt size3 ffiles;
1026 1.5 yamt size3 afiles;
1027 1.5 yamt uint32 invarsec;
1028 1.5 yamt };
1029 1.5 yamt
1030 1.5 yamt struct FSSTAT3resfail {
1031 1.5 yamt post_op_attr obj_attributes;
1032 1.5 yamt };
1033 1.5 yamt
1034 1.5 yamt union FSSTAT3res switch (nfsstat3 status) {
1035 1.5 yamt case NFS3_OK:
1036 1.5 yamt FSSTAT3resok resok;
1037 1.5 yamt default:
1038 1.5 yamt FSSTAT3resfail resfail;
1039 1.5 yamt };
1040 1.5 yamt
1041 1.5 yamt /*
1042 1.5 yamt * Arguments to fsinfo (v3).
1043 1.5 yamt */
1044 1.5 yamt const FSF3_LINK = 0x0001;
1045 1.5 yamt const FSF3_SYMLINK = 0x0002;
1046 1.5 yamt const FSF3_HOMOGENEOUS = 0x0008;
1047 1.5 yamt const FSF3_CANSETTIME = 0x0010;
1048 1.5 yamt
1049 1.5 yamt struct FSINFO3args {
1050 1.5 yamt nfs_fh3 fsroot;
1051 1.5 yamt };
1052 1.5 yamt
1053 1.5 yamt struct FSINFO3resok {
1054 1.5 yamt post_op_attr obj_attributes;
1055 1.5 yamt uint32 rtmax;
1056 1.5 yamt uint32 rtpref;
1057 1.5 yamt uint32 rtmult;
1058 1.5 yamt uint32 wtmax;
1059 1.5 yamt uint32 wtpref;
1060 1.5 yamt uint32 wtmult;
1061 1.5 yamt uint32 dtpref;
1062 1.5 yamt size3 maxfilesize;
1063 1.5 yamt nfstime3 time_delta;
1064 1.5 yamt uint32 properties;
1065 1.5 yamt };
1066 1.5 yamt
1067 1.5 yamt struct FSINFO3resfail {
1068 1.5 yamt post_op_attr obj_attributes;
1069 1.5 yamt };
1070 1.5 yamt
1071 1.5 yamt union FSINFO3res switch (nfsstat3 status) {
1072 1.5 yamt case NFS3_OK:
1073 1.5 yamt FSINFO3resok resok;
1074 1.5 yamt default:
1075 1.5 yamt FSINFO3resfail resfail;
1076 1.5 yamt };
1077 1.5 yamt
1078 1.5 yamt /*
1079 1.5 yamt * Arguments to pathconf (v3).
1080 1.5 yamt */
1081 1.5 yamt struct PATHCONF3args {
1082 1.5 yamt nfs_fh3 object;
1083 1.5 yamt };
1084 1.5 yamt
1085 1.5 yamt struct PATHCONF3resok {
1086 1.5 yamt post_op_attr obj_attributes;
1087 1.5 yamt uint32 linkmax;
1088 1.5 yamt uint32 name_max;
1089 1.5 yamt bool no_trunc;
1090 1.5 yamt bool chown_restricted;
1091 1.5 yamt bool case_insensitive;
1092 1.5 yamt bool case_preserving;
1093 1.5 yamt };
1094 1.5 yamt
1095 1.5 yamt struct PATHCONF3resfail {
1096 1.5 yamt post_op_attr obj_attributes;
1097 1.5 yamt };
1098 1.5 yamt
1099 1.5 yamt union PATHCONF3res switch (nfsstat3 status) {
1100 1.5 yamt case NFS3_OK:
1101 1.5 yamt PATHCONF3resok resok;
1102 1.5 yamt default:
1103 1.5 yamt PATHCONF3resfail resfail;
1104 1.5 yamt };
1105 1.5 yamt
1106 1.5 yamt /*
1107 1.5 yamt * Arguments to commit (v3).
1108 1.5 yamt */
1109 1.5 yamt struct COMMIT3args {
1110 1.5 yamt nfs_fh3 file;
1111 1.5 yamt offset3 offset;
1112 1.5 yamt count3 count;
1113 1.5 yamt };
1114 1.5 yamt
1115 1.5 yamt struct COMMIT3resok {
1116 1.5 yamt wcc_data file_wcc;
1117 1.5 yamt writeverf3 verf;
1118 1.5 yamt };
1119 1.5 yamt
1120 1.5 yamt struct COMMIT3resfail {
1121 1.5 yamt wcc_data file_wcc;
1122 1.5 yamt };
1123 1.5 yamt
1124 1.5 yamt union COMMIT3res switch (nfsstat3 status) {
1125 1.5 yamt case NFS3_OK:
1126 1.5 yamt COMMIT3resok resok;
1127 1.5 yamt default:
1128 1.5 yamt COMMIT3resfail resfail;
1129 1.5 yamt };
1130 1.5 yamt
1131 1.5 yamt /*
1132 1.1 jtc * Remote file service routines
1133 1.1 jtc */
1134 1.1 jtc program NFS_PROGRAM {
1135 1.1 jtc version NFS_VERSION {
1136 1.4 simonb void
1137 1.1 jtc NFSPROC_NULL(void) = 0;
1138 1.1 jtc
1139 1.4 simonb attrstat
1140 1.1 jtc NFSPROC_GETATTR(nfs_fh) = 1;
1141 1.1 jtc
1142 1.4 simonb attrstat
1143 1.1 jtc NFSPROC_SETATTR(sattrargs) = 2;
1144 1.1 jtc
1145 1.4 simonb void
1146 1.1 jtc NFSPROC_ROOT(void) = 3;
1147 1.1 jtc
1148 1.4 simonb diropres
1149 1.1 jtc NFSPROC_LOOKUP(diropargs) = 4;
1150 1.1 jtc
1151 1.4 simonb readlinkres
1152 1.1 jtc NFSPROC_READLINK(nfs_fh) = 5;
1153 1.1 jtc
1154 1.4 simonb readres
1155 1.1 jtc NFSPROC_READ(readargs) = 6;
1156 1.1 jtc
1157 1.4 simonb void
1158 1.1 jtc NFSPROC_WRITECACHE(void) = 7;
1159 1.1 jtc
1160 1.1 jtc attrstat
1161 1.1 jtc NFSPROC_WRITE(writeargs) = 8;
1162 1.1 jtc
1163 1.1 jtc diropres
1164 1.1 jtc NFSPROC_CREATE(createargs) = 9;
1165 1.1 jtc
1166 1.1 jtc nfsstat
1167 1.1 jtc NFSPROC_REMOVE(diropargs) = 10;
1168 1.1 jtc
1169 1.1 jtc nfsstat
1170 1.1 jtc NFSPROC_RENAME(renameargs) = 11;
1171 1.1 jtc
1172 1.1 jtc nfsstat
1173 1.1 jtc NFSPROC_LINK(linkargs) = 12;
1174 1.1 jtc
1175 1.1 jtc nfsstat
1176 1.1 jtc NFSPROC_SYMLINK(symlinkargs) = 13;
1177 1.1 jtc
1178 1.1 jtc diropres
1179 1.1 jtc NFSPROC_MKDIR(createargs) = 14;
1180 1.1 jtc
1181 1.1 jtc nfsstat
1182 1.1 jtc NFSPROC_RMDIR(diropargs) = 15;
1183 1.1 jtc
1184 1.1 jtc readdirres
1185 1.1 jtc NFSPROC_READDIR(readdirargs) = 16;
1186 1.1 jtc
1187 1.1 jtc statfsres
1188 1.1 jtc NFSPROC_STATFS(nfs_fh) = 17;
1189 1.1 jtc } = 2;
1190 1.5 yamt version NFS_V3 {
1191 1.5 yamt void
1192 1.5 yamt NFSPROC3_NULL(void) = 0;
1193 1.5 yamt
1194 1.5 yamt GETATTR3res
1195 1.5 yamt NFSPROC3_GETATTR(GETATTR3args) = 1;
1196 1.5 yamt
1197 1.5 yamt SETATTR3res
1198 1.5 yamt NFSPROC3_SETATTR(SETATTR3args) = 2;
1199 1.5 yamt
1200 1.5 yamt LOOKUP3res
1201 1.5 yamt NFSPROC3_LOOKUP(LOOKUP3args) = 3;
1202 1.5 yamt
1203 1.5 yamt ACCESS3res
1204 1.5 yamt NFSPROC3_ACCESS(ACCESS3args) = 4;
1205 1.5 yamt
1206 1.5 yamt READLINK3res
1207 1.5 yamt NFSPROC3_READLINK(READLINK3args) = 5;
1208 1.5 yamt
1209 1.5 yamt READ3res
1210 1.5 yamt NFSPROC3_READ(READ3args) = 6;
1211 1.5 yamt
1212 1.5 yamt WRITE3res
1213 1.5 yamt NFSPROC3_WRITE(WRITE3args) = 7;
1214 1.5 yamt
1215 1.5 yamt CREATE3res
1216 1.5 yamt NFSPROC3_CREATE(CREATE3args) = 8;
1217 1.5 yamt
1218 1.5 yamt MKDIR3res
1219 1.5 yamt NFSPROC3_MKDIR(MKDIR3args) = 9;
1220 1.5 yamt
1221 1.5 yamt SYMLINK3res
1222 1.5 yamt NFSPROC3_SYMLINK(SYMLINK3args) = 10;
1223 1.5 yamt
1224 1.5 yamt MKNOD3res
1225 1.5 yamt NFSPROC3_MKNOD(MKNOD3args) = 11;
1226 1.5 yamt
1227 1.5 yamt REMOVE3res
1228 1.5 yamt NFSPROC3_REMOVE(REMOVE3args) = 12;
1229 1.5 yamt
1230 1.5 yamt RMDIR3res
1231 1.5 yamt NFSPROC3_RMDIR(RMDIR3args) = 13;
1232 1.5 yamt
1233 1.5 yamt RENAME3res
1234 1.5 yamt NFSPROC3_RENAME(RENAME3args) = 14;
1235 1.5 yamt
1236 1.5 yamt LINK3res
1237 1.5 yamt NFSPROC3_LINK(LINK3args) = 15;
1238 1.5 yamt
1239 1.5 yamt READDIR3res
1240 1.5 yamt NFSPROC3_READDIR(READDIR3args) = 16;
1241 1.5 yamt
1242 1.5 yamt READDIRPLUS3res
1243 1.5 yamt NFSPROC3_READDIRPLUS(READDIRPLUS3args) = 17;
1244 1.5 yamt
1245 1.5 yamt FSSTAT3res
1246 1.5 yamt NFSPROC3_FSSTAT(FSSTAT3args) = 18;
1247 1.5 yamt
1248 1.5 yamt FSINFO3res
1249 1.5 yamt NFSPROC3_FSINFO(FSINFO3args) = 19;
1250 1.5 yamt
1251 1.5 yamt PATHCONF3res
1252 1.5 yamt NFSPROC3_PATHCONF(PATHCONF3args) = 20;
1253 1.5 yamt
1254 1.5 yamt COMMIT3res
1255 1.5 yamt NFSPROC3_COMMIT(COMMIT3args) = 21;
1256 1.5 yamt } = 3;
1257 1.1 jtc } = 100003;
1258 1.1 jtc
1259