blob: 7967380f3aad4e11013f2e0eb6b031cb8af7afc5 [file] [log] [blame]
rsc2277c5d2004-03-21 04:33:13 +00001/*
2 * NFS mounter V3; see RFC 1813
3 */
4/*
5#pragma lib "libsunrpc.a"
6#pragma src "/sys/src/libsunrpc"
7*/
8#define _NFS3H_ /* sorry */
9
10enum {
11 NfsMount1HandleSize = 32,
12 NfsMount3MaxPathSize = 1024,
13 NfsMount3MaxNameSize = 255,
14 NfsMount3MaxHandleSize = 64,
15 NfsMount3Program = 100005,
16 NfsMount3Version = 3,
17 NfsMount1Program = 100005,
18 NfsMount1Version = 1
19};
20typedef struct NfsMount3TNull NfsMount3TNull;
21typedef struct NfsMount3RNull NfsMount3RNull;
22typedef struct NfsMount3TMnt NfsMount3TMnt;
23typedef struct NfsMount3RMnt NfsMount3RMnt;
24typedef struct NfsMount3TDump NfsMount3TDump;
25typedef struct NfsMount3Entry NfsMount3Entry;
26typedef struct NfsMount3RDump NfsMount3RDump;
27typedef struct NfsMount3TUmnt NfsMount3TUmnt;
28typedef struct NfsMount3RUmnt NfsMount3RUmnt;
29typedef struct NfsMount3Export NfsMount3Export;
30typedef struct NfsMount3TUmntall NfsMount3TUmntall;
31typedef struct NfsMount3RUmntall NfsMount3RUmntall;
32typedef struct NfsMount3TExport NfsMount3TExport;
33typedef struct NfsMount3RExport NfsMount3RExport;
34
35typedef enum
36{
37 NfsMount3CallTNull,
38 NfsMount3CallRNull,
39 NfsMount3CallTMnt,
40 NfsMount3CallRMnt,
41 NfsMount3CallTDump,
42 NfsMount3CallRDump,
43 NfsMount3CallTUmnt,
44 NfsMount3CallRUmnt,
45 NfsMount3CallTUmntall,
46 NfsMount3CallRUmntall,
47 NfsMount3CallTExport,
48 NfsMount3CallRExport
49} NfsMount3CallType;
50
51struct NfsMount3TNull {
52 SunCall call;
53};
54
55struct NfsMount3RNull {
56 SunCall call;
57};
58
59struct NfsMount3TMnt {
60 SunCall call;
61 char *path;
62};
63
64struct NfsMount3RMnt {
65 SunCall call;
66 uint status;
67 uchar *handle;
68 uint len;
69 u32int *auth;
70 u32int nauth;
71};
72
73struct NfsMount3TDump {
74 SunCall call;
75};
76
77struct NfsMount3Entry {
78 char *host;
79 char *path;
80};
81
82struct NfsMount3RDump {
83 SunCall call;
84 uchar *data;
85 u32int count;
86};
87
88struct NfsMount3TUmnt {
89 SunCall call;
90 char *path;
91};
92
93struct NfsMount3RUmnt {
94 SunCall call;
95};
96
97struct NfsMount3Export {
98 char *path;
99 char **g;
100 u32int ng;
101};
102
103struct NfsMount3TUmntall {
104 SunCall call;
105};
106
107struct NfsMount3RUmntall {
108 SunCall call;
109};
110
111struct NfsMount3TExport {
112 SunCall call;
113};
114
115struct NfsMount3RExport {
116 SunCall call;
117 uchar *data;
118 u32int count;
119};
120
121uint nfsmount3exportgroupsize(uchar*);
122uint nfsmount3exportsize(NfsMount3Export*);
123int nfsmount3exportpack(uchar*, uchar*, uchar**, NfsMount3Export*);
124int nfsmount3exportunpack(uchar*, uchar*, uchar**, char**, char***, NfsMount3Export*);
125int nfsmount3entrypack(uchar*, uchar*, uchar**, NfsMount3Entry*);
126int nfsmount3entryunpack(uchar*, uchar*, uchar**, NfsMount3Entry*);
127uint nfsmount3entrysize(NfsMount3Entry*);
128
129extern SunProg nfsmount3prog;
130
131/*
132 * NFS V3; see RFC 1813
133 */
134enum {
135 Nfs3MaxHandleSize = 64,
136 Nfs3CookieVerfSize = 8,
137 Nfs3CreateVerfSize = 8,
138 Nfs3WriteVerfSize = 8,
139 Nfs3AccessRead = 1,
140 Nfs3AccessLookup = 2,
141 Nfs3AccessModify = 4,
142 Nfs3AccessExtend = 8,
143 Nfs3AccessDelete = 16,
144 Nfs3AccessExecute = 32,
145 Nfs3FsHasLinks = 1,
146 Nfs3FsHasSymlinks = 2,
147 Nfs3FsHomogeneous = 8,
148 Nfs3FsCanSetTime = 16,
149
150 Nfs3Version = 3,
151 Nfs3Program = 100003,
152};
153typedef enum
154{
155 Nfs3Ok = 0,
156 Nfs3ErrNotOwner = 1,
157 Nfs3ErrNoEnt = 2,
158 Nfs3ErrIo = 5,
159 Nfs3ErrNxio = 6,
160 Nfs3ErrNoMem = 12,
161 Nfs3ErrAcces = 13,
162 Nfs3ErrExist = 17,
163 Nfs3ErrXDev = 18,
164 Nfs3ErrNoDev = 19,
165 Nfs3ErrNotDir = 20,
166 Nfs3ErrIsDir = 21,
167 Nfs3ErrInval = 22,
168 Nfs3ErrFbig = 27,
169 Nfs3ErrNoSpc = 28,
170 Nfs3ErrRoFs = 30,
171 Nfs3ErrMLink = 31,
172 Nfs3ErrNameTooLong = 63,
173 Nfs3ErrNotEmpty = 66,
174 Nfs3ErrDQuot = 69,
175 Nfs3ErrStale = 70,
176 Nfs3ErrRemote = 71,
177 Nfs3ErrBadHandle = 10001,
178 Nfs3ErrNotSync = 10002,
179 Nfs3ErrBadCookie = 10003,
180 Nfs3ErrNotSupp = 10004,
181 Nfs3ErrTooSmall = 10005,
182 Nfs3ErrServerFault = 10006,
183 Nfs3ErrBadType = 10007,
184 Nfs3ErrJukebox = 10008,
185 Nfs3ErrFprintNotFound = 10009,
186 Nfs3ErrAborted = 10010,
187} Nfs3Status;
188
rsc819822c2004-06-16 16:45:22 +0000189void nfs3errstr(Nfs3Status);
rsc2277c5d2004-03-21 04:33:13 +0000190
191typedef enum
192{
193 Nfs3FileReg = 1,
194 Nfs3FileDir = 2,
195 Nfs3FileBlock = 3,
196 Nfs3FileChar = 4,
197 Nfs3FileSymlink = 5,
198 Nfs3FileSocket = 6,
199 Nfs3FileFifo = 7,
200} Nfs3FileType;
201
202enum
203{
204 Nfs3ModeSetUid = 0x800,
205 Nfs3ModeSetGid = 0x400,
206 Nfs3ModeSticky = 0x200,
207};
208
209typedef enum
210{
211 Nfs3CallTNull,
212 Nfs3CallRNull,
213 Nfs3CallTGetattr,
214 Nfs3CallRGetattr,
215 Nfs3CallTSetattr,
216 Nfs3CallRSetattr,
217 Nfs3CallTLookup,
218 Nfs3CallRLookup,
219 Nfs3CallTAccess,
220 Nfs3CallRAccess,
221 Nfs3CallTReadlink,
222 Nfs3CallRReadlink,
223 Nfs3CallTRead,
224 Nfs3CallRRead,
225 Nfs3CallTWrite,
226 Nfs3CallRWrite,
227 Nfs3CallTCreate,
228 Nfs3CallRCreate,
229 Nfs3CallTMkdir,
230 Nfs3CallRMkdir,
231 Nfs3CallTSymlink,
232 Nfs3CallRSymlink,
233 Nfs3CallTMknod,
234 Nfs3CallRMknod,
235 Nfs3CallTRemove,
236 Nfs3CallRRemove,
237 Nfs3CallTRmdir,
238 Nfs3CallRRmdir,
239 Nfs3CallTRename,
240 Nfs3CallRRename,
241 Nfs3CallTLink,
242 Nfs3CallRLink,
243 Nfs3CallTReadDir,
244 Nfs3CallRReadDir,
245 Nfs3CallTReadDirPlus,
246 Nfs3CallRReadDirPlus,
247 Nfs3CallTFsStat,
248 Nfs3CallRFsStat,
249 Nfs3CallTFsInfo,
250 Nfs3CallRFsInfo,
251 Nfs3CallTPathconf,
252 Nfs3CallRPathconf,
253 Nfs3CallTCommit,
254 Nfs3CallRCommit,
255} Nfs3CallType;
256
257typedef struct Nfs3Handle Nfs3Handle;
258typedef struct Nfs3Time Nfs3Time;
259typedef struct Nfs3Attr Nfs3Attr;
260typedef struct Nfs3WccAttr Nfs3WccAttr;
261typedef struct Nfs3Wcc Nfs3Wcc;
262typedef enum
263{
264 Nfs3SetTimeDont = 0,
265 Nfs3SetTimeServer = 1,
266 Nfs3SetTimeClient = 2,
267} Nfs3SetTime;
268
269typedef struct Nfs3SetAttr Nfs3SetAttr;
270typedef struct Nfs3TNull Nfs3TNull;
271typedef struct Nfs3RNull Nfs3RNull;
272typedef struct Nfs3TGetattr Nfs3TGetattr;
273typedef struct Nfs3RGetattr Nfs3RGetattr;
274typedef struct Nfs3TSetattr Nfs3TSetattr;
275typedef struct Nfs3RSetattr Nfs3RSetattr;
276typedef struct Nfs3TLookup Nfs3TLookup;
277typedef struct Nfs3RLookup Nfs3RLookup;
278typedef struct Nfs3TAccess Nfs3TAccess;
279typedef struct Nfs3RAccess Nfs3RAccess;
280typedef struct Nfs3TReadlink Nfs3TReadlink;
281typedef struct Nfs3RReadlink Nfs3RReadlink;
282typedef struct Nfs3TRead Nfs3TRead;
283typedef struct Nfs3RRead Nfs3RRead;
284typedef enum
285{
286 Nfs3SyncNone = 0,
287 Nfs3SyncData = 1,
288 Nfs3SyncFile = 2,
289} Nfs3Sync;
290
291typedef struct Nfs3TWrite Nfs3TWrite;
292typedef struct Nfs3RWrite Nfs3RWrite;
293typedef enum
294{
295 Nfs3CreateUnchecked = 0,
296 Nfs3CreateGuarded = 1,
297 Nfs3CreateExclusive = 2,
298} Nfs3Create;
299
300typedef struct Nfs3TCreate Nfs3TCreate;
301typedef struct Nfs3RCreate Nfs3RCreate;
302typedef struct Nfs3TMkdir Nfs3TMkdir;
303typedef struct Nfs3RMkdir Nfs3RMkdir;
304typedef struct Nfs3TSymlink Nfs3TSymlink;
305typedef struct Nfs3RSymlink Nfs3RSymlink;
306typedef struct Nfs3TMknod Nfs3TMknod;
307typedef struct Nfs3RMknod Nfs3RMknod;
308typedef struct Nfs3TRemove Nfs3TRemove;
309typedef struct Nfs3RRemove Nfs3RRemove;
310typedef struct Nfs3TRmdir Nfs3TRmdir;
311typedef struct Nfs3RRmdir Nfs3RRmdir;
312typedef struct Nfs3TRename Nfs3TRename;
313typedef struct Nfs3RRename Nfs3RRename;
314typedef struct Nfs3TLink Nfs3TLink;
315typedef struct Nfs3RLink Nfs3RLink;
316typedef struct Nfs3TReadDir Nfs3TReadDir;
317typedef struct Nfs3Entry Nfs3Entry;
318typedef struct Nfs3RReadDir Nfs3RReadDir;
319typedef struct Nfs3TReadDirPlus Nfs3TReadDirPlus;
320typedef struct Nfs3EntryPlus Nfs3EntryPlus;
321typedef struct Nfs3RReadDirPlus Nfs3RReadDirPlus;
322typedef struct Nfs3TFsStat Nfs3TFsStat;
323typedef struct Nfs3RFsStat Nfs3RFsStat;
324typedef struct Nfs3TFsInfo Nfs3TFsInfo;
325typedef struct Nfs3RFsInfo Nfs3RFsInfo;
326typedef struct Nfs3TPathconf Nfs3TPathconf;
327typedef struct Nfs3RPathconf Nfs3RPathconf;
328typedef struct Nfs3TCommit Nfs3TCommit;
329typedef struct Nfs3RCommit Nfs3RCommit;
330
331struct Nfs3Handle {
332 uchar h[Nfs3MaxHandleSize];
333 u32int len;
334};
335
336struct Nfs3Time {
337 u32int sec;
338 u32int nsec;
339};
340
341struct Nfs3Attr {
342 Nfs3FileType type;
343 u32int mode;
344 u32int nlink;
345 u32int uid;
346 u32int gid;
347 u64int size;
348 u64int used;
349 u32int major;
350 u32int minor;
351 u64int fsid;
352 u64int fileid;
353 Nfs3Time atime;
354 Nfs3Time mtime;
355 Nfs3Time ctime;
356};
357
358struct Nfs3WccAttr {
359 u64int size;
360 Nfs3Time mtime;
361 Nfs3Time ctime;
362};
363
364struct Nfs3Wcc {
365 u1int haveWccAttr;
366 Nfs3WccAttr wccAttr;
367 u1int haveAttr;
368 Nfs3Attr attr;
369};
370
371struct Nfs3SetAttr {
372 u1int setMode;
373 u32int mode;
374 u1int setUid;
375 u32int uid;
376 u1int setGid;
377 u32int gid;
378 u1int setSize;
379 u64int size;
380 Nfs3SetTime setAtime;
381 Nfs3Time atime;
382 Nfs3SetTime setMtime;
383 Nfs3Time mtime;
384};
385
386struct Nfs3TNull {
387 SunCall call;
388};
389
390struct Nfs3RNull {
391 SunCall call;
392};
393
394struct Nfs3TGetattr {
395 SunCall call;
396 Nfs3Handle handle;
397};
398
399struct Nfs3RGetattr {
400 SunCall call;
401 Nfs3Status status;
402 Nfs3Attr attr;
403};
404
405struct Nfs3TSetattr {
406 SunCall call;
407 Nfs3Handle handle;
408 Nfs3SetAttr attr;
409 u1int checkCtime;
410 Nfs3Time ctime;
411};
412
413struct Nfs3RSetattr {
414 SunCall call;
415 Nfs3Status status;
416 Nfs3Wcc wcc;
417};
418
419struct Nfs3TLookup {
420 SunCall call;
421 Nfs3Handle handle;
422 char *name;
423};
424
425struct Nfs3RLookup {
426 SunCall call;
427 Nfs3Status status;
428 Nfs3Handle handle;
429 u1int haveAttr;
430 Nfs3Attr attr;
431 u1int haveDirAttr;
432 Nfs3Attr dirAttr;
433};
434
435struct Nfs3TAccess {
436 SunCall call;
437 Nfs3Handle handle;
438 u32int access;
439};
440
441struct Nfs3RAccess {
442 SunCall call;
443 Nfs3Status status;
444 u1int haveAttr;
445 Nfs3Attr attr;
446 u32int access;
447};
448
449struct Nfs3TReadlink {
450 SunCall call;
451 Nfs3Handle handle;
452};
453
454struct Nfs3RReadlink {
455 SunCall call;
456 Nfs3Status status;
457 u1int haveAttr;
458 Nfs3Attr attr;
459 char *data;
460};
461
462struct Nfs3TRead {
463 SunCall call;
464 Nfs3Handle handle;
465 u64int offset;
466 u32int count;
467};
468
469struct Nfs3RRead {
470 SunCall call;
471 Nfs3Status status;
472 u1int haveAttr;
473 Nfs3Attr attr;
474 u32int count;
475 u1int eof;
476 uchar *data;
477 u32int ndata;
478};
479
480struct Nfs3TWrite {
481 SunCall call;
482 Nfs3Handle handle;
483 u64int offset;
484 u32int count;
485 Nfs3Sync stable;
486 uchar *data;
487 u32int ndata;
488};
489
490struct Nfs3RWrite {
491 SunCall call;
492 Nfs3Status status;
493 Nfs3Wcc wcc;
494 u32int count;
495 Nfs3Sync committed;
496 uchar verf[Nfs3WriteVerfSize];
497};
498
499struct Nfs3TCreate {
500 SunCall call;
501 Nfs3Handle handle;
502 char *name;
503 Nfs3Create mode;
504 Nfs3SetAttr attr;
505 uchar verf[Nfs3CreateVerfSize];
506};
507
508struct Nfs3RCreate {
509 SunCall call;
510 Nfs3Status status;
511 u1int haveHandle;
512 Nfs3Handle handle;
513 u1int haveAttr;
514 Nfs3Attr attr;
515 Nfs3Wcc dirWcc;
516};
517
518struct Nfs3TMkdir {
519 SunCall call;
520 Nfs3Handle handle;
521 char *name;
522 Nfs3SetAttr attr;
523};
524
525struct Nfs3RMkdir {
526 SunCall call;
527 Nfs3Status status;
528 u1int haveHandle;
529 Nfs3Handle handle;
530 u1int haveAttr;
531 Nfs3Attr attr;
532 Nfs3Wcc dirWcc;
533};
534
535struct Nfs3TSymlink {
536 SunCall call;
537 Nfs3Handle handle;
538 char *name;
539 Nfs3SetAttr attr;
540 char *data;
541};
542
543struct Nfs3RSymlink {
544 SunCall call;
545 Nfs3Status status;
546 u1int haveHandle;
547 Nfs3Handle handle;
548 u1int haveAttr;
549 Nfs3Attr attr;
550 Nfs3Wcc dirWcc;
551};
552
553struct Nfs3TMknod {
554 SunCall call;
555 Nfs3Handle handle;
556 char *name;
557 Nfs3FileType type;
558 Nfs3SetAttr attr;
559 u32int major;
560 u32int minor;
561};
562
563struct Nfs3RMknod {
564 SunCall call;
565 Nfs3Status status;
566 u1int haveHandle;
567 Nfs3Handle handle;
568 u1int haveAttr;
569 Nfs3Attr attr;
570 Nfs3Wcc dirWcc;
571};
572
573struct Nfs3TRemove {
574 SunCall call;
575 Nfs3Handle handle;
576 char *name;
577};
578
579struct Nfs3RRemove {
580 SunCall call;
581 Nfs3Status status;
582 Nfs3Wcc wcc;
583};
584
585struct Nfs3TRmdir {
586 SunCall call;
587 Nfs3Handle handle;
588 char *name;
589};
590
591struct Nfs3RRmdir {
592 SunCall call;
593 Nfs3Status status;
594 Nfs3Wcc wcc;
595};
596
597struct Nfs3TRename {
598 SunCall call;
599 struct {
600 Nfs3Handle handle;
601 char *name;
602 } from;
603 struct {
604 Nfs3Handle handle;
605 char *name;
606 } to;
607};
608
609struct Nfs3RRename {
610 SunCall call;
611 Nfs3Status status;
612 Nfs3Wcc fromWcc;
613 Nfs3Wcc toWcc;
614};
615
616struct Nfs3TLink {
617 SunCall call;
618 Nfs3Handle handle;
619 struct {
620 Nfs3Handle handle;
621 char *name;
622 } link;
623};
624
625struct Nfs3RLink {
626 SunCall call;
627 Nfs3Status status;
628 u1int haveAttr;
629 Nfs3Attr attr;
630 Nfs3Wcc dirWcc;
631};
632
633struct Nfs3TReadDir {
634 SunCall call;
635 Nfs3Handle handle;
636 u64int cookie;
637 uchar verf[Nfs3CookieVerfSize];
638 u32int count;
639};
640
641struct Nfs3RReadDir {
642 SunCall call;
643 Nfs3Status status;
644 u1int haveAttr;
645 Nfs3Attr attr;
646 uchar verf[Nfs3CookieVerfSize];
647 uchar *data;
648 u32int count;
649 u1int eof;
650};
651
652struct Nfs3TReadDirPlus {
653 SunCall call;
654 Nfs3Handle handle;
655 u64int cookie;
656 uchar verf[Nfs3CookieVerfSize];
657 u32int dirCount;
658 u32int maxCount;
659};
660
661struct Nfs3Entry {
662 u64int fileid;
663 char *name;
664 u64int cookie;
665 u1int haveAttr;
666 Nfs3Attr attr;
667 u1int haveHandle;
668 Nfs3Handle handle;
669};
670
671struct Nfs3RReadDirPlus {
672 SunCall call;
673 Nfs3Status status;
674 u1int haveAttr;
675 Nfs3Attr attr;
676 uchar verf[Nfs3CookieVerfSize];
677 uchar *data;
678 u32int count;
679 u1int eof;
680};
681
682struct Nfs3TFsStat {
683 SunCall call;
684 Nfs3Handle handle;
685};
686
687struct Nfs3RFsStat {
688 SunCall call;
689 Nfs3Status status;
690 u1int haveAttr;
691 Nfs3Attr attr;
692 u64int totalBytes;
693 u64int freeBytes;
694 u64int availBytes;
695 u64int totalFiles;
696 u64int freeFiles;
697 u64int availFiles;
698 u32int invarSec;
699};
700
701struct Nfs3TFsInfo {
702 SunCall call;
703 Nfs3Handle handle;
704};
705
706struct Nfs3RFsInfo {
707 SunCall call;
708 Nfs3Status status;
709 u1int haveAttr;
710 Nfs3Attr attr;
711 u32int readMax;
712 u32int readPref;
713 u32int readMult;
714 u32int writeMax;
715 u32int writePref;
716 u32int writeMult;
717 u32int readDirPref;
718 u64int maxFileSize;
719 Nfs3Time timePrec;
720 u32int flags;
721};
722
723struct Nfs3TPathconf {
724 SunCall call;
725 Nfs3Handle handle;
726};
727
728struct Nfs3RPathconf {
729 SunCall call;
730 Nfs3Status status;
731 u1int haveAttr;
732 Nfs3Attr attr;
733 u32int maxLink;
734 u32int maxName;
735 u1int noTrunc;
736 u1int chownRestricted;
737 u1int caseInsensitive;
738 u1int casePreserving;
739};
740
741struct Nfs3TCommit {
742 SunCall call;
743 Nfs3Handle handle;
744 u64int offset;
745 u32int count;
746};
747
748struct Nfs3RCommit {
749 SunCall call;
750 Nfs3Status status;
751 Nfs3Wcc wcc;
752 uchar verf[Nfs3WriteVerfSize];
753};
754
755char *nfs3statusstr(Nfs3Status);
756char *nfs3typestr(SunCallType);
757char *nfs3settimestr(Nfs3SetTime);
758char *nfs3syncstr(Nfs3Sync);
759
760void nfs3handleprint(Fmt*, Nfs3Handle*);
761u32int nfs3handlesize(Nfs3Handle*);
762int nfs3handlepack(uchar*, uchar*, uchar**, Nfs3Handle*);
763int nfs3handleunpack(uchar*, uchar*, uchar**, Nfs3Handle*);
764
765void nfs3timeprint(Fmt*, Nfs3Time*);
766u32int nfs3timesize(Nfs3Time*);
767int nfs3timepack(uchar*, uchar*, uchar**, Nfs3Time*);
768int nfs3timeunpack(uchar*, uchar*, uchar**, Nfs3Time*);
769
770void nfs3attrprint(Fmt*, Nfs3Attr*);
771u32int nfs3attrsize(Nfs3Attr*);
772int nfs3attrpack(uchar*, uchar*, uchar**, Nfs3Attr*);
773int nfs3attrunpack(uchar*, uchar*, uchar**, Nfs3Attr*);
774
775void nfs3wccattrprint(Fmt*, Nfs3WccAttr*);
776u32int nfs3wccattrsize(Nfs3WccAttr*);
777int nfs3wccattrpack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
778int nfs3wccattrunpack(uchar*, uchar*, uchar**, Nfs3WccAttr*);
779
780void nfs3wccprint(Fmt*, Nfs3Wcc*);
781u32int nfs3wccsize(Nfs3Wcc*);
782int nfs3wccpack(uchar*, uchar*, uchar**, Nfs3Wcc*);
783int nfs3wccunpack(uchar*, uchar*, uchar**, Nfs3Wcc*);
784
785void nfs3setattrprint(Fmt*, Nfs3SetAttr*);
786u32int nfs3setattrsize(Nfs3SetAttr*);
787int nfs3setattrpack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
788int nfs3setattrunpack(uchar*, uchar*, uchar**, Nfs3SetAttr*);
789
790extern SunProg nfs3prog;
791
792void nfs3entryprint(Fmt*, Nfs3Entry*);
793u32int nfs3entrysize(Nfs3Entry*);
794int nfs3entrypack(uchar*, uchar*, uchar**, Nfs3Entry*);
795int nfs3entryunpack(uchar*, uchar*, uchar**, Nfs3Entry*);
796
797void nfs3entryplusprint(Fmt*, Nfs3Entry*);
798u32int nfs3entryplussize(Nfs3Entry*);
799int nfs3entrypluspack(uchar*, uchar*, uchar**, Nfs3Entry*);
800int nfs3entryplusunpack(uchar*, uchar*, uchar**, Nfs3Entry*);
801