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;
137 nfsmount1rmntsize(NfsMount3RMnt *x)
144 a = a + NfsMount1HandleSize;
151 nfsmount3rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
154 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
157 if(sunvaropaquepack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err;
158 if(sunuint32pack(a, ea, &a, &x->nauth) < 0) goto Err;
159 for(i=0; i<x->nauth; i++)
160 if(sunuint32pack(a, ea, &a, &x->auth[i]) < 0) goto Err;
170 nfsmount1rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
172 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
175 if(x->len != NfsMount1HandleSize)
177 if(sunfixedopaquepack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
189 nfsmount1rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
191 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
194 x->len = NfsMount1HandleSize;
197 if(sunfixedopaqueunpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
210 nfsmount3rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
214 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
217 if(sunvaropaqueunpack(a, ea, &a, &x->handle, &x->len, NfsMount3MaxHandleSize) < 0) goto Err;
218 if(sunuint32unpack(a, ea, &a, &x->nauth) < 0) goto Err;
219 x->auth = (u32int*)a;
220 for(i=0; i<x->nauth; i++)
221 if(sunuint32unpack(a, ea, &a, &x->auth[i]) < 0) goto Err;
231 nfsmount3tdumpprint(Fmt *fmt, NfsMount3TDump *x)
234 fmtprint(fmt, "%s\n", "NfsMount3TDump");
237 nfsmount3tdumpsize(NfsMount3TDump *x)
245 nfsmount3tdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
253 nfsmount3tdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
261 nfsmount3entryprint(Fmt *fmt, NfsMount3Entry *x)
263 fmtprint(fmt, "%s\n", "NfsMount3Entry");
264 fmtprint(fmt, "\t%s=", "host");
265 fmtprint(fmt, "\"%s\"", x->host);
267 fmtprint(fmt, "\t%s=", "path");
268 fmtprint(fmt, "\"%s\"", x->path);
272 nfsmount3entrysize(NfsMount3Entry *x)
276 a = 0 + sunstringsize(x->host) + sunstringsize(x->path);
280 nfsmount3entrypack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
285 if(sunuint1pack(a, ea, &a, &one) < 0) goto Err;
286 if(sunstringpack(a, ea, &a, &x->host, 255) < 0) goto Err;
287 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
295 nfsmount3entryunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
299 if(sunuint1unpack(a, ea, &a, &one) < 0 || one != 1) goto Err;
300 if(sunstringunpack(a, ea, &a, &x->host, NfsMount3MaxNameSize) < 0) goto Err;
301 if(sunstringunpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
309 nfsmount3rdumpprint(Fmt *fmt, NfsMount3RDump *x)
312 fmtprint(fmt, "%s\n", "NfsMount3RDump");
315 nfsmount3rdumpsize(NfsMount3RDump *x)
325 nfsmount3rdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
330 if(a+x->count > ea) goto Err;
331 memmove(a, x->data, x->count);
333 if(sunuint1pack(a, ea, &a, &zero) < 0)
342 nfsmount3rdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
351 if(sunuint1unpack(a, ea, &a, &u1) < 0)
355 if(sunuint32unpack(a, ea, &a, &u32) < 0
356 || u32 > NfsMount3MaxNameSize
358 || sunuint32unpack(a, ea, &a, &u32) < 0
359 || u32 > NfsMount3MaxPathSize
363 x->count = (a-4) - oa;
372 nfsmount3tumntprint(Fmt *fmt, NfsMount3TUmnt *x)
374 fmtprint(fmt, "%s\n", "NfsMount3TUmnt");
375 fmtprint(fmt, "\t%s=", "path");
376 fmtprint(fmt, "\"%s\"", x->path);
380 nfsmount3tumntsize(NfsMount3TUmnt *x)
384 a = 0 + sunstringsize(x->path);
388 nfsmount3tumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
390 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
398 nfsmount3tumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
400 if(sunstringunpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
408 nfsmount3rumntprint(Fmt *fmt, NfsMount3RUmnt *x)
411 fmtprint(fmt, "%s\n", "NfsMount3RUmnt");
414 nfsmount3rumntsize(NfsMount3RUmnt *x)
422 nfsmount3rumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
430 nfsmount3rumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
438 nfsmount3tumntallprint(Fmt *fmt, NfsMount3TUmntall *x)
441 fmtprint(fmt, "%s\n", "NfsMount3TUmntall");
444 nfsmount3tumntallsize(NfsMount3TUmntall *x)
452 nfsmount3tumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
460 nfsmount3tumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
468 nfsmount3rumntallprint(Fmt *fmt, NfsMount3RUmntall *x)
471 fmtprint(fmt, "%s\n", "NfsMount3RUmntall");
474 nfsmount3rumntallsize(NfsMount3RUmntall *x)
482 nfsmount3rumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
490 nfsmount3rumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
498 nfsmount3texportprint(Fmt *fmt, NfsMount3TExport *x)
501 fmtprint(fmt, "%s\n", "NfsMount3TExport");
504 nfsmount3texportsize(NfsMount3TExport *x)
512 nfsmount3texportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
520 nfsmount3texportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
528 nfsmount3rexportprint(Fmt *fmt, NfsMount3RExport *x)
531 fmtprint(fmt, "%s\n", "NfsMount3RExport");
535 nfsmount3rexportsize(NfsMount3RExport *x)
541 a += 4; /* end of export list */
545 nfsmount3rexportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
550 if(a+x->count > ea) goto Err;
551 memmove(a, x->data, x->count);
553 if(sunuint1pack(a, ea, &a, &zero) < 0)
562 nfsmount3rexportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
572 if(sunuint1unpack(a, ea, &a, &u1) < 0)
576 if(sunuint32unpack(a, ea, &a, &u32) < 0
577 || (a += (u32+3)&~3) >= ea)
580 if(sunuint1unpack(a, ea, &a, &u1) < 0)
584 if(sunuint32unpack(a, ea, &a, &u32) < 0
585 || (a += (u32+3)&~3) >= ea)
590 x->count = (a-4) - oa;
598 nfsmount3exportgroupsize(uchar *a)
605 sunuint32unpack(a, a+4, &a, &n);
609 sunuint1unpack(a, a+4, &a, &have);
613 sunuint32unpack(a, a+4, &a, &n);
619 nfsmount3exportunpack(uchar *a, uchar *ea, uchar **pa, char **gp, char ***pgp, NfsMount3Export *x)
624 if(sunuint1unpack(a, ea, &a, &u1) < 0 || u1 != 1) goto Err;
625 if(sunstringunpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
629 if(sunuint1unpack(a, ea, &a, &u1) < 0) goto Err;
632 if(sunstringunpack(a, ea, &a, &gp[ng++], NfsMount3MaxNameSize) < 0) goto Err;
644 nfsmount3exportsize(NfsMount3Export *x)
649 a = 4 + sunstringsize(x->path);
650 for(i=0; i<x->ng; i++)
651 a += 4 + sunstringsize(x->g[i]);
656 nfsmount3exportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Export *x)
662 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
663 if(sunstringpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
664 for(i=0; i<x->ng; i++){
665 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
666 if(sunstringpack(a, ea, &a, &x->g[i], NfsMount3MaxNameSize) < 0) goto Err;
669 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
678 typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
679 typedef void (*F)(Fmt*, SunCall*);
680 typedef uint (*S)(SunCall*);
682 static SunProc proc3[] = {
683 (P)nfsmount3tnullpack, (P)nfsmount3tnullunpack, (S)nfsmount3tnullsize, (F)nfsmount3tnullprint, sizeof(NfsMount3TNull),
684 (P)nfsmount3rnullpack, (P)nfsmount3rnullunpack, (S)nfsmount3rnullsize, (F)nfsmount3rnullprint, sizeof(NfsMount3RNull),
685 (P)nfsmount3tmntpack, (P)nfsmount3tmntunpack, (S)nfsmount3tmntsize, (F)nfsmount3tmntprint, sizeof(NfsMount3TMnt),
686 (P)nfsmount3rmntpack, (P)nfsmount3rmntunpack, (S)nfsmount3rmntsize, (F)nfsmount3rmntprint, sizeof(NfsMount3RMnt),
687 (P)nfsmount3tdumppack, (P)nfsmount3tdumpunpack, (S)nfsmount3tdumpsize, (F)nfsmount3tdumpprint, sizeof(NfsMount3TDump),
688 (P)nfsmount3rdumppack, (P)nfsmount3rdumpunpack, (S)nfsmount3rdumpsize, (F)nfsmount3rdumpprint, sizeof(NfsMount3RDump),
689 (P)nfsmount3tumntpack, (P)nfsmount3tumntunpack, (S)nfsmount3tumntsize, (F)nfsmount3tumntprint, sizeof(NfsMount3TUmnt),
690 (P)nfsmount3rumntpack, (P)nfsmount3rumntunpack, (S)nfsmount3rumntsize, (F)nfsmount3rumntprint, sizeof(NfsMount3RUmnt),
691 (P)nfsmount3tumntallpack, (P)nfsmount3tumntallunpack, (S)nfsmount3tumntallsize, (F)nfsmount3tumntallprint, sizeof(NfsMount3TUmntall),
692 (P)nfsmount3rumntallpack, (P)nfsmount3rumntallunpack, (S)nfsmount3rumntallsize, (F)nfsmount3rumntallprint, sizeof(NfsMount3RUmntall),
693 (P)nfsmount3texportpack, (P)nfsmount3texportunpack, (S)nfsmount3texportsize, (F)nfsmount3texportprint, sizeof(NfsMount3TExport),
694 (P)nfsmount3rexportpack, (P)nfsmount3rexportunpack, (S)nfsmount3rexportsize, (F)nfsmount3rexportprint, sizeof(NfsMount3RExport),
697 static SunProc proc1[] = {
698 (P)nfsmount3tnullpack, (P)nfsmount3tnullunpack, (S)nfsmount3tnullsize, (F)nfsmount3tnullprint, sizeof(NfsMount3TNull),
699 (P)nfsmount3rnullpack, (P)nfsmount3rnullunpack, (S)nfsmount3rnullsize, (F)nfsmount3rnullprint, sizeof(NfsMount3RNull),
700 (P)nfsmount3tmntpack, (P)nfsmount3tmntunpack, (S)nfsmount3tmntsize, (F)nfsmount3tmntprint, sizeof(NfsMount3TMnt),
701 (P)nfsmount1rmntpack, (P)nfsmount1rmntunpack, (S)nfsmount1rmntsize, (F)nfsmount3rmntprint, sizeof(NfsMount3RMnt),
702 (P)nfsmount3tdumppack, (P)nfsmount3tdumpunpack, (S)nfsmount3tdumpsize, (F)nfsmount3tdumpprint, sizeof(NfsMount3TDump),
703 (P)nfsmount3rdumppack, (P)nfsmount3rdumpunpack, (S)nfsmount3rdumpsize, (F)nfsmount3rdumpprint, sizeof(NfsMount3RDump),
704 (P)nfsmount3tumntpack, (P)nfsmount3tumntunpack, (S)nfsmount3tumntsize, (F)nfsmount3tumntprint, sizeof(NfsMount3TUmnt),
705 (P)nfsmount3rumntpack, (P)nfsmount3rumntunpack, (S)nfsmount3rumntsize, (F)nfsmount3rumntprint, sizeof(NfsMount3RUmnt),
706 (P)nfsmount3tumntallpack, (P)nfsmount3tumntallunpack, (S)nfsmount3tumntallsize, (F)nfsmount3tumntallprint, sizeof(NfsMount3TUmntall),
707 (P)nfsmount3rumntallpack, (P)nfsmount3rumntallunpack, (S)nfsmount3rumntallsize, (F)nfsmount3rumntallprint, sizeof(NfsMount3RUmntall),
708 (P)nfsmount3texportpack, (P)nfsmount3texportunpack, (S)nfsmount3texportsize, (F)nfsmount3texportprint, sizeof(NfsMount3TExport),
709 (P)nfsmount3rexportpack, (P)nfsmount3rexportunpack, (S)nfsmount3rexportsize, (F)nfsmount3rexportprint, sizeof(NfsMount3RExport),
712 SunProg nfsmount3prog =
720 SunProg nfsmount1prog =