Blob


1 /*
2 * SUN NFSv3 Mounter. See RFC 1813
3 */
5 #include <u.h>
6 #include <libc.h>
7 #include <thread.h>
8 #include <sunrpc.h>
9 #include <nfs3.h>
11 void
12 nfsmount3tnullprint(Fmt *fmt, NfsMount3TNull *x)
13 {
14 USED(x);
15 fmtprint(fmt, "%s\n", "NfsMount3TNull");
16 }
17 uint
18 nfsmount3tnullsize(NfsMount3TNull *x)
19 {
20 uint a;
21 USED(x);
22 a = 0;
23 return a;
24 }
25 int
26 nfsmount3tnullpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x)
27 {
28 USED(ea);
29 USED(x);
30 *pa = a;
31 return 0;
32 }
33 int
34 nfsmount3tnullunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TNull *x)
35 {
36 USED(ea);
37 USED(x);
38 *pa = a;
39 return 0;
40 }
41 void
42 nfsmount3rnullprint(Fmt *fmt, NfsMount3RNull *x)
43 {
44 USED(x);
45 fmtprint(fmt, "%s\n", "NfsMount3RNull");
46 }
47 uint
48 nfsmount3rnullsize(NfsMount3RNull *x)
49 {
50 uint a;
51 USED(x);
52 a = 0;
53 return a;
54 }
55 int
56 nfsmount3rnullpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x)
57 {
58 USED(ea);
59 USED(x);
60 *pa = a;
61 return 0;
62 }
63 int
64 nfsmount3rnullunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RNull *x)
65 {
66 USED(ea);
67 USED(x);
68 *pa = a;
69 return 0;
70 }
71 void
72 nfsmount3tmntprint(Fmt *fmt, NfsMount3TMnt *x)
73 {
74 fmtprint(fmt, "%s\n", "NfsMount3TMnt");
75 fmtprint(fmt, "\t%s=", "path");
76 fmtprint(fmt, "\"%s\"", x->path);
77 fmtprint(fmt, "\n");
78 }
79 uint
80 nfsmount3tmntsize(NfsMount3TMnt *x)
81 {
82 uint a;
83 USED(x);
84 a = 0 + sunstringsize(x->path);
85 return a;
86 }
87 int
88 nfsmount3tmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x)
89 {
90 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
91 *pa = a;
92 return 0;
93 Err:
94 *pa = ea;
95 return -1;
96 }
97 int
98 nfsmount3tmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TMnt *x)
99 {
100 if(sunstringunpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
101 *pa = a;
102 return 0;
103 Err:
104 *pa = ea;
105 return -1;
107 void
108 nfsmount3rmntprint(Fmt *fmt, NfsMount3RMnt *x)
110 fmtprint(fmt, "%s\n", "NfsMount3RMnt");
111 fmtprint(fmt, "\t%s=", "status");
112 fmtprint(fmt, "%ud", x->status);
113 fmtprint(fmt, "\n");
114 switch(x->status){
115 case 0:
116 fmtprint(fmt, "\t%s=", "handle");
117 fmtprint(fmt, "%.*H", x->len, x->handle);
118 fmtprint(fmt, "\n");
119 break;
122 uint
123 nfsmount3rmntsize(NfsMount3RMnt *x)
125 uint a;
126 USED(x);
127 a = 0 + 4;
128 switch(x->status){
129 case 0:
130 a = a + sunvaropaquesize(x->len);
131 a = a + 4 + 4 * x->nauth;
132 break;
134 return a;
136 uint
137 nfsmount1rmntsize(NfsMount3RMnt *x)
139 uint a;
140 USED(x);
141 a = 0 + 4;
142 switch(x->status){
143 case 0:
144 a = a + NfsMount1HandleSize;
145 break;
147 return a;
150 int
151 nfsmount3rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
153 int i;
154 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
155 switch(x->status){
156 case 0:
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;
161 break;
163 *pa = a;
164 return 0;
165 Err:
166 *pa = ea;
167 return -1;
169 int
170 nfsmount1rmntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
172 if(sunuint32pack(a, ea, &a, &x->status) < 0) goto Err;
173 switch(x->status){
174 case 0:
175 if(x->len != NfsMount1HandleSize)
176 goto Err;
177 if(sunfixedopaquepack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
178 if(x->nauth != 0)
179 goto Err;
180 break;
182 *pa = a;
183 return 0;
184 Err:
185 *pa = ea;
186 return -1;
188 int
189 nfsmount1rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
191 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
192 switch(x->status){
193 case 0:
194 x->len = NfsMount1HandleSize;
195 x->nauth = 0;
196 x->auth = 0;
197 if(sunfixedopaqueunpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
198 if(x->nauth != 0)
199 goto Err;
200 break;
202 *pa = a;
203 return 0;
204 Err:
205 *pa = ea;
206 return -1;
209 int
210 nfsmount3rmntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
212 int i;
214 if(sunuint32unpack(a, ea, &a, &x->status) < 0) goto Err;
215 switch(x->status){
216 case 0:
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;
222 break;
224 *pa = a;
225 return 0;
226 Err:
227 *pa = ea;
228 return -1;
230 void
231 nfsmount3tdumpprint(Fmt *fmt, NfsMount3TDump *x)
233 USED(x);
234 fmtprint(fmt, "%s\n", "NfsMount3TDump");
236 uint
237 nfsmount3tdumpsize(NfsMount3TDump *x)
239 uint a;
240 USED(x);
241 a = 0;
242 return a;
244 int
245 nfsmount3tdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
247 USED(ea);
248 USED(x);
249 *pa = a;
250 return 0;
252 int
253 nfsmount3tdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
255 USED(ea);
256 USED(x);
257 *pa = a;
258 return 0;
260 void
261 nfsmount3entryprint(Fmt *fmt, NfsMount3Entry *x)
263 fmtprint(fmt, "%s\n", "NfsMount3Entry");
264 fmtprint(fmt, "\t%s=", "host");
265 fmtprint(fmt, "\"%s\"", x->host);
266 fmtprint(fmt, "\n");
267 fmtprint(fmt, "\t%s=", "path");
268 fmtprint(fmt, "\"%s\"", x->path);
269 fmtprint(fmt, "\n");
271 uint
272 nfsmount3entrysize(NfsMount3Entry *x)
274 uint a;
275 USED(x);
276 a = 0 + sunstringsize(x->host) + sunstringsize(x->path);
277 return a;
279 int
280 nfsmount3entrypack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
282 u1int one;
284 one = 1;
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;
288 *pa = a;
289 return 0;
290 Err:
291 *pa = ea;
292 return -1;
294 int
295 nfsmount3entryunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
297 u1int one;
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;
302 *pa = a;
303 return 0;
304 Err:
305 *pa = ea;
306 return -1;
308 void
309 nfsmount3rdumpprint(Fmt *fmt, NfsMount3RDump *x)
311 USED(x);
312 fmtprint(fmt, "%s\n", "NfsMount3RDump");
314 uint
315 nfsmount3rdumpsize(NfsMount3RDump *x)
317 uint a;
318 USED(x);
319 a = 0;
320 a += x->count;
321 a += 4;
322 return a;
324 int
325 nfsmount3rdumppack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
327 u1int zero;
329 zero = 0;
330 if(a+x->count > ea) goto Err;
331 memmove(a, x->data, x->count);
332 a += x->count;
333 if(sunuint1pack(a, ea, &a, &zero) < 0)
334 goto Err;
335 *pa = a;
336 return 0;
337 Err:
338 *pa = ea;
339 return -1;
341 int
342 nfsmount3rdumpunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
344 int i;
345 uchar *oa;
346 u1int u1;
347 u32int u32;
349 oa = a;
350 for(i=0;; i++){
351 if(sunuint1unpack(a, ea, &a, &u1) < 0)
352 goto Err;
353 if(u1 == 0)
354 break;
355 if(sunuint32unpack(a, ea, &a, &u32) < 0
356 || u32 > NfsMount3MaxNameSize
357 || (a+=u32) >= ea
358 || sunuint32unpack(a, ea, &a, &u32) < 0
359 || u32 > NfsMount3MaxPathSize
360 || (a+=u32) >= ea)
361 goto Err;
363 x->count = (a-4) - oa;
364 x->data = oa;
365 *pa = a;
366 return 0;
367 Err:
368 *pa = ea;
369 return -1;
371 void
372 nfsmount3tumntprint(Fmt *fmt, NfsMount3TUmnt *x)
374 fmtprint(fmt, "%s\n", "NfsMount3TUmnt");
375 fmtprint(fmt, "\t%s=", "path");
376 fmtprint(fmt, "\"%s\"", x->path);
377 fmtprint(fmt, "\n");
379 uint
380 nfsmount3tumntsize(NfsMount3TUmnt *x)
382 uint a;
383 USED(x);
384 a = 0 + sunstringsize(x->path);
385 return a;
387 int
388 nfsmount3tumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
390 if(sunstringpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
391 *pa = a;
392 return 0;
393 Err:
394 *pa = ea;
395 return -1;
397 int
398 nfsmount3tumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
400 if(sunstringunpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
401 *pa = a;
402 return 0;
403 Err:
404 *pa = ea;
405 return -1;
407 void
408 nfsmount3rumntprint(Fmt *fmt, NfsMount3RUmnt *x)
410 USED(x);
411 fmtprint(fmt, "%s\n", "NfsMount3RUmnt");
413 uint
414 nfsmount3rumntsize(NfsMount3RUmnt *x)
416 uint a;
417 USED(x);
418 a = 0;
419 return a;
421 int
422 nfsmount3rumntpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
424 USED(ea);
425 USED(x);
426 *pa = a;
427 return 0;
429 int
430 nfsmount3rumntunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
432 USED(ea);
433 USED(x);
434 *pa = a;
435 return 0;
437 void
438 nfsmount3tumntallprint(Fmt *fmt, NfsMount3TUmntall *x)
440 USED(x);
441 fmtprint(fmt, "%s\n", "NfsMount3TUmntall");
443 uint
444 nfsmount3tumntallsize(NfsMount3TUmntall *x)
446 uint a;
447 USED(x);
448 a = 0;
449 return a;
451 int
452 nfsmount3tumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
454 USED(ea);
455 USED(x);
456 *pa = a;
457 return 0;
459 int
460 nfsmount3tumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
462 USED(ea);
463 USED(x);
464 *pa = a;
465 return 0;
467 void
468 nfsmount3rumntallprint(Fmt *fmt, NfsMount3RUmntall *x)
470 USED(x);
471 fmtprint(fmt, "%s\n", "NfsMount3RUmntall");
473 uint
474 nfsmount3rumntallsize(NfsMount3RUmntall *x)
476 uint a;
477 USED(x);
478 a = 0;
479 return a;
481 int
482 nfsmount3rumntallpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
484 USED(ea);
485 USED(x);
486 *pa = a;
487 return 0;
489 int
490 nfsmount3rumntallunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
492 USED(ea);
493 USED(x);
494 *pa = a;
495 return 0;
497 void
498 nfsmount3texportprint(Fmt *fmt, NfsMount3TExport *x)
500 USED(x);
501 fmtprint(fmt, "%s\n", "NfsMount3TExport");
503 uint
504 nfsmount3texportsize(NfsMount3TExport *x)
506 uint a;
507 USED(x);
508 a = 0;
509 return a;
511 int
512 nfsmount3texportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
514 USED(ea);
515 USED(x);
516 *pa = a;
517 return 0;
519 int
520 nfsmount3texportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
522 USED(ea);
523 USED(x);
524 *pa = a;
525 return 0;
527 void
528 nfsmount3rexportprint(Fmt *fmt, NfsMount3RExport *x)
530 USED(x);
531 fmtprint(fmt, "%s\n", "NfsMount3RExport");
532 fmtprint(fmt, "\n");
534 uint
535 nfsmount3rexportsize(NfsMount3RExport *x)
537 uint a;
538 USED(x);
539 a = 0;
540 a += x->count;
541 a += 4; /* end of export list */
542 return a;
544 int
545 nfsmount3rexportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
547 u1int zero;
549 zero = 0;
550 if(a+x->count > ea) goto Err;
551 memmove(a, x->data, x->count);
552 a += x->count;
553 if(sunuint1pack(a, ea, &a, &zero) < 0)
554 goto Err;
555 *pa = a;
556 return 0;
557 Err:
558 *pa = ea;
559 return -1;
561 int
562 nfsmount3rexportunpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
564 int ng, ne;
565 uchar *oa;
566 u1int u1;
567 u32int u32;
569 oa = a;
570 ng = 0;
571 for(ne=0;; ne++){
572 if(sunuint1unpack(a, ea, &a, &u1) < 0)
573 goto Err;
574 if(u1 == 0)
575 break;
576 if(sunuint32unpack(a, ea, &a, &u32) < 0
577 || (a += (u32+3)&~3) >= ea)
578 goto Err;
579 for(;; ng++){
580 if(sunuint1unpack(a, ea, &a, &u1) < 0)
581 goto Err;
582 if(u1 == 0)
583 break;
584 if(sunuint32unpack(a, ea, &a, &u32) < 0
585 || (a += (u32+3)&~3) >= ea)
586 goto Err;
589 x->data = oa;
590 x->count = (a-4) - oa;
591 *pa = a;
592 return 0;
593 Err:
594 *pa = ea;
595 return -1;
597 uint
598 nfsmount3exportgroupsize(uchar *a)
600 int ng;
601 u1int have;
602 u32int n;
604 a += 4;
605 sunuint32unpack(a, a+4, &a, &n);
606 a += (n+3)&~3;
607 ng = 0;
608 for(;;){
609 sunuint1unpack(a, a+4, &a, &have);
610 if(have == 0)
611 break;
612 ng++;
613 sunuint32unpack(a, a+4, &a, &n);
614 a += (n+3)&~3;
616 return ng;
618 int
619 nfsmount3exportunpack(uchar *a, uchar *ea, uchar **pa, char **gp, char ***pgp, NfsMount3Export *x)
621 int ng;
622 u1int u1;
624 if(sunuint1unpack(a, ea, &a, &u1) < 0 || u1 != 1) goto Err;
625 if(sunstringunpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
626 x->g = gp;
627 ng = 0;
628 for(;;){
629 if(sunuint1unpack(a, ea, &a, &u1) < 0) goto Err;
630 if(u1 == 0)
631 break;
632 if(sunstringunpack(a, ea, &a, &gp[ng++], NfsMount3MaxNameSize) < 0) goto Err;
634 x->ng = ng;
635 *pgp = gp+ng;
636 *pa = a;
637 return 0;
639 Err:
640 *pa = ea;
641 return -1;
643 uint
644 nfsmount3exportsize(NfsMount3Export *x)
646 int i;
647 uint a;
649 a = 4 + sunstringsize(x->path);
650 for(i=0; i<x->ng; i++)
651 a += 4 + sunstringsize(x->g[i]);
652 a += 4;
653 return a;
655 int
656 nfsmount3exportpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Export *x)
658 int i;
659 u1int u1;
661 u1 = 1;
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;
668 u1 = 0;
669 if(sunuint1pack(a, ea, &a, &u1) < 0) goto Err;
670 *pa = a;
671 return 0;
673 Err:
674 *pa = ea;
675 return -1;
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),
695 };
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),
710 };
712 SunProg nfsmount3prog =
714 NfsMount3Program,
715 NfsMount3Version,
716 proc3,
717 nelem(proc3),
718 };
720 SunProg nfsmount1prog =
722 NfsMount1Program,
723 NfsMount1Version,
724 proc1,
725 nelem(proc1),
726 };