2 * SUN NFSv3 Mounter. See RFC 1813
12 nfsmount3tnullprint(Fmt *fmt, NfsMount3TNull *x)
15 fmtprint(fmt, "%s\n", "NfsMount3TNull");
18 nfsmount3tnullsize(NfsMount3TNull *x)
26 nfsmount3tnullpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x)
34 nfsmount3tnullunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x)
42 nfsmount3rnullprint(Fmt *fmt, NfsMount3RNull *x)
45 fmtprint(fmt, "%s\n", "NfsMount3RNull");
48 nfsmount3rnullsize(NfsMount3RNull *x)
56 nfsmount3rnullpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x)
64 nfsmount3rnullunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x)
72 nfsmount3tmntprint(Fmt *fmt, NfsMount3TMnt *x)
74 fmtprint(fmt, "%s\n", "NfsMount3TMnt");
75 fmtprint(fmt, "\t%s=", "path");
76 fmtprint(fmt, "\"%s\"", x->path);
80 nfsmount3tmntsize(NfsMount3TMnt *x)
84 a = 0 + sunstringsize(x->path);
88 nfsmount3tmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x)
90 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
98 nfsmount3tmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x)
100 if(sunstringunpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
108 nfsmount3rmntprint(Fmt *fmt, NfsMount3RMnt *x)
110 fmtprint(fmt, "%s\n", "NfsMount3RMnt");
111 fmtprint(fmt, "\t%s=", "status");
112 fmtprint(fmt, "%ud", x->status);
116 fmtprint(fmt, "\t%s=", "handle");
117 fmtprint(fmt, "%.*H", x->len, x->handle);
123 nfsmount3rmntsize(NfsMount3RMnt *x)
130 a = a + sunvaropaquesize(x->len);
131 a = a + 4 + 4 * x->nauth;
138 nfsmount1rmntsize(NfsMount3RMnt *x)
145 a = a + NfsMount1HandleSize;
152 nfsmount3rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
155 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
158 if(sunvaropaquepack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err;
159 if(sunuint32pack(a, ea, &a, &x->nauth) < 0) goto Err;
160 for(i=0; i<x->nauth; i++)
161 if(sunuint32pack(a, ea, &a, &x->auth[i]) < 0) goto Err;
171 nfsmount1rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
173 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
176 if(x->len != NfsMount1HandleSize)
178 if(sunfixedopaquepack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
190 nfsmount1rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
192 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
195 x->len = NfsMount1HandleSize;
198 if(sunfixedopaqueunpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
211 nfsmount3rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
215 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
218 if(sunvaropaqueunpack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err;
219 if(sunuint32unpack(a, ea, &a, &x->nauth) < 0) goto Err;
220 x->auth = (u32int*)a;
221 for(i=0; i<x->nauth; i++)
222 if(sunuint32unpack(a, ea, &a, &x->auth[i]) < 0) goto Err;
232 nfsmount3tdumpprint(Fmt *fmt, NfsMount3TDump *x)
235 fmtprint(fmt, "%s\n", "NfsMount3TDump");
238 nfsmount3tdumpsize(NfsMount3TDump *x)
246 nfsmount3tdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
254 nfsmount3tdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
262 nfsmount3entryprint(Fmt *fmt, NfsMount3Entry *x)
264 fmtprint(fmt, "%s\n", "NfsMount3Entry");
265 fmtprint(fmt, "\t%s=", "host");
266 fmtprint(fmt, "\"%s\"", x->host);
268 fmtprint(fmt, "\t%s=", "path");
269 fmtprint(fmt, "\"%s\"", x->path);
273 nfsmount3entrysize(NfsMount3Entry *x)
277 a = 0 + sunstringsize(x->host) + sunstringsize(x->path);
281 nfsmount3entrypack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
286 if(sunuint1pack(a, ea, &a, &one) < 0) goto Err;
287 if(sunstringpack(a, ea, &a, &x->host, 255) < 0) goto Err;
288 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
296 nfsmount3entryunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
300 if(sunuint1unpack(a, ea, &a, &one) < 0 || one != 1) goto Err;
301 if(sunstringunpack(a, ea, &a, &x->host, NfsMount3MaxNameSize) < 0) goto Err;
302 if(sunstringunpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
310 nfsmount3rdumpprint(Fmt *fmt, NfsMount3RDump *x)
313 fmtprint(fmt, "%s\n", "NfsMount3RDump");
316 nfsmount3rdumpsize(NfsMount3RDump *x)
326 nfsmount3rdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
331 if(a+x->count > ea) goto Err;
332 memmove(a, x->data, x->count);
334 if(sunuint1pack(a, ea, &a, &zero) < 0)
343 nfsmount3rdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
352 if(sunuint1unpack(a, ea, &a, &u1) < 0)
356 if(sunuint32unpack(a, ea, &a, &u32) < 0
357 || u32 > NfsMount3MaxNameSize
359 || sunuint32unpack(a, ea, &a, &u32) < 0
360 || u32 > NfsMount3MaxPathSize
364 x->count = (a-4) - oa;
373 nfsmount3tumntprint(Fmt *fmt, NfsMount3TUmnt *x)
375 fmtprint(fmt, "%s\n", "NfsMount3TUmnt");
376 fmtprint(fmt, "\t%s=", "path");
377 fmtprint(fmt, "\"%s\"", x->path);
381 nfsmount3tumntsize(NfsMount3TUmnt *x)
385 a = 0 + sunstringsize(x->path);
389 nfsmount3tumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
391 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
399 nfsmount3tumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
401 if(sunstringunpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
409 nfsmount3rumntprint(Fmt *fmt, NfsMount3RUmnt *x)
412 fmtprint(fmt, "%s\n", "NfsMount3RUmnt");
415 nfsmount3rumntsize(NfsMount3RUmnt *x)
423 nfsmount3rumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
431 nfsmount3rumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
439 nfsmount3tumntallprint(Fmt *fmt, NfsMount3TUmntall *x)
442 fmtprint(fmt, "%s\n", "NfsMount3TUmntall");
445 nfsmount3tumntallsize(NfsMount3TUmntall *x)
453 nfsmount3tumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
461 nfsmount3tumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
469 nfsmount3rumntallprint(Fmt *fmt, NfsMount3RUmntall *x)
472 fmtprint(fmt, "%s\n", "NfsMount3RUmntall");
475 nfsmount3rumntallsize(NfsMount3RUmntall *x)
483 nfsmount3rumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
491 nfsmount3rumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
499 nfsmount3texportprint(Fmt *fmt, NfsMount3TExport *x)
502 fmtprint(fmt, "%s\n", "NfsMount3TExport");
505 nfsmount3texportsize(NfsMount3TExport *x)
513 nfsmount3texportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
521 nfsmount3texportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
529 nfsmount3rexportprint(Fmt *fmt, NfsMount3RExport *x)
532 fmtprint(fmt, "%s\n", "NfsMount3RExport");
536 nfsmount3rexportsize(NfsMount3RExport *x)
542 a += 4; /* end of export list */
546 nfsmount3rexportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
551 if(a+x->count > ea) goto Err;
552 memmove(a, x->data, x->count);
554 if(sunuint1pack(a, ea, &a, &zero) < 0)
563 nfsmount3rexportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
573 if(sunuint1unpack(a, ea, &a, &u1) < 0)
577 if(sunuint32unpack(a, ea, &a, &u32) < 0
578 || (a += (u32+3)&~3) >= ea)
581 if(sunuint1unpack(a, ea, &a, &u1) < 0)
585 if(sunuint32unpack(a, ea, &a, &u32) < 0
586 || (a += (u32+3)&~3) >= ea)
591 x->count = (a-4) - oa;
599 nfsmount3exportgroupsize(uchar *a)
606 sunuint32unpack(a, a+4, &a, &n);
610 sunuint1unpack(a, a+4, &a, &have);
614 sunuint32unpack(a, a+4, &a, &n);
620 nfsmount3exportunpack(uchar *a, uchar *ea, uchar **pa, char **gp, char ***pgp, NfsMount3Export *x)
625 if(sunuint1unpack(a, ea, &a, &u1) < 0 || u1 != 1) goto Err;
626 if(sunstringunpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
630 if(sunuint1unpack(a, ea, &a, &u1) < 0) goto Err;
633 if(sunstringunpack(a, ea, &a, &gp[ng++], NfsMount3MaxNameSize) < 0) goto Err;
645 nfsmount3exportsize(NfsMount3Export *x)
650 a = 4 + sunstringsize(x->path);
651 for(i=0; i<x->ng; i++)
652 a += 4 + sunstringsize(x->g[i]);
657 nfsmount3exportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Export *x)
663 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
664 if(sunstringpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
665 for(i=0; i<x->ng; i++){
666 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
667 if(sunstringpack(a, ea, &a, &x->g[i], NfsMount3MaxNameSize) < 0) goto Err;
670 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
679 typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
680 typedef void (*F)(Fmt*, SunCall*);
681 typedef uint (*S)(SunCall*);
683 static SunProc proc3[] = {
684 (P)nfsmount3tnullpack, (P)nfsmount3tnullunpack, (S)nfsmount3tnullsize, (F)nfsmount3tnullprint, sizeof(NfsMount3TNull),
685 (P)nfsmount3rnullpack, (P)nfsmount3rnullunpack, (S)nfsmount3rnullsize, (F)nfsmount3rnullprint, sizeof(NfsMount3RNull),
686 (P)nfsmount3tmntpack, (P)nfsmount3tmntunpack, (S)nfsmount3tmntsize, (F)nfsmount3tmntprint, sizeof(NfsMount3TMnt),
687 (P)nfsmount3rmntpack, (P)nfsmount3rmntunpack, (S)nfsmount3rmntsize, (F)nfsmount3rmntprint, sizeof(NfsMount3RMnt),
688 (P)nfsmount3tdumppack, (P)nfsmount3tdumpunpack, (S)nfsmount3tdumpsize, (F)nfsmount3tdumpprint, sizeof(NfsMount3TDump),
689 (P)nfsmount3rdumppack, (P)nfsmount3rdumpunpack, (S)nfsmount3rdumpsize, (F)nfsmount3rdumpprint, sizeof(NfsMount3RDump),
690 (P)nfsmount3tumntpack, (P)nfsmount3tumntunpack, (S)nfsmount3tumntsize, (F)nfsmount3tumntprint, sizeof(NfsMount3TUmnt),
691 (P)nfsmount3rumntpack, (P)nfsmount3rumntunpack, (S)nfsmount3rumntsize, (F)nfsmount3rumntprint, sizeof(NfsMount3RUmnt),
692 (P)nfsmount3tumntallpack, (P)nfsmount3tumntallunpack, (S)nfsmount3tumntallsize, (F)nfsmount3tumntallprint, sizeof(NfsMount3TUmntall),
693 (P)nfsmount3rumntallpack, (P)nfsmount3rumntallunpack, (S)nfsmount3rumntallsize, (F)nfsmount3rumntallprint, sizeof(NfsMount3RUmntall),
694 (P)nfsmount3texportpack, (P)nfsmount3texportunpack, (S)nfsmount3texportsize, (F)nfsmount3texportprint, sizeof(NfsMount3TExport),
695 (P)nfsmount3rexportpack, (P)nfsmount3rexportunpack, (S)nfsmount3rexportsize, (F)nfsmount3rexportprint, sizeof(NfsMount3RExport),
698 static SunProc proc1[] = {
699 (P)nfsmount3tnullpack, (P)nfsmount3tnullunpack, (S)nfsmount3tnullsize, (F)nfsmount3tnullprint, sizeof(NfsMount3TNull),
700 (P)nfsmount3rnullpack, (P)nfsmount3rnullunpack, (S)nfsmount3rnullsize, (F)nfsmount3rnullprint, sizeof(NfsMount3RNull),
701 (P)nfsmount3tmntpack, (P)nfsmount3tmntunpack, (S)nfsmount3tmntsize, (F)nfsmount3tmntprint, sizeof(NfsMount3TMnt),
702 (P)nfsmount1rmntpack, (P)nfsmount1rmntunpack, (S)nfsmount1rmntsize, (F)nfsmount3rmntprint, sizeof(NfsMount3RMnt),
703 (P)nfsmount3tdumppack, (P)nfsmount3tdumpunpack, (S)nfsmount3tdumpsize, (F)nfsmount3tdumpprint, sizeof(NfsMount3TDump),
704 (P)nfsmount3rdumppack, (P)nfsmount3rdumpunpack, (S)nfsmount3rdumpsize, (F)nfsmount3rdumpprint, sizeof(NfsMount3RDump),
705 (P)nfsmount3tumntpack, (P)nfsmount3tumntunpack, (S)nfsmount3tumntsize, (F)nfsmount3tumntprint, sizeof(NfsMount3TUmnt),
706 (P)nfsmount3rumntpack, (P)nfsmount3rumntunpack, (S)nfsmount3rumntsize, (F)nfsmount3rumntprint, sizeof(NfsMount3RUmnt),
707 (P)nfsmount3tumntallpack, (P)nfsmount3tumntallunpack, (S)nfsmount3tumntallsize, (F)nfsmount3tumntallprint, sizeof(NfsMount3TUmntall),
708 (P)nfsmount3rumntallpack, (P)nfsmount3rumntallunpack, (S)nfsmount3rumntallsize, (F)nfsmount3rumntallprint, sizeof(NfsMount3RUmntall),
709 (P)nfsmount3texportpack, (P)nfsmount3texportunpack, (S)nfsmount3texportsize, (F)nfsmount3texportprint, sizeof(NfsMount3TExport),
710 (P)nfsmount3rexportpack, (P)nfsmount3rexportunpack, (S)nfsmount3rexportsize, (F)nfsmount3rexportprint, sizeof(NfsMount3RExport),
713 SunProg nfsmount3prog =
721 SunProg nfsmount1prog =