1*44928Smckusick /*
2*44928Smckusick  * $Id: nfs_prot_xdr.c,v 5.2 90/06/23 22:20:27 jsp Rel $
3*44928Smckusick  *
4*44928Smckusick  * Copyright (c) 1989 Jan-Simon Pendry
5*44928Smckusick  * Copyright (c) 1989 Imperial College of Science, Technology & Medicine
6*44928Smckusick  * Copyright (c) 1989 The Regents of the University of California.
7*44928Smckusick  * All rights reserved.
8*44928Smckusick  *
9*44928Smckusick  * This code is derived from software contributed to Berkeley by
10*44928Smckusick  * Jan-Simon Pendry at Imperial College, London.
11*44928Smckusick  *
12*44928Smckusick  * %sccs.include.redist.c%
13*44928Smckusick  *
14*44928Smckusick  *	@(#)nfs_prot_xdr.c	5.1 (Berkeley) 07/19/90
15*44928Smckusick  */
16*44928Smckusick 
17*44928Smckusick #include "am.h"
18*44928Smckusick 
19*44928Smckusick 
20*44928Smckusick #ifndef xdr_nfsstat
21*44928Smckusick bool_t
22*44928Smckusick xdr_nfsstat(xdrs, objp)
23*44928Smckusick 	XDR *xdrs;
24*44928Smckusick 	nfsstat *objp;
25*44928Smckusick {
26*44928Smckusick 	if (!xdr_enum(xdrs, (enum_t *)objp)) {
27*44928Smckusick 		return (FALSE);
28*44928Smckusick 	}
29*44928Smckusick 	return (TRUE);
30*44928Smckusick }
31*44928Smckusick #endif /* xdr_nfsstat */
32*44928Smckusick 
33*44928Smckusick 
34*44928Smckusick 
35*44928Smckusick #ifndef xdr_ftype
36*44928Smckusick static bool_t
37*44928Smckusick xdr_ftype(xdrs, objp)
38*44928Smckusick 	XDR *xdrs;
39*44928Smckusick 	ftype *objp;
40*44928Smckusick {
41*44928Smckusick 	if (!xdr_enum(xdrs, (enum_t *)objp)) {
42*44928Smckusick 		return (FALSE);
43*44928Smckusick 	}
44*44928Smckusick 	return (TRUE);
45*44928Smckusick }
46*44928Smckusick #endif /* xdr_ftype */
47*44928Smckusick 
48*44928Smckusick 
49*44928Smckusick 
50*44928Smckusick bool_t
51*44928Smckusick xdr_nfs_fh(xdrs, objp)
52*44928Smckusick 	XDR *xdrs;
53*44928Smckusick 	nfs_fh *objp;
54*44928Smckusick {
55*44928Smckusick 	if (!xdr_opaque(xdrs, objp->data, NFS_FHSIZE)) {
56*44928Smckusick 		return (FALSE);
57*44928Smckusick 	}
58*44928Smckusick 	return (TRUE);
59*44928Smckusick }
60*44928Smckusick 
61*44928Smckusick 
62*44928Smckusick 
63*44928Smckusick 
64*44928Smckusick static bool_t
65*44928Smckusick xdr_nfstime(xdrs, objp)
66*44928Smckusick 	XDR *xdrs;
67*44928Smckusick 	nfstime *objp;
68*44928Smckusick {
69*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->seconds)) {
70*44928Smckusick 		return (FALSE);
71*44928Smckusick 	}
72*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->useconds)) {
73*44928Smckusick 		return (FALSE);
74*44928Smckusick 	}
75*44928Smckusick 	return (TRUE);
76*44928Smckusick }
77*44928Smckusick 
78*44928Smckusick 
79*44928Smckusick 
80*44928Smckusick 
81*44928Smckusick static bool_t
82*44928Smckusick xdr_fattr(xdrs, objp)
83*44928Smckusick 	XDR *xdrs;
84*44928Smckusick 	fattr *objp;
85*44928Smckusick {
86*44928Smckusick 	if (!xdr_ftype(xdrs, &objp->type)) {
87*44928Smckusick 		return (FALSE);
88*44928Smckusick 	}
89*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->mode)) {
90*44928Smckusick 		return (FALSE);
91*44928Smckusick 	}
92*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->nlink)) {
93*44928Smckusick 		return (FALSE);
94*44928Smckusick 	}
95*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->uid)) {
96*44928Smckusick 		return (FALSE);
97*44928Smckusick 	}
98*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->gid)) {
99*44928Smckusick 		return (FALSE);
100*44928Smckusick 	}
101*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->size)) {
102*44928Smckusick 		return (FALSE);
103*44928Smckusick 	}
104*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->blocksize)) {
105*44928Smckusick 		return (FALSE);
106*44928Smckusick 	}
107*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->rdev)) {
108*44928Smckusick 		return (FALSE);
109*44928Smckusick 	}
110*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->blocks)) {
111*44928Smckusick 		return (FALSE);
112*44928Smckusick 	}
113*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->fsid)) {
114*44928Smckusick 		return (FALSE);
115*44928Smckusick 	}
116*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->fileid)) {
117*44928Smckusick 		return (FALSE);
118*44928Smckusick 	}
119*44928Smckusick 	if (!xdr_nfstime(xdrs, &objp->atime)) {
120*44928Smckusick 		return (FALSE);
121*44928Smckusick 	}
122*44928Smckusick 	if (!xdr_nfstime(xdrs, &objp->mtime)) {
123*44928Smckusick 		return (FALSE);
124*44928Smckusick 	}
125*44928Smckusick 	if (!xdr_nfstime(xdrs, &objp->ctime)) {
126*44928Smckusick 		return (FALSE);
127*44928Smckusick 	}
128*44928Smckusick 	return (TRUE);
129*44928Smckusick }
130*44928Smckusick 
131*44928Smckusick 
132*44928Smckusick 
133*44928Smckusick 
134*44928Smckusick static bool_t
135*44928Smckusick xdr_sattr(xdrs, objp)
136*44928Smckusick 	XDR *xdrs;
137*44928Smckusick 	sattr *objp;
138*44928Smckusick {
139*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->mode)) {
140*44928Smckusick 		return (FALSE);
141*44928Smckusick 	}
142*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->uid)) {
143*44928Smckusick 		return (FALSE);
144*44928Smckusick 	}
145*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->gid)) {
146*44928Smckusick 		return (FALSE);
147*44928Smckusick 	}
148*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->size)) {
149*44928Smckusick 		return (FALSE);
150*44928Smckusick 	}
151*44928Smckusick 	if (!xdr_nfstime(xdrs, &objp->atime)) {
152*44928Smckusick 		return (FALSE);
153*44928Smckusick 	}
154*44928Smckusick 	if (!xdr_nfstime(xdrs, &objp->mtime)) {
155*44928Smckusick 		return (FALSE);
156*44928Smckusick 	}
157*44928Smckusick 	return (TRUE);
158*44928Smckusick }
159*44928Smckusick 
160*44928Smckusick 
161*44928Smckusick 
162*44928Smckusick 
163*44928Smckusick static bool_t
164*44928Smckusick xdr_filename(xdrs, objp)
165*44928Smckusick 	XDR *xdrs;
166*44928Smckusick 	filename *objp;
167*44928Smckusick {
168*44928Smckusick 	if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
169*44928Smckusick 		return (FALSE);
170*44928Smckusick 	}
171*44928Smckusick 	return (TRUE);
172*44928Smckusick }
173*44928Smckusick 
174*44928Smckusick 
175*44928Smckusick 
176*44928Smckusick 
177*44928Smckusick bool_t
178*44928Smckusick xdr_nfspath(xdrs, objp)
179*44928Smckusick 	XDR *xdrs;
180*44928Smckusick 	nfspath *objp;
181*44928Smckusick {
182*44928Smckusick 	if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
183*44928Smckusick 		return (FALSE);
184*44928Smckusick 	}
185*44928Smckusick 	return (TRUE);
186*44928Smckusick }
187*44928Smckusick 
188*44928Smckusick 
189*44928Smckusick 
190*44928Smckusick 
191*44928Smckusick bool_t
192*44928Smckusick xdr_attrstat(xdrs, objp)
193*44928Smckusick 	XDR *xdrs;
194*44928Smckusick 	attrstat *objp;
195*44928Smckusick {
196*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
197*44928Smckusick 		return (FALSE);
198*44928Smckusick 	}
199*44928Smckusick 	switch (objp->status) {
200*44928Smckusick 	case NFS_OK:
201*44928Smckusick 		if (!xdr_fattr(xdrs, &objp->attrstat_u.attributes)) {
202*44928Smckusick 			return (FALSE);
203*44928Smckusick 		}
204*44928Smckusick 		break;
205*44928Smckusick 	}
206*44928Smckusick 	return (TRUE);
207*44928Smckusick }
208*44928Smckusick 
209*44928Smckusick 
210*44928Smckusick 
211*44928Smckusick 
212*44928Smckusick bool_t
213*44928Smckusick xdr_sattrargs(xdrs, objp)
214*44928Smckusick 	XDR *xdrs;
215*44928Smckusick 	sattrargs *objp;
216*44928Smckusick {
217*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->file)) {
218*44928Smckusick 		return (FALSE);
219*44928Smckusick 	}
220*44928Smckusick 	if (!xdr_sattr(xdrs, &objp->attributes)) {
221*44928Smckusick 		return (FALSE);
222*44928Smckusick 	}
223*44928Smckusick 	return (TRUE);
224*44928Smckusick }
225*44928Smckusick 
226*44928Smckusick 
227*44928Smckusick 
228*44928Smckusick 
229*44928Smckusick bool_t
230*44928Smckusick xdr_diropargs(xdrs, objp)
231*44928Smckusick 	XDR *xdrs;
232*44928Smckusick 	diropargs *objp;
233*44928Smckusick {
234*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->dir)) {
235*44928Smckusick 		return (FALSE);
236*44928Smckusick 	}
237*44928Smckusick 	if (!xdr_filename(xdrs, &objp->name)) {
238*44928Smckusick 		return (FALSE);
239*44928Smckusick 	}
240*44928Smckusick 	return (TRUE);
241*44928Smckusick }
242*44928Smckusick 
243*44928Smckusick 
244*44928Smckusick 
245*44928Smckusick 
246*44928Smckusick bool_t
247*44928Smckusick xdr_diropokres(xdrs, objp)
248*44928Smckusick 	XDR *xdrs;
249*44928Smckusick 	diropokres *objp;
250*44928Smckusick {
251*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->file)) {
252*44928Smckusick 		return (FALSE);
253*44928Smckusick 	}
254*44928Smckusick 	if (!xdr_fattr(xdrs, &objp->attributes)) {
255*44928Smckusick 		return (FALSE);
256*44928Smckusick 	}
257*44928Smckusick 	return (TRUE);
258*44928Smckusick }
259*44928Smckusick 
260*44928Smckusick 
261*44928Smckusick 
262*44928Smckusick 
263*44928Smckusick bool_t
264*44928Smckusick xdr_diropres(xdrs, objp)
265*44928Smckusick 	XDR *xdrs;
266*44928Smckusick 	diropres *objp;
267*44928Smckusick {
268*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
269*44928Smckusick 		return (FALSE);
270*44928Smckusick 	}
271*44928Smckusick 	switch (objp->status) {
272*44928Smckusick 	case NFS_OK:
273*44928Smckusick 		if (!xdr_diropokres(xdrs, &objp->diropres_u.diropres)) {
274*44928Smckusick 			return (FALSE);
275*44928Smckusick 		}
276*44928Smckusick 		break;
277*44928Smckusick 	}
278*44928Smckusick 	return (TRUE);
279*44928Smckusick }
280*44928Smckusick 
281*44928Smckusick 
282*44928Smckusick 
283*44928Smckusick 
284*44928Smckusick bool_t
285*44928Smckusick xdr_readlinkres(xdrs, objp)
286*44928Smckusick 	XDR *xdrs;
287*44928Smckusick 	readlinkres *objp;
288*44928Smckusick {
289*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
290*44928Smckusick 		return (FALSE);
291*44928Smckusick 	}
292*44928Smckusick 	switch (objp->status) {
293*44928Smckusick 	case NFS_OK:
294*44928Smckusick 		if (!xdr_nfspath(xdrs, &objp->readlinkres_u.data)) {
295*44928Smckusick 			return (FALSE);
296*44928Smckusick 		}
297*44928Smckusick 		break;
298*44928Smckusick 	}
299*44928Smckusick 	return (TRUE);
300*44928Smckusick }
301*44928Smckusick 
302*44928Smckusick 
303*44928Smckusick 
304*44928Smckusick 
305*44928Smckusick bool_t
306*44928Smckusick xdr_readargs(xdrs, objp)
307*44928Smckusick 	XDR *xdrs;
308*44928Smckusick 	readargs *objp;
309*44928Smckusick {
310*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->file)) {
311*44928Smckusick 		return (FALSE);
312*44928Smckusick 	}
313*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->offset)) {
314*44928Smckusick 		return (FALSE);
315*44928Smckusick 	}
316*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->count)) {
317*44928Smckusick 		return (FALSE);
318*44928Smckusick 	}
319*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->totalcount)) {
320*44928Smckusick 		return (FALSE);
321*44928Smckusick 	}
322*44928Smckusick 	return (TRUE);
323*44928Smckusick }
324*44928Smckusick 
325*44928Smckusick 
326*44928Smckusick 
327*44928Smckusick 
328*44928Smckusick bool_t
329*44928Smckusick xdr_readokres(xdrs, objp)
330*44928Smckusick 	XDR *xdrs;
331*44928Smckusick 	readokres *objp;
332*44928Smckusick {
333*44928Smckusick 	if (!xdr_fattr(xdrs, &objp->attributes)) {
334*44928Smckusick 		return (FALSE);
335*44928Smckusick 	}
336*44928Smckusick 	if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) {
337*44928Smckusick 		return (FALSE);
338*44928Smckusick 	}
339*44928Smckusick 	return (TRUE);
340*44928Smckusick }
341*44928Smckusick 
342*44928Smckusick 
343*44928Smckusick 
344*44928Smckusick 
345*44928Smckusick bool_t
346*44928Smckusick xdr_readres(xdrs, objp)
347*44928Smckusick 	XDR *xdrs;
348*44928Smckusick 	readres *objp;
349*44928Smckusick {
350*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
351*44928Smckusick 		return (FALSE);
352*44928Smckusick 	}
353*44928Smckusick 	switch (objp->status) {
354*44928Smckusick 	case NFS_OK:
355*44928Smckusick 		if (!xdr_readokres(xdrs, &objp->readres_u.reply)) {
356*44928Smckusick 			return (FALSE);
357*44928Smckusick 		}
358*44928Smckusick 		break;
359*44928Smckusick 	}
360*44928Smckusick 	return (TRUE);
361*44928Smckusick }
362*44928Smckusick 
363*44928Smckusick 
364*44928Smckusick 
365*44928Smckusick 
366*44928Smckusick bool_t
367*44928Smckusick xdr_writeargs(xdrs, objp)
368*44928Smckusick 	XDR *xdrs;
369*44928Smckusick 	writeargs *objp;
370*44928Smckusick {
371*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->file)) {
372*44928Smckusick 		return (FALSE);
373*44928Smckusick 	}
374*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->beginoffset)) {
375*44928Smckusick 		return (FALSE);
376*44928Smckusick 	}
377*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->offset)) {
378*44928Smckusick 		return (FALSE);
379*44928Smckusick 	}
380*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->totalcount)) {
381*44928Smckusick 		return (FALSE);
382*44928Smckusick 	}
383*44928Smckusick 	if (!xdr_bytes(xdrs, (char **)&objp->data.data_val, (u_int *)&objp->data.data_len, NFS_MAXDATA)) {
384*44928Smckusick 		return (FALSE);
385*44928Smckusick 	}
386*44928Smckusick 	return (TRUE);
387*44928Smckusick }
388*44928Smckusick 
389*44928Smckusick 
390*44928Smckusick 
391*44928Smckusick 
392*44928Smckusick bool_t
393*44928Smckusick xdr_createargs(xdrs, objp)
394*44928Smckusick 	XDR *xdrs;
395*44928Smckusick 	createargs *objp;
396*44928Smckusick {
397*44928Smckusick 	if (!xdr_diropargs(xdrs, &objp->where)) {
398*44928Smckusick 		return (FALSE);
399*44928Smckusick 	}
400*44928Smckusick 	if (!xdr_sattr(xdrs, &objp->attributes)) {
401*44928Smckusick 		return (FALSE);
402*44928Smckusick 	}
403*44928Smckusick 	return (TRUE);
404*44928Smckusick }
405*44928Smckusick 
406*44928Smckusick 
407*44928Smckusick 
408*44928Smckusick 
409*44928Smckusick bool_t
410*44928Smckusick xdr_renameargs(xdrs, objp)
411*44928Smckusick 	XDR *xdrs;
412*44928Smckusick 	renameargs *objp;
413*44928Smckusick {
414*44928Smckusick 	if (!xdr_diropargs(xdrs, &objp->from)) {
415*44928Smckusick 		return (FALSE);
416*44928Smckusick 	}
417*44928Smckusick 	if (!xdr_diropargs(xdrs, &objp->to)) {
418*44928Smckusick 		return (FALSE);
419*44928Smckusick 	}
420*44928Smckusick 	return (TRUE);
421*44928Smckusick }
422*44928Smckusick 
423*44928Smckusick 
424*44928Smckusick 
425*44928Smckusick 
426*44928Smckusick bool_t
427*44928Smckusick xdr_linkargs(xdrs, objp)
428*44928Smckusick 	XDR *xdrs;
429*44928Smckusick 	linkargs *objp;
430*44928Smckusick {
431*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->from)) {
432*44928Smckusick 		return (FALSE);
433*44928Smckusick 	}
434*44928Smckusick 	if (!xdr_diropargs(xdrs, &objp->to)) {
435*44928Smckusick 		return (FALSE);
436*44928Smckusick 	}
437*44928Smckusick 	return (TRUE);
438*44928Smckusick }
439*44928Smckusick 
440*44928Smckusick 
441*44928Smckusick 
442*44928Smckusick 
443*44928Smckusick bool_t
444*44928Smckusick xdr_symlinkargs(xdrs, objp)
445*44928Smckusick 	XDR *xdrs;
446*44928Smckusick 	symlinkargs *objp;
447*44928Smckusick {
448*44928Smckusick 	if (!xdr_diropargs(xdrs, &objp->from)) {
449*44928Smckusick 		return (FALSE);
450*44928Smckusick 	}
451*44928Smckusick 	if (!xdr_nfspath(xdrs, &objp->to)) {
452*44928Smckusick 		return (FALSE);
453*44928Smckusick 	}
454*44928Smckusick 	if (!xdr_sattr(xdrs, &objp->attributes)) {
455*44928Smckusick 		return (FALSE);
456*44928Smckusick 	}
457*44928Smckusick 	return (TRUE);
458*44928Smckusick }
459*44928Smckusick 
460*44928Smckusick 
461*44928Smckusick 
462*44928Smckusick 
463*44928Smckusick static bool_t
464*44928Smckusick xdr_nfscookie(xdrs, objp)
465*44928Smckusick 	XDR *xdrs;
466*44928Smckusick 	nfscookie objp;
467*44928Smckusick {
468*44928Smckusick 	if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
469*44928Smckusick 		return (FALSE);
470*44928Smckusick 	}
471*44928Smckusick 	return (TRUE);
472*44928Smckusick }
473*44928Smckusick 
474*44928Smckusick 
475*44928Smckusick 
476*44928Smckusick 
477*44928Smckusick bool_t
478*44928Smckusick xdr_readdirargs(xdrs, objp)
479*44928Smckusick 	XDR *xdrs;
480*44928Smckusick 	readdirargs *objp;
481*44928Smckusick {
482*44928Smckusick 	if (!xdr_nfs_fh(xdrs, &objp->dir)) {
483*44928Smckusick 		return (FALSE);
484*44928Smckusick 	}
485*44928Smckusick 	if (!xdr_nfscookie(xdrs, objp->cookie)) {
486*44928Smckusick 		return (FALSE);
487*44928Smckusick 	}
488*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->count)) {
489*44928Smckusick 		return (FALSE);
490*44928Smckusick 	}
491*44928Smckusick 	return (TRUE);
492*44928Smckusick }
493*44928Smckusick 
494*44928Smckusick 
495*44928Smckusick 
496*44928Smckusick 
497*44928Smckusick static bool_t
498*44928Smckusick xdr_entry(xdrs, objp)
499*44928Smckusick 	XDR *xdrs;
500*44928Smckusick 	entry *objp;
501*44928Smckusick {
502*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->fileid)) {
503*44928Smckusick 		return (FALSE);
504*44928Smckusick 	}
505*44928Smckusick 	if (!xdr_filename(xdrs, &objp->name)) {
506*44928Smckusick 		return (FALSE);
507*44928Smckusick 	}
508*44928Smckusick 	if (!xdr_nfscookie(xdrs, objp->cookie)) {
509*44928Smckusick 		return (FALSE);
510*44928Smckusick 	}
511*44928Smckusick 	if (!xdr_pointer(xdrs, (char **)&objp->nextentry, sizeof(entry), xdr_entry)) {
512*44928Smckusick 		return (FALSE);
513*44928Smckusick 	}
514*44928Smckusick 	return (TRUE);
515*44928Smckusick }
516*44928Smckusick 
517*44928Smckusick 
518*44928Smckusick 
519*44928Smckusick 
520*44928Smckusick static bool_t
521*44928Smckusick xdr_dirlist(xdrs, objp)
522*44928Smckusick 	XDR *xdrs;
523*44928Smckusick 	dirlist *objp;
524*44928Smckusick {
525*44928Smckusick 	if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof(entry), xdr_entry)) {
526*44928Smckusick 		return (FALSE);
527*44928Smckusick 	}
528*44928Smckusick 	if (!xdr_bool(xdrs, &objp->eof)) {
529*44928Smckusick 		return (FALSE);
530*44928Smckusick 	}
531*44928Smckusick 	return (TRUE);
532*44928Smckusick }
533*44928Smckusick 
534*44928Smckusick 
535*44928Smckusick 
536*44928Smckusick 
537*44928Smckusick bool_t
538*44928Smckusick xdr_readdirres(xdrs, objp)
539*44928Smckusick 	XDR *xdrs;
540*44928Smckusick 	readdirres *objp;
541*44928Smckusick {
542*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
543*44928Smckusick 		return (FALSE);
544*44928Smckusick 	}
545*44928Smckusick 	switch (objp->status) {
546*44928Smckusick 	case NFS_OK:
547*44928Smckusick 		if (!xdr_dirlist(xdrs, &objp->readdirres_u.reply)) {
548*44928Smckusick 			return (FALSE);
549*44928Smckusick 		}
550*44928Smckusick 		break;
551*44928Smckusick 	}
552*44928Smckusick 	return (TRUE);
553*44928Smckusick }
554*44928Smckusick 
555*44928Smckusick 
556*44928Smckusick 
557*44928Smckusick 
558*44928Smckusick bool_t
559*44928Smckusick xdr_statfsokres(xdrs, objp)
560*44928Smckusick 	XDR *xdrs;
561*44928Smckusick 	statfsokres *objp;
562*44928Smckusick {
563*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->tsize)) {
564*44928Smckusick 		return (FALSE);
565*44928Smckusick 	}
566*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->bsize)) {
567*44928Smckusick 		return (FALSE);
568*44928Smckusick 	}
569*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->blocks)) {
570*44928Smckusick 		return (FALSE);
571*44928Smckusick 	}
572*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->bfree)) {
573*44928Smckusick 		return (FALSE);
574*44928Smckusick 	}
575*44928Smckusick 	if (!xdr_u_int(xdrs, &objp->bavail)) {
576*44928Smckusick 		return (FALSE);
577*44928Smckusick 	}
578*44928Smckusick 	return (TRUE);
579*44928Smckusick }
580*44928Smckusick 
581*44928Smckusick 
582*44928Smckusick 
583*44928Smckusick 
584*44928Smckusick bool_t
585*44928Smckusick xdr_statfsres(xdrs, objp)
586*44928Smckusick 	XDR *xdrs;
587*44928Smckusick 	statfsres *objp;
588*44928Smckusick {
589*44928Smckusick 	if (!xdr_nfsstat(xdrs, &objp->status)) {
590*44928Smckusick 		return (FALSE);
591*44928Smckusick 	}
592*44928Smckusick 	switch (objp->status) {
593*44928Smckusick 	case NFS_OK:
594*44928Smckusick 		if (!xdr_statfsokres(xdrs, &objp->statfsres_u.reply)) {
595*44928Smckusick 			return (FALSE);
596*44928Smckusick 		}
597*44928Smckusick 		break;
598*44928Smckusick 	}
599*44928Smckusick 	return (TRUE);
600*44928Smckusick }
601