Warning: Attempt to read property "date" on null in /usr/local/www/websvn.planix.org/blame.php on line 247

Warning: Attempt to read property "msg" on null in /usr/local/www/websvn.planix.org/blame.php on line 247
WebSVN – planix.SVN – Blame – /os/branches/feature_unix/sys/src/libsunrpc/mount3.c – Rev 2

Subversion Repositories planix.SVN

Rev

Go to most recent revision | Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
/*
2
 * SUN NFSv3 Mounter.  See RFC 1813
3
 */
4
 
5
#include <u.h>
6
#include <libc.h>
7
#include <thread.h>
8
#include <sunrpc.h>
9
#include <nfs3.h>
10
 
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;
106
}
107
void
108
nfsMount3RMntPrint(Fmt *fmt, NfsMount3RMnt *x)
109
{
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;
120
	}
121
}
122
uint
123
nfsMount3RMntSize(NfsMount3RMnt *x)
124
{
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;
133
	}
134
	a = a;
135
	return a;
136
}
137
uint
138
nfsMount1RMntSize(NfsMount3RMnt *x)
139
{
140
	uint a;
141
	USED(x);
142
	a = 0 + 4;
143
	switch(x->status){
144
	case 0:
145
		a = a + NfsMount1HandleSize;
146
		break;
147
	}
148
	return a;
149
}
150
 
151
int
152
nfsMount3RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
153
{
154
	int i;
155
	if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err;
156
	switch(x->status){
157
	case 0:
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;
162
		break;
163
	}
164
	*pa = a;
165
	return 0;
166
Err:
167
	*pa = ea;
168
	return -1;
169
}
170
int
171
nfsMount1RMntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
172
{
173
	if(sunUint32Pack(a, ea, &a, &x->status) < 0) goto Err;
174
	switch(x->status){
175
	case 0:
176
		if(x->len != NfsMount1HandleSize)
177
			goto Err;
178
		if(sunFixedOpaquePack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
179
		if(x->nauth != 0)
180
			goto Err;
181
		break;
182
	}
183
	*pa = a;
184
	return 0;
185
Err:
186
	*pa = ea;
187
	return -1;
188
}
189
int
190
nfsMount1RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
191
{
192
	if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err;
193
	switch(x->status){
194
	case 0:
195
		x->len = NfsMount1HandleSize;
196
		x->nauth = 0;
197
		x->auth = 0;
198
		if(sunFixedOpaqueUnpack(a, ea, &a, x->handle, NfsMount1HandleSize) < 0) goto Err;
199
		if(x->nauth != 0)
200
			goto Err;
201
		break;
202
	}
203
	*pa = a;
204
	return 0;
205
Err:
206
	*pa = ea;
207
	return -1;
208
}
209
 
210
int
211
nfsMount3RMntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RMnt *x)
212
{
213
	int i;
214
 
215
	if(sunUint32Unpack(a, ea, &a, &x->status) < 0) goto Err;
216
	switch(x->status){
217
	case 0:
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;
223
		break;
224
	}
225
	*pa = a;
226
	return 0;
227
Err:
228
	*pa = ea;
229
	return -1;
230
}
231
void
232
nfsMount3TDumpPrint(Fmt *fmt, NfsMount3TDump *x)
233
{
234
	USED(x);
235
	fmtprint(fmt, "%s\n", "NfsMount3TDump");
236
}
237
uint
238
nfsMount3TDumpSize(NfsMount3TDump *x)
239
{
240
	uint a;
241
	USED(x);
242
	a = 0;
243
	return a;
244
}
245
int
246
nfsMount3TDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
247
{
248
	USED(ea);
249
	USED(x);
250
	*pa = a;
251
	return 0;
252
}
253
int
254
nfsMount3TDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TDump *x)
255
{
256
	USED(ea);
257
	USED(x);
258
	*pa = a;
259
	return 0;
260
}
261
void
262
nfsMount3EntryPrint(Fmt *fmt, NfsMount3Entry *x)
263
{
264
	fmtprint(fmt, "%s\n", "NfsMount3Entry");
265
	fmtprint(fmt, "\t%s=", "host");
266
	fmtprint(fmt, "\"%s\"", x->host);
267
	fmtprint(fmt, "\n");
268
	fmtprint(fmt, "\t%s=", "path");
269
	fmtprint(fmt, "\"%s\"", x->path);
270
	fmtprint(fmt, "\n");
271
}
272
uint
273
nfsMount3EntrySize(NfsMount3Entry *x)
274
{
275
	uint a;
276
	USED(x);
277
	a = 0 + sunStringSize(x->host) + sunStringSize(x->path);
278
	return a;
279
}
280
int
281
nfsMount3EntryPack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
282
{
283
	u1int one;
284
 
285
	one = 1;
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;
289
	*pa = a;
290
	return 0;
291
Err:
292
	*pa = ea;
293
	return -1;
294
}
295
int
296
nfsMount3EntryUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3Entry *x)
297
{
298
	u1int one;
299
 
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;
303
	*pa = a;
304
	return 0;
305
Err:
306
	*pa = ea;
307
	return -1;
308
}
309
void
310
nfsMount3RDumpPrint(Fmt *fmt, NfsMount3RDump *x)
311
{
312
	USED(x);
313
	fmtprint(fmt, "%s\n", "NfsMount3RDump");
314
}
315
uint
316
nfsMount3RDumpSize(NfsMount3RDump *x)
317
{
318
	uint a;
319
	USED(x);
320
	a = 0;
321
	a += x->count;
322
	a += 4;
323
	return a;
324
}
325
int
326
nfsMount3RDumpPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
327
{
328
	u1int zero;
329
 
330
	zero = 0;
331
	if(a+x->count > ea) goto Err;
332
	memmove(a, x->data, x->count);
333
	a += x->count;
334
	if(sunUint1Pack(a, ea, &a, &zero) < 0)
335
		goto Err;
336
	*pa = a;
337
	return 0;
338
Err:
339
	*pa = ea;
340
	return -1;
341
}
342
int
343
nfsMount3RDumpUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RDump *x)
344
{
345
	int i;
346
	uchar *oa;
347
	u1int u1;
348
	u32int u32;
349
 
350
	oa = a;
351
	for(i=0;; i++){
352
		if(sunUint1Unpack(a, ea, &a, &u1) < 0)
353
			goto Err;
354
		if(u1 == 0)
355
			break;
356
		if(sunUint32Unpack(a, ea, &a, &u32) < 0
357
		|| u32 > NfsMount3MaxNameSize
358
		|| (a+=u32) >= ea
359
		|| sunUint32Unpack(a, ea, &a, &u32) < 0
360
		|| u32 > NfsMount3MaxPathSize
361
		|| (a+=u32) >= ea)
362
			goto Err;
363
	}
364
	x->count = (a-4) - oa;
365
	x->data = oa;
366
	*pa = a;
367
	return 0;
368
Err:
369
	*pa = ea;
370
	return -1;
371
}
372
void
373
nfsMount3TUmntPrint(Fmt *fmt, NfsMount3TUmnt *x)
374
{
375
	fmtprint(fmt, "%s\n", "NfsMount3TUmnt");
376
	fmtprint(fmt, "\t%s=", "path");
377
	fmtprint(fmt, "\"%s\"", x->path);
378
	fmtprint(fmt, "\n");
379
}
380
uint
381
nfsMount3TUmntSize(NfsMount3TUmnt *x)
382
{
383
	uint a;
384
	USED(x);
385
	a = 0 + sunStringSize(x->path);
386
	return a;
387
}
388
int
389
nfsMount3TUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
390
{
391
	if(sunStringPack(a, ea, &a, &x->path, 1024) < 0) goto Err;
392
	*pa = a;
393
	return 0;
394
Err:
395
	*pa = ea;
396
	return -1;
397
}
398
int
399
nfsMount3TUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmnt *x)
400
{
401
	if(sunStringUnpack(a, ea, &a, &x->path, 1024) < 0) goto Err;
402
	*pa = a;
403
	return 0;
404
Err:
405
	*pa = ea;
406
	return -1;
407
}
408
void
409
nfsMount3RUmntPrint(Fmt *fmt, NfsMount3RUmnt *x)
410
{
411
	USED(x);
412
	fmtprint(fmt, "%s\n", "NfsMount3RUmnt");
413
}
414
uint
415
nfsMount3RUmntSize(NfsMount3RUmnt *x)
416
{
417
	uint a;
418
	USED(x);
419
	a = 0;
420
	return a;
421
}
422
int
423
nfsMount3RUmntPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
424
{
425
	USED(ea);
426
	USED(x);
427
	*pa = a;
428
	return 0;
429
}
430
int
431
nfsMount3RUmntUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmnt *x)
432
{
433
	USED(ea);
434
	USED(x);
435
	*pa = a;
436
	return 0;
437
}
438
void
439
nfsMount3TUmntallPrint(Fmt *fmt, NfsMount3TUmntall *x)
440
{
441
	USED(x);
442
	fmtprint(fmt, "%s\n", "NfsMount3TUmntall");
443
}
444
uint
445
nfsMount3TUmntallSize(NfsMount3TUmntall *x)
446
{
447
	uint a;
448
	USED(x);
449
	a = 0;
450
	return a;
451
}
452
int
453
nfsMount3TUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
454
{
455
	USED(ea);
456
	USED(x);
457
	*pa = a;
458
	return 0;
459
}
460
int
461
nfsMount3TUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TUmntall *x)
462
{
463
	USED(ea);
464
	USED(x);
465
	*pa = a;
466
	return 0;
467
}
468
void
469
nfsMount3RUmntallPrint(Fmt *fmt, NfsMount3RUmntall *x)
470
{
471
	USED(x);
472
	fmtprint(fmt, "%s\n", "NfsMount3RUmntall");
473
}
474
uint
475
nfsMount3RUmntallSize(NfsMount3RUmntall *x)
476
{
477
	uint a;
478
	USED(x);
479
	a = 0;
480
	return a;
481
}
482
int
483
nfsMount3RUmntallPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
484
{
485
	USED(ea);
486
	USED(x);
487
	*pa = a;
488
	return 0;
489
}
490
int
491
nfsMount3RUmntallUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RUmntall *x)
492
{
493
	USED(ea);
494
	USED(x);
495
	*pa = a;
496
	return 0;
497
}
498
void
499
nfsMount3TExportPrint(Fmt *fmt, NfsMount3TExport *x)
500
{
501
	USED(x);
502
	fmtprint(fmt, "%s\n", "NfsMount3TExport");
503
}
504
uint
505
nfsMount3TExportSize(NfsMount3TExport *x)
506
{
507
	uint a;
508
	USED(x);
509
	a = 0;
510
	return a;
511
}
512
int
513
nfsMount3TExportPack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
514
{
515
	USED(ea);
516
	USED(x);
517
	*pa = a;
518
	return 0;
519
}
520
int
521
nfsMount3TExportUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3TExport *x)
522
{
523
	USED(ea);
524
	USED(x);
525
	*pa = a;
526
	return 0;
527
}
528
void
529
nfsMount3RExportPrint(Fmt *fmt, NfsMount3RExport *x)
530
{
531
	USED(x);
532
	fmtprint(fmt, "%s\n", "NfsMount3RExport");
533
	fmtprint(fmt, "\n");
534
}
535
uint
536
nfsMount3RExportSize(NfsMount3RExport *x)
537
{
538
	uint a;
539
	USED(x);
540
	a = 0;
541
	a += x->count;
542
	a += 4;	/* end of export list */
543
	return a;
544
}
545
int
546
nfsMount3RExportPack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
547
{
548
	u1int zero;
549
 
550
	zero = 0;
551
	if(a+x->count > ea) goto Err;
552
	memmove(a, x->data, x->count);
553
	a += x->count;
554
	if(sunUint1Pack(a, ea, &a, &zero) < 0)
555
		goto Err;
556
	*pa = a;
557
	return 0;
558
Err:
559
	*pa = ea;
560
	return -1;
561
}
562
int
563
nfsMount3RExportUnpack(uchar *a, uchar *ea, uchar **pa, NfsMount3RExport *x)
564
{
565
	int ng, ne;
566
	uchar *oa;
567
	u1int u1;
568
	u32int u32;
569
 
570
	oa = a;
571
	ng = 0;
572
	for(ne=0;; ne++){
573
		if(sunUint1Unpack(a, ea, &a, &u1) < 0)
574
			goto Err;
575
		if(u1 == 0)
576
			break;
577
		if(sunUint32Unpack(a, ea, &a, &u32) < 0
578
		|| (a += (u32+3)&~3) >= ea)
579
			goto Err;
580
		for(;; ng++){
581
			if(sunUint1Unpack(a, ea, &a, &u1) < 0)
582
				goto Err;
583
			if(u1 == 0)
584
				break;
585
			if(sunUint32Unpack(a, ea, &a, &u32) < 0
586
			|| (a += (u32+3)&~3) >= ea)
587
				goto Err;
588
		}
589
	}
590
	x->data = oa;
591
	x->count = (a-4) - oa;
592
	*pa = a;
593
	return 0;
594
Err:
595
	*pa = ea;
596
	return -1;
597
}
598
uint
599
nfsMount3ExportGroupSize(uchar *a)
600
{
601
	int ng;
602
	u1int have;
603
	u32int n;
604
 
605
	a += 4;
606
	sunUint32Unpack(a, a+4, &a, &n);
607
	a += (n+3)&~3;
608
	ng = 0;
609
	for(;;){
610
		sunUint1Unpack(a, a+4, &a, &have);
611
		if(have == 0)
612
			break;
613
		ng++;
614
		sunUint32Unpack(a, a+4, &a, &n);
615
		a += (n+3)&~3;
616
	}
617
	return ng;
618
}
619
int
620
nfsMount3ExportUnpack(uchar *a, uchar *ea, uchar **pa, char **gp, char ***pgp, NfsMount3Export *x)
621
{
622
	int ng;
623
	u1int u1;
624
 
625
	if(sunUint1Unpack(a, ea, &a, &u1) < 0 || u1 != 1) goto Err;
626
	if(sunStringUnpack(a, ea, &a, &x->path, NfsMount3MaxPathSize) < 0) goto Err;
627
	x->g = gp;
628
	ng = 0;
629
	for(;;){
630
		if(sunUint1Unpack(a, ea, &a, &u1) < 0) goto Err;
631
		if(u1 == 0)
632
			break;
633
		if(sunStringUnpack(a, ea, &a, &gp[ng++], NfsMount3MaxNameSize) < 0) goto Err;
634
	}
635
	x->ng = ng;
636
	*pgp = gp+ng;
637
	*pa = a;
638
	return 0;
639
 
640
Err:
641
	*pa = ea;
642
	return -1;
643
}
644
uint
645
nfsMount3ExportSize(NfsMount3Export *x)
646
{
647
	int i;
648
	uint a;
649
 
650
	a = 4 + sunStringSize(x->path);
651
	for(i=0; i<x->ng; i++)
652
		a += 4 + sunStringSize(x->g[i]);
653
	a += 4;
654
	return a;
655
}
656
int
657
nfsMount3ExportPack(uchar *a, uchar *ea, uchar **pa, NfsMount3Export *x)
658
{
659
	int i;
660
	u1int u1;
661
 
662
	u1 = 1;
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;
668
	}
669
	u1 = 0;
670
	if(sunUint1Pack(a, ea, &a, &u1) < 0) goto Err;
671
	*pa = a;
672
	return 0;
673
 
674
Err:
675
	*pa = ea;
676
	return -1;
677
}
678
 
679
typedef int (*P)(uchar*, uchar*, uchar**, SunCall*);
680
typedef void (*F)(Fmt*, SunCall*);
681
typedef uint (*S)(SunCall*);
682
 
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),
696
};
697
 
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),
711
};
712
 
713
SunProg nfsMount3Prog = 
714
{
715
	NfsMount3Program,
716
	NfsMount3Version,
717
	proc3,
718
	nelem(proc3),
719
};
720
 
721
SunProg nfsMount1Prog =
722
{
723
	NfsMount1Program,
724
	NfsMount1Version,
725
	proc1,
726
	nelem(proc1),
727
};