1 /*
2 Copyright (c) 2014, Ronnie Sahlberg
3 All rights reserved.
4 
5 Redistribution and use in source and binary forms, with or without
6 modification, are permitted provided that the following conditions are met:
7 
8 1. Redistributions of source code must retain the above copyright notice, this
9    list of conditions and the following disclaimer.
10 2. Redistributions in binary form must reproduce the above copyright notice,
11    this list of conditions and the following disclaimer in the documentation
12    and/or other materials provided with the distribution.
13 
14 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
15 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
18 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21 ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
23 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 
25 The views and conclusions contained in the software and documentation are those
26 of the authors and should not be interpreted as representing official policies,
27 either expressed or implied, of the FreeBSD Project.
28 */
29 
30 /*
31  * Please do not edit this file.
32  * It was generated using rpcgen.
33  */
34 
35 #include "libnfs-zdr.h"
36 #include "libnfs-raw-nfs.h"
37 
38 uint32_t
zdr_cookieverf3(ZDR * zdrs,cookieverf3 objp)39 zdr_cookieverf3 (ZDR *zdrs, cookieverf3 objp)
40 {
41 	 if (!zdr_opaque (zdrs, objp, NFS3_COOKIEVERFSIZE))
42 		 return FALSE;
43 	return TRUE;
44 }
45 
46 uint32_t
zdr_cookie3(ZDR * zdrs,cookie3 * objp)47 zdr_cookie3 (ZDR *zdrs, cookie3 *objp)
48 {
49 	 if (!zdr_uint64_t (zdrs, objp))
50 		 return FALSE;
51 	return TRUE;
52 }
53 
54 uint32_t
zdr_nfs_fh3(ZDR * zdrs,nfs_fh3 * objp)55 zdr_nfs_fh3 (ZDR *zdrs, nfs_fh3 *objp)
56 {
57 	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, NFS3_FHSIZE))
58 		 return FALSE;
59 	return TRUE;
60 }
61 
62 uint32_t
zdr_filename3(ZDR * zdrs,filename3 * objp)63 zdr_filename3 (ZDR *zdrs, filename3 *objp)
64 {
65 	 if (!zdr_string (zdrs, objp, ~0))
66 		 return FALSE;
67 	return TRUE;
68 }
69 
70 uint32_t
zdr_diropargs3(ZDR * zdrs,diropargs3 * objp)71 zdr_diropargs3 (ZDR *zdrs, diropargs3 *objp)
72 {
73 	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
74 		 return FALSE;
75 	 if (!zdr_filename3 (zdrs, &objp->name))
76 		 return FALSE;
77 	return TRUE;
78 }
79 
80 uint32_t
zdr_ftype3(ZDR * zdrs,ftype3 * objp)81 zdr_ftype3 (ZDR *zdrs, ftype3 *objp)
82 {
83 	 if (!zdr_enum (zdrs, (enum_t *) objp))
84 		 return FALSE;
85 	return TRUE;
86 }
87 
88 uint32_t
zdr_mode3(ZDR * zdrs,mode3 * objp)89 zdr_mode3 (ZDR *zdrs, mode3 *objp)
90 {
91 	 if (!zdr_u_int (zdrs, objp))
92 		 return FALSE;
93 	return TRUE;
94 }
95 
96 uint32_t
zdr_uid3(ZDR * zdrs,uid3 * objp)97 zdr_uid3 (ZDR *zdrs, uid3 *objp)
98 {
99 	 if (!zdr_u_int (zdrs, objp))
100 		 return FALSE;
101 	return TRUE;
102 }
103 
104 uint32_t
zdr_gid3(ZDR * zdrs,gid3 * objp)105 zdr_gid3 (ZDR *zdrs, gid3 *objp)
106 {
107 	 if (!zdr_u_int (zdrs, objp))
108 		 return FALSE;
109 	return TRUE;
110 }
111 
112 uint32_t
zdr_size3(ZDR * zdrs,size3 * objp)113 zdr_size3 (ZDR *zdrs, size3 *objp)
114 {
115 	 if (!zdr_uint64_t (zdrs, objp))
116 		 return FALSE;
117 	return TRUE;
118 }
119 
120 uint32_t
zdr_fileid3(ZDR * zdrs,fileid3 * objp)121 zdr_fileid3 (ZDR *zdrs, fileid3 *objp)
122 {
123 	 if (!zdr_uint64_t (zdrs, objp))
124 		 return FALSE;
125 	return TRUE;
126 }
127 
128 uint32_t
zdr_specdata3(ZDR * zdrs,specdata3 * objp)129 zdr_specdata3 (ZDR *zdrs, specdata3 *objp)
130 {
131 	 if (!zdr_u_int (zdrs, &objp->specdata1))
132 		 return FALSE;
133 	 if (!zdr_u_int (zdrs, &objp->specdata2))
134 		 return FALSE;
135 	return TRUE;
136 }
137 
138 uint32_t
zdr_nfstime3(ZDR * zdrs,nfstime3 * objp)139 zdr_nfstime3 (ZDR *zdrs, nfstime3 *objp)
140 {
141 	 if (!zdr_u_int (zdrs, &objp->seconds))
142 		 return FALSE;
143 	 if (!zdr_u_int (zdrs, &objp->nseconds))
144 		 return FALSE;
145 	return TRUE;
146 }
147 
148 uint32_t
zdr_fattr3(ZDR * zdrs,fattr3 * objp)149 zdr_fattr3 (ZDR *zdrs, fattr3 *objp)
150 {
151 	 if (!zdr_ftype3 (zdrs, &objp->type))
152 		 return FALSE;
153 	 if (!zdr_mode3 (zdrs, &objp->mode))
154 		 return FALSE;
155 	 if (!zdr_u_int (zdrs, &objp->nlink))
156 		 return FALSE;
157 	 if (!zdr_uid3 (zdrs, &objp->uid))
158 		 return FALSE;
159 	 if (!zdr_gid3 (zdrs, &objp->gid))
160 		 return FALSE;
161 	 if (!zdr_size3 (zdrs, &objp->size))
162 		 return FALSE;
163 	 if (!zdr_size3 (zdrs, &objp->used))
164 		 return FALSE;
165 	 if (!zdr_specdata3 (zdrs, &objp->rdev))
166 		 return FALSE;
167 	 if (!zdr_uint64_t (zdrs, &objp->fsid))
168 		 return FALSE;
169 	 if (!zdr_fileid3 (zdrs, &objp->fileid))
170 		 return FALSE;
171 	 if (!zdr_nfstime3 (zdrs, &objp->atime))
172 		 return FALSE;
173 	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
174 		 return FALSE;
175 	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
176 		 return FALSE;
177 	return TRUE;
178 }
179 
180 uint32_t
zdr_post_op_attr(ZDR * zdrs,post_op_attr * objp)181 zdr_post_op_attr (ZDR *zdrs, post_op_attr *objp)
182 {
183 	 if (!zdr_bool (zdrs, &objp->attributes_follow))
184 		 return FALSE;
185 	switch (objp->attributes_follow) {
186 	case TRUE:
187 		 if (!zdr_fattr3 (zdrs, &objp->post_op_attr_u.attributes))
188 			 return FALSE;
189 		break;
190 	case FALSE:
191 		break;
192 	default:
193 		return FALSE;
194 	}
195 	return TRUE;
196 }
197 
198 uint32_t
zdr_nfsstat3(ZDR * zdrs,nfsstat3 * objp)199 zdr_nfsstat3 (ZDR *zdrs, nfsstat3 *objp)
200 {
201 	 if (!zdr_enum (zdrs, (enum_t *) objp))
202 		 return FALSE;
203 	return TRUE;
204 }
205 
206 uint32_t
zdr_stable_how(ZDR * zdrs,stable_how * objp)207 zdr_stable_how (ZDR *zdrs, stable_how *objp)
208 {
209 	 if (!zdr_enum (zdrs, (enum_t *) objp))
210 		 return FALSE;
211 	return TRUE;
212 }
213 
214 uint32_t
zdr_offset3(ZDR * zdrs,offset3 * objp)215 zdr_offset3 (ZDR *zdrs, offset3 *objp)
216 {
217 	 if (!zdr_uint64_t (zdrs, objp))
218 		 return FALSE;
219 	return TRUE;
220 }
221 
222 uint32_t
zdr_count3(ZDR * zdrs,count3 * objp)223 zdr_count3 (ZDR *zdrs, count3 *objp)
224 {
225 	 if (!zdr_u_int (zdrs, objp))
226 		 return FALSE;
227 	return TRUE;
228 }
229 
230 uint32_t
zdr_wcc_attr(ZDR * zdrs,wcc_attr * objp)231 zdr_wcc_attr (ZDR *zdrs, wcc_attr *objp)
232 {
233 	 if (!zdr_size3 (zdrs, &objp->size))
234 		 return FALSE;
235 	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
236 		 return FALSE;
237 	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
238 		 return FALSE;
239 	return TRUE;
240 }
241 
242 uint32_t
zdr_pre_op_attr(ZDR * zdrs,pre_op_attr * objp)243 zdr_pre_op_attr (ZDR *zdrs, pre_op_attr *objp)
244 {
245 	 if (!zdr_bool (zdrs, &objp->attributes_follow))
246 		 return FALSE;
247 	switch (objp->attributes_follow) {
248 	case TRUE:
249 		 if (!zdr_wcc_attr (zdrs, &objp->pre_op_attr_u.attributes))
250 			 return FALSE;
251 		break;
252 	case FALSE:
253 		break;
254 	default:
255 		return FALSE;
256 	}
257 	return TRUE;
258 }
259 
260 uint32_t
zdr_wcc_data(ZDR * zdrs,wcc_data * objp)261 zdr_wcc_data (ZDR *zdrs, wcc_data *objp)
262 {
263 	 if (!zdr_pre_op_attr (zdrs, &objp->before))
264 		 return FALSE;
265 	 if (!zdr_post_op_attr (zdrs, &objp->after))
266 		 return FALSE;
267 	return TRUE;
268 }
269 
270 uint32_t
zdr_WRITE3args(ZDR * zdrs,WRITE3args * objp)271 zdr_WRITE3args (ZDR *zdrs, WRITE3args *objp)
272 {
273 	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
274 		 return FALSE;
275 	 if (!zdr_offset3 (zdrs, &objp->offset))
276 		 return FALSE;
277 	 if (!zdr_count3 (zdrs, &objp->count))
278 		 return FALSE;
279 	 if (!zdr_stable_how (zdrs, &objp->stable))
280 		 return FALSE;
281 	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
282 		 return FALSE;
283 	return TRUE;
284 }
285 
286 uint32_t
zdr_writeverf3(ZDR * zdrs,writeverf3 objp)287 zdr_writeverf3 (ZDR *zdrs, writeverf3 objp)
288 {
289 	 if (!zdr_opaque (zdrs, objp, NFS3_WRITEVERFSIZE))
290 		 return FALSE;
291 	return TRUE;
292 }
293 
294 uint32_t
zdr_WRITE3resok(ZDR * zdrs,WRITE3resok * objp)295 zdr_WRITE3resok (ZDR *zdrs, WRITE3resok *objp)
296 {
297 	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
298 		 return FALSE;
299 	 if (!zdr_count3 (zdrs, &objp->count))
300 		 return FALSE;
301 	 if (!zdr_stable_how (zdrs, &objp->committed))
302 		 return FALSE;
303 	 if (!zdr_writeverf3 (zdrs, objp->verf))
304 		 return FALSE;
305 	return TRUE;
306 }
307 
308 uint32_t
zdr_WRITE3resfail(ZDR * zdrs,WRITE3resfail * objp)309 zdr_WRITE3resfail (ZDR *zdrs, WRITE3resfail *objp)
310 {
311 	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
312 		 return FALSE;
313 	return TRUE;
314 }
315 
316 uint32_t
zdr_WRITE3res(ZDR * zdrs,WRITE3res * objp)317 zdr_WRITE3res (ZDR *zdrs, WRITE3res *objp)
318 {
319 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
320 		 return FALSE;
321 	switch (objp->status) {
322 	case NFS3_OK:
323 		 if (!zdr_WRITE3resok (zdrs, &objp->WRITE3res_u.resok))
324 			 return FALSE;
325 		break;
326 	default:
327 		 if (!zdr_WRITE3resfail (zdrs, &objp->WRITE3res_u.resfail))
328 			 return FALSE;
329 		break;
330 	}
331 	return TRUE;
332 }
333 
334 uint32_t
zdr_LOOKUP3args(ZDR * zdrs,LOOKUP3args * objp)335 zdr_LOOKUP3args (ZDR *zdrs, LOOKUP3args *objp)
336 {
337 	 if (!zdr_diropargs3 (zdrs, &objp->what))
338 		 return FALSE;
339 	return TRUE;
340 }
341 
342 uint32_t
zdr_LOOKUP3resok(ZDR * zdrs,LOOKUP3resok * objp)343 zdr_LOOKUP3resok (ZDR *zdrs, LOOKUP3resok *objp)
344 {
345 	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
346 		 return FALSE;
347 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
348 		 return FALSE;
349 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
350 		 return FALSE;
351 	return TRUE;
352 }
353 
354 uint32_t
zdr_LOOKUP3resfail(ZDR * zdrs,LOOKUP3resfail * objp)355 zdr_LOOKUP3resfail (ZDR *zdrs, LOOKUP3resfail *objp)
356 {
357 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
358 		 return FALSE;
359 	return TRUE;
360 }
361 
362 uint32_t
zdr_LOOKUP3res(ZDR * zdrs,LOOKUP3res * objp)363 zdr_LOOKUP3res (ZDR *zdrs, LOOKUP3res *objp)
364 {
365 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
366 		 return FALSE;
367 	switch (objp->status) {
368 	case NFS3_OK:
369 		 if (!zdr_LOOKUP3resok (zdrs, &objp->LOOKUP3res_u.resok))
370 			 return FALSE;
371 		break;
372 	default:
373 		 if (!zdr_LOOKUP3resfail (zdrs, &objp->LOOKUP3res_u.resfail))
374 			 return FALSE;
375 		break;
376 	}
377 	return TRUE;
378 }
379 
380 uint32_t
zdr_COMMIT3args(ZDR * zdrs,COMMIT3args * objp)381 zdr_COMMIT3args (ZDR *zdrs, COMMIT3args *objp)
382 {
383 	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
384 		 return FALSE;
385 	 if (!zdr_offset3 (zdrs, &objp->offset))
386 		 return FALSE;
387 	 if (!zdr_count3 (zdrs, &objp->count))
388 		 return FALSE;
389 	return TRUE;
390 }
391 
392 uint32_t
zdr_COMMIT3resok(ZDR * zdrs,COMMIT3resok * objp)393 zdr_COMMIT3resok (ZDR *zdrs, COMMIT3resok *objp)
394 {
395 	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
396 		 return FALSE;
397 	 if (!zdr_writeverf3 (zdrs, objp->verf))
398 		 return FALSE;
399 	return TRUE;
400 }
401 
402 uint32_t
zdr_COMMIT3resfail(ZDR * zdrs,COMMIT3resfail * objp)403 zdr_COMMIT3resfail (ZDR *zdrs, COMMIT3resfail *objp)
404 {
405 	 if (!zdr_wcc_data (zdrs, &objp->file_wcc))
406 		 return FALSE;
407 	return TRUE;
408 }
409 
410 uint32_t
zdr_COMMIT3res(ZDR * zdrs,COMMIT3res * objp)411 zdr_COMMIT3res (ZDR *zdrs, COMMIT3res *objp)
412 {
413 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
414 		 return FALSE;
415 	switch (objp->status) {
416 	case NFS3_OK:
417 		 if (!zdr_COMMIT3resok (zdrs, &objp->COMMIT3res_u.resok))
418 			 return FALSE;
419 		break;
420 	default:
421 		 if (!zdr_COMMIT3resfail (zdrs, &objp->COMMIT3res_u.resfail))
422 			 return FALSE;
423 		break;
424 	}
425 	return TRUE;
426 }
427 
428 uint32_t
zdr_ACCESS3args(ZDR * zdrs,ACCESS3args * objp)429 zdr_ACCESS3args (ZDR *zdrs, ACCESS3args *objp)
430 {
431 	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
432 		 return FALSE;
433 	 if (!zdr_u_int (zdrs, &objp->access))
434 		 return FALSE;
435 	return TRUE;
436 }
437 
438 uint32_t
zdr_ACCESS3resok(ZDR * zdrs,ACCESS3resok * objp)439 zdr_ACCESS3resok (ZDR *zdrs, ACCESS3resok *objp)
440 {
441 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
442 		 return FALSE;
443 	 if (!zdr_u_int (zdrs, &objp->access))
444 		 return FALSE;
445 	return TRUE;
446 }
447 
448 uint32_t
zdr_ACCESS3resfail(ZDR * zdrs,ACCESS3resfail * objp)449 zdr_ACCESS3resfail (ZDR *zdrs, ACCESS3resfail *objp)
450 {
451 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
452 		 return FALSE;
453 	return TRUE;
454 }
455 
456 uint32_t
zdr_ACCESS3res(ZDR * zdrs,ACCESS3res * objp)457 zdr_ACCESS3res (ZDR *zdrs, ACCESS3res *objp)
458 {
459 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
460 		 return FALSE;
461 	switch (objp->status) {
462 	case NFS3_OK:
463 		 if (!zdr_ACCESS3resok (zdrs, &objp->ACCESS3res_u.resok))
464 			 return FALSE;
465 		break;
466 	default:
467 		 if (!zdr_ACCESS3resfail (zdrs, &objp->ACCESS3res_u.resfail))
468 			 return FALSE;
469 		break;
470 	}
471 	return TRUE;
472 }
473 
474 uint32_t
zdr_GETATTR3args(ZDR * zdrs,GETATTR3args * objp)475 zdr_GETATTR3args (ZDR *zdrs, GETATTR3args *objp)
476 {
477 	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
478 		 return FALSE;
479 	return TRUE;
480 }
481 
482 uint32_t
zdr_GETATTR3resok(ZDR * zdrs,GETATTR3resok * objp)483 zdr_GETATTR3resok (ZDR *zdrs, GETATTR3resok *objp)
484 {
485 	 if (!zdr_fattr3 (zdrs, &objp->obj_attributes))
486 		 return FALSE;
487 	return TRUE;
488 }
489 
490 uint32_t
zdr_GETATTR3res(ZDR * zdrs,GETATTR3res * objp)491 zdr_GETATTR3res (ZDR *zdrs, GETATTR3res *objp)
492 {
493 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
494 		 return FALSE;
495 	switch (objp->status) {
496 	case NFS3_OK:
497 		 if (!zdr_GETATTR3resok (zdrs, &objp->GETATTR3res_u.resok))
498 			 return FALSE;
499 		break;
500 	default:
501 		break;
502 	}
503 	return TRUE;
504 }
505 
506 uint32_t
zdr_time_how(ZDR * zdrs,time_how * objp)507 zdr_time_how (ZDR *zdrs, time_how *objp)
508 {
509 	 if (!zdr_enum (zdrs, (enum_t *) objp))
510 		 return FALSE;
511 	return TRUE;
512 }
513 
514 uint32_t
zdr_set_mode3(ZDR * zdrs,set_mode3 * objp)515 zdr_set_mode3 (ZDR *zdrs, set_mode3 *objp)
516 {
517 	 if (!zdr_bool (zdrs, &objp->set_it))
518 		 return FALSE;
519 	switch (objp->set_it) {
520 	case TRUE:
521 		 if (!zdr_mode3 (zdrs, &objp->set_mode3_u.mode))
522 			 return FALSE;
523 		break;
524 	default:
525 		break;
526 	}
527 	return TRUE;
528 }
529 
530 uint32_t
zdr_set_uid3(ZDR * zdrs,set_uid3 * objp)531 zdr_set_uid3 (ZDR *zdrs, set_uid3 *objp)
532 {
533 	 if (!zdr_bool (zdrs, &objp->set_it))
534 		 return FALSE;
535 	switch (objp->set_it) {
536 	case TRUE:
537 		 if (!zdr_uid3 (zdrs, &objp->set_uid3_u.uid))
538 			 return FALSE;
539 		break;
540 	default:
541 		break;
542 	}
543 	return TRUE;
544 }
545 
546 uint32_t
zdr_set_gid3(ZDR * zdrs,set_gid3 * objp)547 zdr_set_gid3 (ZDR *zdrs, set_gid3 *objp)
548 {
549 	 if (!zdr_bool (zdrs, &objp->set_it))
550 		 return FALSE;
551 	switch (objp->set_it) {
552 	case TRUE:
553 		 if (!zdr_gid3 (zdrs, &objp->set_gid3_u.gid))
554 			 return FALSE;
555 		break;
556 	default:
557 		break;
558 	}
559 	return TRUE;
560 }
561 
562 uint32_t
zdr_set_size3(ZDR * zdrs,set_size3 * objp)563 zdr_set_size3 (ZDR *zdrs, set_size3 *objp)
564 {
565 	 if (!zdr_bool (zdrs, &objp->set_it))
566 		 return FALSE;
567 	switch (objp->set_it) {
568 	case TRUE:
569 		 if (!zdr_size3 (zdrs, &objp->set_size3_u.size))
570 			 return FALSE;
571 		break;
572 	default:
573 		break;
574 	}
575 	return TRUE;
576 }
577 
578 uint32_t
zdr_set_atime(ZDR * zdrs,set_atime * objp)579 zdr_set_atime (ZDR *zdrs, set_atime *objp)
580 {
581 	 if (!zdr_time_how (zdrs, &objp->set_it))
582 		 return FALSE;
583 	switch (objp->set_it) {
584 	case SET_TO_CLIENT_TIME:
585 		 if (!zdr_nfstime3 (zdrs, &objp->set_atime_u.atime))
586 			 return FALSE;
587 		break;
588 	default:
589 		break;
590 	}
591 	return TRUE;
592 }
593 
594 uint32_t
zdr_set_mtime(ZDR * zdrs,set_mtime * objp)595 zdr_set_mtime (ZDR *zdrs, set_mtime *objp)
596 {
597 	 if (!zdr_time_how (zdrs, &objp->set_it))
598 		 return FALSE;
599 	switch (objp->set_it) {
600 	case SET_TO_CLIENT_TIME:
601 		 if (!zdr_nfstime3 (zdrs, &objp->set_mtime_u.mtime))
602 			 return FALSE;
603 		break;
604 	default:
605 		break;
606 	}
607 	return TRUE;
608 }
609 
610 uint32_t
zdr_sattr3(ZDR * zdrs,sattr3 * objp)611 zdr_sattr3 (ZDR *zdrs, sattr3 *objp)
612 {
613 	 if (!zdr_set_mode3 (zdrs, &objp->mode))
614 		 return FALSE;
615 	 if (!zdr_set_uid3 (zdrs, &objp->uid))
616 		 return FALSE;
617 	 if (!zdr_set_gid3 (zdrs, &objp->gid))
618 		 return FALSE;
619 	 if (!zdr_set_size3 (zdrs, &objp->size))
620 		 return FALSE;
621 	 if (!zdr_set_atime (zdrs, &objp->atime))
622 		 return FALSE;
623 	 if (!zdr_set_mtime (zdrs, &objp->mtime))
624 		 return FALSE;
625 	return TRUE;
626 }
627 
628 uint32_t
zdr_createmode3(ZDR * zdrs,createmode3 * objp)629 zdr_createmode3 (ZDR *zdrs, createmode3 *objp)
630 {
631 	 if (!zdr_enum (zdrs, (enum_t *) objp))
632 		 return FALSE;
633 	return TRUE;
634 }
635 
636 uint32_t
zdr_createverf3(ZDR * zdrs,createverf3 objp)637 zdr_createverf3 (ZDR *zdrs, createverf3 objp)
638 {
639 	 if (!zdr_opaque (zdrs, objp, NFS3_CREATEVERFSIZE))
640 		 return FALSE;
641 	return TRUE;
642 }
643 
644 uint32_t
zdr_createhow3(ZDR * zdrs,createhow3 * objp)645 zdr_createhow3 (ZDR *zdrs, createhow3 *objp)
646 {
647 	 if (!zdr_createmode3 (zdrs, &objp->mode))
648 		 return FALSE;
649 	switch (objp->mode) {
650 	case UNCHECKED:
651 		 if (!zdr_sattr3 (zdrs, &objp->createhow3_u.obj_attributes))
652 			 return FALSE;
653 		break;
654 	case GUARDED:
655 		 if (!zdr_sattr3 (zdrs, &objp->createhow3_u.g_obj_attributes))
656 			 return FALSE;
657 		break;
658 	case EXCLUSIVE:
659 		 if (!zdr_createverf3 (zdrs, objp->createhow3_u.verf))
660 			 return FALSE;
661 		break;
662 	default:
663 		return FALSE;
664 	}
665 	return TRUE;
666 }
667 
668 uint32_t
zdr_CREATE3args(ZDR * zdrs,CREATE3args * objp)669 zdr_CREATE3args (ZDR *zdrs, CREATE3args *objp)
670 {
671 	 if (!zdr_diropargs3 (zdrs, &objp->where))
672 		 return FALSE;
673 	 if (!zdr_createhow3 (zdrs, &objp->how))
674 		 return FALSE;
675 	return TRUE;
676 }
677 
678 uint32_t
zdr_post_op_fh3(ZDR * zdrs,post_op_fh3 * objp)679 zdr_post_op_fh3 (ZDR *zdrs, post_op_fh3 *objp)
680 {
681 	 if (!zdr_bool (zdrs, &objp->handle_follows))
682 		 return FALSE;
683 	switch (objp->handle_follows) {
684 	case TRUE:
685 		 if (!zdr_nfs_fh3 (zdrs, &objp->post_op_fh3_u.handle))
686 			 return FALSE;
687 		break;
688 	case FALSE:
689 		break;
690 	default:
691 		return FALSE;
692 	}
693 	return TRUE;
694 }
695 
696 uint32_t
zdr_CREATE3resok(ZDR * zdrs,CREATE3resok * objp)697 zdr_CREATE3resok (ZDR *zdrs, CREATE3resok *objp)
698 {
699 	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
700 		 return FALSE;
701 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
702 		 return FALSE;
703 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
704 		 return FALSE;
705 	return TRUE;
706 }
707 
708 uint32_t
zdr_CREATE3resfail(ZDR * zdrs,CREATE3resfail * objp)709 zdr_CREATE3resfail (ZDR *zdrs, CREATE3resfail *objp)
710 {
711 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
712 		 return FALSE;
713 	return TRUE;
714 }
715 
716 uint32_t
zdr_CREATE3res(ZDR * zdrs,CREATE3res * objp)717 zdr_CREATE3res (ZDR *zdrs, CREATE3res *objp)
718 {
719 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
720 		 return FALSE;
721 	switch (objp->status) {
722 	case NFS3_OK:
723 		 if (!zdr_CREATE3resok (zdrs, &objp->CREATE3res_u.resok))
724 			 return FALSE;
725 		break;
726 	default:
727 		 if (!zdr_CREATE3resfail (zdrs, &objp->CREATE3res_u.resfail))
728 			 return FALSE;
729 		break;
730 	}
731 	return TRUE;
732 }
733 
734 uint32_t
zdr_REMOVE3args(ZDR * zdrs,REMOVE3args * objp)735 zdr_REMOVE3args (ZDR *zdrs, REMOVE3args *objp)
736 {
737 	 if (!zdr_diropargs3 (zdrs, &objp->object))
738 		 return FALSE;
739 	return TRUE;
740 }
741 
742 uint32_t
zdr_REMOVE3resok(ZDR * zdrs,REMOVE3resok * objp)743 zdr_REMOVE3resok (ZDR *zdrs, REMOVE3resok *objp)
744 {
745 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
746 		 return FALSE;
747 	return TRUE;
748 }
749 
750 uint32_t
zdr_REMOVE3resfail(ZDR * zdrs,REMOVE3resfail * objp)751 zdr_REMOVE3resfail (ZDR *zdrs, REMOVE3resfail *objp)
752 {
753 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
754 		 return FALSE;
755 	return TRUE;
756 }
757 
758 uint32_t
zdr_REMOVE3res(ZDR * zdrs,REMOVE3res * objp)759 zdr_REMOVE3res (ZDR *zdrs, REMOVE3res *objp)
760 {
761 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
762 		 return FALSE;
763 	switch (objp->status) {
764 	case NFS3_OK:
765 		 if (!zdr_REMOVE3resok (zdrs, &objp->REMOVE3res_u.resok))
766 			 return FALSE;
767 		break;
768 	default:
769 		 if (!zdr_REMOVE3resfail (zdrs, &objp->REMOVE3res_u.resfail))
770 			 return FALSE;
771 		break;
772 	}
773 	return TRUE;
774 }
775 
776 uint32_t
zdr_READ3args(ZDR * zdrs,READ3args * objp)777 zdr_READ3args (ZDR *zdrs, READ3args *objp)
778 {
779 	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
780 		 return FALSE;
781 	 if (!zdr_offset3 (zdrs, &objp->offset))
782 		 return FALSE;
783 	 if (!zdr_count3 (zdrs, &objp->count))
784 		 return FALSE;
785 	return TRUE;
786 }
787 
788 uint32_t
zdr_READ3resok(ZDR * zdrs,READ3resok * objp)789 zdr_READ3resok (ZDR *zdrs, READ3resok *objp)
790 {
791 	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
792 		 return FALSE;
793 	 if (!zdr_count3 (zdrs, &objp->count))
794 		 return FALSE;
795 	 if (!zdr_bool (zdrs, &objp->eof))
796 		 return FALSE;
797 	 if (!zdr_bytes (zdrs, (char **)&objp->data.data_val, (u_int *) &objp->data.data_len, ~0))
798 		 return FALSE;
799 	return TRUE;
800 }
801 
802 uint32_t
zdr_READ3resfail(ZDR * zdrs,READ3resfail * objp)803 zdr_READ3resfail (ZDR *zdrs, READ3resfail *objp)
804 {
805 	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
806 		 return FALSE;
807 	return TRUE;
808 }
809 
810 uint32_t
zdr_READ3res(ZDR * zdrs,READ3res * objp)811 zdr_READ3res (ZDR *zdrs, READ3res *objp)
812 {
813 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
814 		 return FALSE;
815 	switch (objp->status) {
816 	case NFS3_OK:
817 		 if (!zdr_READ3resok (zdrs, &objp->READ3res_u.resok))
818 			 return FALSE;
819 		break;
820 	default:
821 		 if (!zdr_READ3resfail (zdrs, &objp->READ3res_u.resfail))
822 			 return FALSE;
823 		break;
824 	}
825 	return TRUE;
826 }
827 
828 uint32_t
zdr_FSINFO3args(ZDR * zdrs,FSINFO3args * objp)829 zdr_FSINFO3args (ZDR *zdrs, FSINFO3args *objp)
830 {
831 	 if (!zdr_nfs_fh3 (zdrs, &objp->fsroot))
832 		 return FALSE;
833 	return TRUE;
834 }
835 
836 uint32_t
zdr_FSINFO3resok(ZDR * zdrs,FSINFO3resok * objp)837 zdr_FSINFO3resok (ZDR *zdrs, FSINFO3resok *objp)
838 {
839 	register int32_t *buf;
840 	buf = NULL;
841 
842 	if (zdrs->x_op == ZDR_ENCODE) {
843 		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
844 			 return FALSE;
845 		buf = ZDR_INLINE (zdrs, 7 * BYTES_PER_ZDR_UNIT);
846 		if (buf == NULL) {
847 			 if (!zdr_u_int (zdrs, &objp->rtmax))
848 				 return FALSE;
849 			 if (!zdr_u_int (zdrs, &objp->rtpref))
850 				 return FALSE;
851 			 if (!zdr_u_int (zdrs, &objp->rtmult))
852 				 return FALSE;
853 			 if (!zdr_u_int (zdrs, &objp->wtmax))
854 				 return FALSE;
855 			 if (!zdr_u_int (zdrs, &objp->wtpref))
856 				 return FALSE;
857 			 if (!zdr_u_int (zdrs, &objp->wtmult))
858 				 return FALSE;
859 			 if (!zdr_u_int (zdrs, &objp->dtpref))
860 				 return FALSE;
861 
862 		} else {
863 		IZDR_PUT_U_LONG(buf, objp->rtmax);
864 		IZDR_PUT_U_LONG(buf, objp->rtpref);
865 		IZDR_PUT_U_LONG(buf, objp->rtmult);
866 		IZDR_PUT_U_LONG(buf, objp->wtmax);
867 		IZDR_PUT_U_LONG(buf, objp->wtpref);
868 		IZDR_PUT_U_LONG(buf, objp->wtmult);
869 		IZDR_PUT_U_LONG(buf, objp->dtpref);
870 		}
871 		 if (!zdr_size3 (zdrs, &objp->maxfilesize))
872 			 return FALSE;
873 		 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
874 			 return FALSE;
875 		 if (!zdr_u_int (zdrs, &objp->properties))
876 			 return FALSE;
877 		return TRUE;
878 	} else if (zdrs->x_op == ZDR_DECODE) {
879 		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
880 			 return FALSE;
881 		buf = ZDR_INLINE (zdrs, 7 * BYTES_PER_ZDR_UNIT);
882 		if (buf == NULL) {
883 			 if (!zdr_u_int (zdrs, &objp->rtmax))
884 				 return FALSE;
885 			 if (!zdr_u_int (zdrs, &objp->rtpref))
886 				 return FALSE;
887 			 if (!zdr_u_int (zdrs, &objp->rtmult))
888 				 return FALSE;
889 			 if (!zdr_u_int (zdrs, &objp->wtmax))
890 				 return FALSE;
891 			 if (!zdr_u_int (zdrs, &objp->wtpref))
892 				 return FALSE;
893 			 if (!zdr_u_int (zdrs, &objp->wtmult))
894 				 return FALSE;
895 			 if (!zdr_u_int (zdrs, &objp->dtpref))
896 				 return FALSE;
897 
898 		} else {
899 		objp->rtmax = IZDR_GET_U_LONG(buf);
900 		objp->rtpref = IZDR_GET_U_LONG(buf);
901 		objp->rtmult = IZDR_GET_U_LONG(buf);
902 		objp->wtmax = IZDR_GET_U_LONG(buf);
903 		objp->wtpref = IZDR_GET_U_LONG(buf);
904 		objp->wtmult = IZDR_GET_U_LONG(buf);
905 		objp->dtpref = IZDR_GET_U_LONG(buf);
906 		}
907 		 if (!zdr_size3 (zdrs, &objp->maxfilesize))
908 			 return FALSE;
909 		 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
910 			 return FALSE;
911 		 if (!zdr_u_int (zdrs, &objp->properties))
912 			 return FALSE;
913 	 return TRUE;
914 	}
915 
916 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
917 		 return FALSE;
918 	 if (!zdr_u_int (zdrs, &objp->rtmax))
919 		 return FALSE;
920 	 if (!zdr_u_int (zdrs, &objp->rtpref))
921 		 return FALSE;
922 	 if (!zdr_u_int (zdrs, &objp->rtmult))
923 		 return FALSE;
924 	 if (!zdr_u_int (zdrs, &objp->wtmax))
925 		 return FALSE;
926 	 if (!zdr_u_int (zdrs, &objp->wtpref))
927 		 return FALSE;
928 	 if (!zdr_u_int (zdrs, &objp->wtmult))
929 		 return FALSE;
930 	 if (!zdr_u_int (zdrs, &objp->dtpref))
931 		 return FALSE;
932 	 if (!zdr_size3 (zdrs, &objp->maxfilesize))
933 		 return FALSE;
934 	 if (!zdr_nfstime3 (zdrs, &objp->time_delta))
935 		 return FALSE;
936 	 if (!zdr_u_int (zdrs, &objp->properties))
937 		 return FALSE;
938 	return TRUE;
939 }
940 
941 uint32_t
zdr_FSINFO3resfail(ZDR * zdrs,FSINFO3resfail * objp)942 zdr_FSINFO3resfail (ZDR *zdrs, FSINFO3resfail *objp)
943 {
944 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
945 		 return FALSE;
946 	return TRUE;
947 }
948 
949 uint32_t
zdr_FSINFO3res(ZDR * zdrs,FSINFO3res * objp)950 zdr_FSINFO3res (ZDR *zdrs, FSINFO3res *objp)
951 {
952 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
953 		 return FALSE;
954 	switch (objp->status) {
955 	case NFS3_OK:
956 		 if (!zdr_FSINFO3resok (zdrs, &objp->FSINFO3res_u.resok))
957 			 return FALSE;
958 		break;
959 	default:
960 		 if (!zdr_FSINFO3resfail (zdrs, &objp->FSINFO3res_u.resfail))
961 			 return FALSE;
962 		break;
963 	}
964 	return TRUE;
965 }
966 
967 uint32_t
zdr_FSSTAT3args(ZDR * zdrs,FSSTAT3args * objp)968 zdr_FSSTAT3args (ZDR *zdrs, FSSTAT3args *objp)
969 {
970 	 if (!zdr_nfs_fh3 (zdrs, &objp->fsroot))
971 		 return FALSE;
972 	return TRUE;
973 }
974 
975 uint32_t
zdr_FSSTAT3resok(ZDR * zdrs,FSSTAT3resok * objp)976 zdr_FSSTAT3resok (ZDR *zdrs, FSSTAT3resok *objp)
977 {
978 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
979 		 return FALSE;
980 	 if (!zdr_size3 (zdrs, &objp->tbytes))
981 		 return FALSE;
982 	 if (!zdr_size3 (zdrs, &objp->fbytes))
983 		 return FALSE;
984 	 if (!zdr_size3 (zdrs, &objp->abytes))
985 		 return FALSE;
986 	 if (!zdr_size3 (zdrs, &objp->tfiles))
987 		 return FALSE;
988 	 if (!zdr_size3 (zdrs, &objp->ffiles))
989 		 return FALSE;
990 	 if (!zdr_size3 (zdrs, &objp->afiles))
991 		 return FALSE;
992 	 if (!zdr_u_int (zdrs, &objp->invarsec))
993 		 return FALSE;
994 	return TRUE;
995 }
996 
997 uint32_t
zdr_FSSTAT3resfail(ZDR * zdrs,FSSTAT3resfail * objp)998 zdr_FSSTAT3resfail (ZDR *zdrs, FSSTAT3resfail *objp)
999 {
1000 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1001 		 return FALSE;
1002 	return TRUE;
1003 }
1004 
1005 uint32_t
zdr_FSSTAT3res(ZDR * zdrs,FSSTAT3res * objp)1006 zdr_FSSTAT3res (ZDR *zdrs, FSSTAT3res *objp)
1007 {
1008 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1009 		 return FALSE;
1010 	switch (objp->status) {
1011 	case NFS3_OK:
1012 		 if (!zdr_FSSTAT3resok (zdrs, &objp->FSSTAT3res_u.resok))
1013 			 return FALSE;
1014 		break;
1015 	default:
1016 		 if (!zdr_FSSTAT3resfail (zdrs, &objp->FSSTAT3res_u.resfail))
1017 			 return FALSE;
1018 		break;
1019 	}
1020 	return TRUE;
1021 }
1022 
1023 uint32_t
zdr_PATHCONF3args(ZDR * zdrs,PATHCONF3args * objp)1024 zdr_PATHCONF3args (ZDR *zdrs, PATHCONF3args *objp)
1025 {
1026 	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
1027 		 return FALSE;
1028 	return TRUE;
1029 }
1030 
1031 uint32_t
zdr_PATHCONF3resok(ZDR * zdrs,PATHCONF3resok * objp)1032 zdr_PATHCONF3resok (ZDR *zdrs, PATHCONF3resok *objp)
1033 {
1034 	register int32_t *buf;
1035 	buf = NULL;
1036 
1037 	if (zdrs->x_op == ZDR_ENCODE) {
1038 		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1039 			 return FALSE;
1040 		buf = ZDR_INLINE (zdrs, 6 * BYTES_PER_ZDR_UNIT);
1041 		if (buf == NULL) {
1042 			 if (!zdr_u_int (zdrs, &objp->linkmax))
1043 				 return FALSE;
1044 			 if (!zdr_u_int (zdrs, &objp->name_max))
1045 				 return FALSE;
1046 			 if (!zdr_bool (zdrs, &objp->no_trunc))
1047 				 return FALSE;
1048 			 if (!zdr_bool (zdrs, &objp->chown_restricted))
1049 				 return FALSE;
1050 			 if (!zdr_bool (zdrs, &objp->case_insensitive))
1051 				 return FALSE;
1052 			 if (!zdr_bool (zdrs, &objp->case_preserving))
1053 				 return FALSE;
1054 		} else {
1055 			IZDR_PUT_U_LONG(buf, objp->linkmax);
1056 			IZDR_PUT_U_LONG(buf, objp->name_max);
1057 			IZDR_PUT_BOOL(buf, objp->no_trunc);
1058 			IZDR_PUT_BOOL(buf, objp->chown_restricted);
1059 			IZDR_PUT_BOOL(buf, objp->case_insensitive);
1060 			IZDR_PUT_BOOL(buf, objp->case_preserving);
1061 		}
1062 		return TRUE;
1063 	} else if (zdrs->x_op == ZDR_DECODE) {
1064 		 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1065 			 return FALSE;
1066 		buf = ZDR_INLINE (zdrs, 6 * BYTES_PER_ZDR_UNIT);
1067 		if (buf == NULL) {
1068 			 if (!zdr_u_int (zdrs, &objp->linkmax))
1069 				 return FALSE;
1070 			 if (!zdr_u_int (zdrs, &objp->name_max))
1071 				 return FALSE;
1072 			 if (!zdr_bool (zdrs, &objp->no_trunc))
1073 				 return FALSE;
1074 			 if (!zdr_bool (zdrs, &objp->chown_restricted))
1075 				 return FALSE;
1076 			 if (!zdr_bool (zdrs, &objp->case_insensitive))
1077 				 return FALSE;
1078 			 if (!zdr_bool (zdrs, &objp->case_preserving))
1079 				 return FALSE;
1080 		} else {
1081 			objp->linkmax = IZDR_GET_U_LONG(buf);
1082 			objp->name_max = IZDR_GET_U_LONG(buf);
1083 			objp->no_trunc = IZDR_GET_BOOL(buf);
1084 			objp->chown_restricted = IZDR_GET_BOOL(buf);
1085 			objp->case_insensitive = IZDR_GET_BOOL(buf);
1086 			objp->case_preserving = IZDR_GET_BOOL(buf);
1087 		}
1088 	 return TRUE;
1089 	}
1090 
1091 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1092 		 return FALSE;
1093 	 if (!zdr_u_int (zdrs, &objp->linkmax))
1094 		 return FALSE;
1095 	 if (!zdr_u_int (zdrs, &objp->name_max))
1096 		 return FALSE;
1097 	 if (!zdr_bool (zdrs, &objp->no_trunc))
1098 		 return FALSE;
1099 	 if (!zdr_bool (zdrs, &objp->chown_restricted))
1100 		 return FALSE;
1101 	 if (!zdr_bool (zdrs, &objp->case_insensitive))
1102 		 return FALSE;
1103 	 if (!zdr_bool (zdrs, &objp->case_preserving))
1104 		 return FALSE;
1105 	return TRUE;
1106 }
1107 
1108 uint32_t
zdr_PATHCONF3resfail(ZDR * zdrs,PATHCONF3resfail * objp)1109 zdr_PATHCONF3resfail (ZDR *zdrs, PATHCONF3resfail *objp)
1110 {
1111 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1112 		 return FALSE;
1113 	return TRUE;
1114 }
1115 
1116 uint32_t
zdr_PATHCONF3res(ZDR * zdrs,PATHCONF3res * objp)1117 zdr_PATHCONF3res (ZDR *zdrs, PATHCONF3res *objp)
1118 {
1119 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1120 		 return FALSE;
1121 	switch (objp->status) {
1122 	case NFS3_OK:
1123 		 if (!zdr_PATHCONF3resok (zdrs, &objp->PATHCONF3res_u.resok))
1124 			 return FALSE;
1125 		break;
1126 	default:
1127 		 if (!zdr_PATHCONF3resfail (zdrs, &objp->PATHCONF3res_u.resfail))
1128 			 return FALSE;
1129 		break;
1130 	}
1131 	return TRUE;
1132 }
1133 
1134 uint32_t
zdr_nfspath3(ZDR * zdrs,nfspath3 * objp)1135 zdr_nfspath3 (ZDR *zdrs, nfspath3 *objp)
1136 {
1137 	 if (!zdr_string (zdrs, objp, ~0))
1138 		 return FALSE;
1139 	return TRUE;
1140 }
1141 
1142 uint32_t
zdr_symlinkdata3(ZDR * zdrs,symlinkdata3 * objp)1143 zdr_symlinkdata3 (ZDR *zdrs, symlinkdata3 *objp)
1144 {
1145 	 if (!zdr_sattr3 (zdrs, &objp->symlink_attributes))
1146 		 return FALSE;
1147 	 if (!zdr_nfspath3 (zdrs, &objp->symlink_data))
1148 		 return FALSE;
1149 	return TRUE;
1150 }
1151 
1152 uint32_t
zdr_SYMLINK3args(ZDR * zdrs,SYMLINK3args * objp)1153 zdr_SYMLINK3args (ZDR *zdrs, SYMLINK3args *objp)
1154 {
1155 	 if (!zdr_diropargs3 (zdrs, &objp->where))
1156 		 return FALSE;
1157 	 if (!zdr_symlinkdata3 (zdrs, &objp->symlink))
1158 		 return FALSE;
1159 	return TRUE;
1160 }
1161 
1162 uint32_t
zdr_SYMLINK3resok(ZDR * zdrs,SYMLINK3resok * objp)1163 zdr_SYMLINK3resok (ZDR *zdrs, SYMLINK3resok *objp)
1164 {
1165 	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
1166 		 return FALSE;
1167 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1168 		 return FALSE;
1169 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1170 		 return FALSE;
1171 	return TRUE;
1172 }
1173 
1174 uint32_t
zdr_SYMLINK3resfail(ZDR * zdrs,SYMLINK3resfail * objp)1175 zdr_SYMLINK3resfail (ZDR *zdrs, SYMLINK3resfail *objp)
1176 {
1177 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1178 		 return FALSE;
1179 	return TRUE;
1180 }
1181 
1182 uint32_t
zdr_SYMLINK3res(ZDR * zdrs,SYMLINK3res * objp)1183 zdr_SYMLINK3res (ZDR *zdrs, SYMLINK3res *objp)
1184 {
1185 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1186 		 return FALSE;
1187 	switch (objp->status) {
1188 	case NFS3_OK:
1189 		 if (!zdr_SYMLINK3resok (zdrs, &objp->SYMLINK3res_u.resok))
1190 			 return FALSE;
1191 		break;
1192 	default:
1193 		 if (!zdr_SYMLINK3resfail (zdrs, &objp->SYMLINK3res_u.resfail))
1194 			 return FALSE;
1195 		break;
1196 	}
1197 	return TRUE;
1198 }
1199 
1200 uint32_t
zdr_READLINK3args(ZDR * zdrs,READLINK3args * objp)1201 zdr_READLINK3args (ZDR *zdrs, READLINK3args *objp)
1202 {
1203 	 if (!zdr_nfs_fh3 (zdrs, &objp->symlink))
1204 		 return FALSE;
1205 	return TRUE;
1206 }
1207 
1208 uint32_t
zdr_READLINK3resok(ZDR * zdrs,READLINK3resok * objp)1209 zdr_READLINK3resok (ZDR *zdrs, READLINK3resok *objp)
1210 {
1211 	 if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes))
1212 		 return FALSE;
1213 	 if (!zdr_nfspath3 (zdrs, &objp->data))
1214 		 return FALSE;
1215 	return TRUE;
1216 }
1217 
1218 uint32_t
zdr_READLINK3resfail(ZDR * zdrs,READLINK3resfail * objp)1219 zdr_READLINK3resfail (ZDR *zdrs, READLINK3resfail *objp)
1220 {
1221 	 if (!zdr_post_op_attr (zdrs, &objp->symlink_attributes))
1222 		 return FALSE;
1223 	return TRUE;
1224 }
1225 
1226 uint32_t
zdr_READLINK3res(ZDR * zdrs,READLINK3res * objp)1227 zdr_READLINK3res (ZDR *zdrs, READLINK3res *objp)
1228 {
1229 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1230 		 return FALSE;
1231 	switch (objp->status) {
1232 	case NFS3_OK:
1233 		 if (!zdr_READLINK3resok (zdrs, &objp->READLINK3res_u.resok))
1234 			 return FALSE;
1235 		break;
1236 	default:
1237 		 if (!zdr_READLINK3resfail (zdrs, &objp->READLINK3res_u.resfail))
1238 			 return FALSE;
1239 		break;
1240 	}
1241 	return TRUE;
1242 }
1243 
1244 uint32_t
zdr_devicedata3(ZDR * zdrs,devicedata3 * objp)1245 zdr_devicedata3 (ZDR *zdrs, devicedata3 *objp)
1246 {
1247 	 if (!zdr_sattr3 (zdrs, &objp->dev_attributes))
1248 		 return FALSE;
1249 	 if (!zdr_specdata3 (zdrs, &objp->spec))
1250 		 return FALSE;
1251 	return TRUE;
1252 }
1253 
1254 uint32_t
zdr_mknoddata3(ZDR * zdrs,mknoddata3 * objp)1255 zdr_mknoddata3 (ZDR *zdrs, mknoddata3 *objp)
1256 {
1257 	 if (!zdr_ftype3 (zdrs, &objp->type))
1258 		 return FALSE;
1259 	switch (objp->type) {
1260 	case NF3CHR:
1261 		 if (!zdr_devicedata3 (zdrs, &objp->mknoddata3_u.chr_device))
1262 			 return FALSE;
1263 		break;
1264 	case NF3BLK:
1265 		 if (!zdr_devicedata3 (zdrs, &objp->mknoddata3_u.blk_device))
1266 			 return FALSE;
1267 		break;
1268 	case NF3SOCK:
1269 		 if (!zdr_sattr3 (zdrs, &objp->mknoddata3_u.sock_attributes))
1270 			 return FALSE;
1271 		break;
1272 	case NF3FIFO:
1273 		 if (!zdr_sattr3 (zdrs, &objp->mknoddata3_u.pipe_attributes))
1274 			 return FALSE;
1275 		break;
1276 	default:
1277 		break;
1278 	}
1279 	return TRUE;
1280 }
1281 
1282 uint32_t
zdr_MKNOD3args(ZDR * zdrs,MKNOD3args * objp)1283 zdr_MKNOD3args (ZDR *zdrs, MKNOD3args *objp)
1284 {
1285 	 if (!zdr_diropargs3 (zdrs, &objp->where))
1286 		 return FALSE;
1287 	 if (!zdr_mknoddata3 (zdrs, &objp->what))
1288 		 return FALSE;
1289 	return TRUE;
1290 }
1291 
1292 uint32_t
zdr_MKNOD3resok(ZDR * zdrs,MKNOD3resok * objp)1293 zdr_MKNOD3resok (ZDR *zdrs, MKNOD3resok *objp)
1294 {
1295 	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
1296 		 return FALSE;
1297 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1298 		 return FALSE;
1299 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1300 		 return FALSE;
1301 	return TRUE;
1302 }
1303 
1304 uint32_t
zdr_MKNOD3resfail(ZDR * zdrs,MKNOD3resfail * objp)1305 zdr_MKNOD3resfail (ZDR *zdrs, MKNOD3resfail *objp)
1306 {
1307 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1308 		 return FALSE;
1309 	return TRUE;
1310 }
1311 
1312 uint32_t
zdr_MKNOD3res(ZDR * zdrs,MKNOD3res * objp)1313 zdr_MKNOD3res (ZDR *zdrs, MKNOD3res *objp)
1314 {
1315 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1316 		 return FALSE;
1317 	switch (objp->status) {
1318 	case NFS3_OK:
1319 		 if (!zdr_MKNOD3resok (zdrs, &objp->MKNOD3res_u.resok))
1320 			 return FALSE;
1321 		break;
1322 	default:
1323 		 if (!zdr_MKNOD3resfail (zdrs, &objp->MKNOD3res_u.resfail))
1324 			 return FALSE;
1325 		break;
1326 	}
1327 	return TRUE;
1328 }
1329 
1330 uint32_t
zdr_MKDIR3args(ZDR * zdrs,MKDIR3args * objp)1331 zdr_MKDIR3args (ZDR *zdrs, MKDIR3args *objp)
1332 {
1333 	 if (!zdr_diropargs3 (zdrs, &objp->where))
1334 		 return FALSE;
1335 	 if (!zdr_sattr3 (zdrs, &objp->attributes))
1336 		 return FALSE;
1337 	return TRUE;
1338 }
1339 
1340 uint32_t
zdr_MKDIR3resok(ZDR * zdrs,MKDIR3resok * objp)1341 zdr_MKDIR3resok (ZDR *zdrs, MKDIR3resok *objp)
1342 {
1343 	 if (!zdr_post_op_fh3 (zdrs, &objp->obj))
1344 		 return FALSE;
1345 	 if (!zdr_post_op_attr (zdrs, &objp->obj_attributes))
1346 		 return FALSE;
1347 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1348 		 return FALSE;
1349 	return TRUE;
1350 }
1351 
1352 uint32_t
zdr_MKDIR3resfail(ZDR * zdrs,MKDIR3resfail * objp)1353 zdr_MKDIR3resfail (ZDR *zdrs, MKDIR3resfail *objp)
1354 {
1355 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1356 		 return FALSE;
1357 	return TRUE;
1358 }
1359 
1360 uint32_t
zdr_MKDIR3res(ZDR * zdrs,MKDIR3res * objp)1361 zdr_MKDIR3res (ZDR *zdrs, MKDIR3res *objp)
1362 {
1363 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1364 		 return FALSE;
1365 	switch (objp->status) {
1366 	case NFS3_OK:
1367 		 if (!zdr_MKDIR3resok (zdrs, &objp->MKDIR3res_u.resok))
1368 			 return FALSE;
1369 		break;
1370 	default:
1371 		 if (!zdr_MKDIR3resfail (zdrs, &objp->MKDIR3res_u.resfail))
1372 			 return FALSE;
1373 		break;
1374 	}
1375 	return TRUE;
1376 }
1377 
1378 uint32_t
zdr_RMDIR3args(ZDR * zdrs,RMDIR3args * objp)1379 zdr_RMDIR3args (ZDR *zdrs, RMDIR3args *objp)
1380 {
1381 	 if (!zdr_diropargs3 (zdrs, &objp->object))
1382 		 return FALSE;
1383 	return TRUE;
1384 }
1385 
1386 uint32_t
zdr_RMDIR3resok(ZDR * zdrs,RMDIR3resok * objp)1387 zdr_RMDIR3resok (ZDR *zdrs, RMDIR3resok *objp)
1388 {
1389 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1390 		 return FALSE;
1391 	return TRUE;
1392 }
1393 
1394 uint32_t
zdr_RMDIR3resfail(ZDR * zdrs,RMDIR3resfail * objp)1395 zdr_RMDIR3resfail (ZDR *zdrs, RMDIR3resfail *objp)
1396 {
1397 	 if (!zdr_wcc_data (zdrs, &objp->dir_wcc))
1398 		 return FALSE;
1399 	return TRUE;
1400 }
1401 
1402 uint32_t
zdr_RMDIR3res(ZDR * zdrs,RMDIR3res * objp)1403 zdr_RMDIR3res (ZDR *zdrs, RMDIR3res *objp)
1404 {
1405 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1406 		 return FALSE;
1407 	switch (objp->status) {
1408 	case NFS3_OK:
1409 		 if (!zdr_RMDIR3resok (zdrs, &objp->RMDIR3res_u.resok))
1410 			 return FALSE;
1411 		break;
1412 	default:
1413 		 if (!zdr_RMDIR3resfail (zdrs, &objp->RMDIR3res_u.resfail))
1414 			 return FALSE;
1415 		break;
1416 	}
1417 	return TRUE;
1418 }
1419 
1420 uint32_t
zdr_RENAME3args(ZDR * zdrs,RENAME3args * objp)1421 zdr_RENAME3args (ZDR *zdrs, RENAME3args *objp)
1422 {
1423 	 if (!zdr_diropargs3 (zdrs, &objp->from))
1424 		 return FALSE;
1425 	 if (!zdr_diropargs3 (zdrs, &objp->to))
1426 		 return FALSE;
1427 	return TRUE;
1428 }
1429 
1430 uint32_t
zdr_RENAME3resok(ZDR * zdrs,RENAME3resok * objp)1431 zdr_RENAME3resok (ZDR *zdrs, RENAME3resok *objp)
1432 {
1433 	 if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc))
1434 		 return FALSE;
1435 	 if (!zdr_wcc_data (zdrs, &objp->todir_wcc))
1436 		 return FALSE;
1437 	return TRUE;
1438 }
1439 
1440 uint32_t
zdr_RENAME3resfail(ZDR * zdrs,RENAME3resfail * objp)1441 zdr_RENAME3resfail (ZDR *zdrs, RENAME3resfail *objp)
1442 {
1443 	 if (!zdr_wcc_data (zdrs, &objp->fromdir_wcc))
1444 		 return FALSE;
1445 	 if (!zdr_wcc_data (zdrs, &objp->todir_wcc))
1446 		 return FALSE;
1447 	return TRUE;
1448 }
1449 
1450 uint32_t
zdr_RENAME3res(ZDR * zdrs,RENAME3res * objp)1451 zdr_RENAME3res (ZDR *zdrs, RENAME3res *objp)
1452 {
1453 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1454 		 return FALSE;
1455 	switch (objp->status) {
1456 	case NFS3_OK:
1457 		 if (!zdr_RENAME3resok (zdrs, &objp->RENAME3res_u.resok))
1458 			 return FALSE;
1459 		break;
1460 	default:
1461 		 if (!zdr_RENAME3resfail (zdrs, &objp->RENAME3res_u.resfail))
1462 			 return FALSE;
1463 		break;
1464 	}
1465 	return TRUE;
1466 }
1467 
1468 uint32_t
zdr_READDIRPLUS3args(ZDR * zdrs,READDIRPLUS3args * objp)1469 zdr_READDIRPLUS3args (ZDR *zdrs, READDIRPLUS3args *objp)
1470 {
1471 	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
1472 		 return FALSE;
1473 	 if (!zdr_cookie3 (zdrs, &objp->cookie))
1474 		 return FALSE;
1475 	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
1476 		 return FALSE;
1477 	 if (!zdr_count3 (zdrs, &objp->dircount))
1478 		 return FALSE;
1479 	 if (!zdr_count3 (zdrs, &objp->maxcount))
1480 		 return FALSE;
1481 	return TRUE;
1482 }
1483 
1484 uint32_t
zdr_entryplus3(ZDR * zdrs,entryplus3 * objp)1485 zdr_entryplus3 (ZDR *zdrs, entryplus3 *objp)
1486 {
1487 	 if (!zdr_fileid3 (zdrs, &objp->fileid))
1488 		 return FALSE;
1489 	 if (!zdr_filename3 (zdrs, &objp->name))
1490 		 return FALSE;
1491 	 if (!zdr_cookie3 (zdrs, &objp->cookie))
1492 		 return FALSE;
1493 	 if (!zdr_post_op_attr (zdrs, &objp->name_attributes))
1494 		 return FALSE;
1495 	 if (!zdr_post_op_fh3 (zdrs, &objp->name_handle))
1496 		 return FALSE;
1497 	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entryplus3), (zdrproc_t) zdr_entryplus3))
1498 		 return FALSE;
1499 	return TRUE;
1500 }
1501 
1502 uint32_t
zdr_dirlistplus3(ZDR * zdrs,dirlistplus3 * objp)1503 zdr_dirlistplus3 (ZDR *zdrs, dirlistplus3 *objp)
1504 {
1505 	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entryplus3), (zdrproc_t) zdr_entryplus3))
1506 		 return FALSE;
1507 	 if (!zdr_bool (zdrs, &objp->eof))
1508 		 return FALSE;
1509 	return TRUE;
1510 }
1511 
1512 uint32_t
zdr_READDIRPLUS3resok(ZDR * zdrs,READDIRPLUS3resok * objp)1513 zdr_READDIRPLUS3resok (ZDR *zdrs, READDIRPLUS3resok *objp)
1514 {
1515 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
1516 		 return FALSE;
1517 	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
1518 		 return FALSE;
1519 	 if (!zdr_dirlistplus3 (zdrs, &objp->reply))
1520 		 return FALSE;
1521 	return TRUE;
1522 }
1523 
1524 uint32_t
zdr_READDIRPLUS3resfail(ZDR * zdrs,READDIRPLUS3resfail * objp)1525 zdr_READDIRPLUS3resfail (ZDR *zdrs, READDIRPLUS3resfail *objp)
1526 {
1527 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
1528 		 return FALSE;
1529 	return TRUE;
1530 }
1531 
1532 uint32_t
zdr_READDIRPLUS3res(ZDR * zdrs,READDIRPLUS3res * objp)1533 zdr_READDIRPLUS3res (ZDR *zdrs, READDIRPLUS3res *objp)
1534 {
1535 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1536 		 return FALSE;
1537 	switch (objp->status) {
1538 	case NFS3_OK:
1539 		 if (!zdr_READDIRPLUS3resok (zdrs, &objp->READDIRPLUS3res_u.resok))
1540 			 return FALSE;
1541 		break;
1542 	default:
1543 		 if (!zdr_READDIRPLUS3resfail (zdrs, &objp->READDIRPLUS3res_u.resfail))
1544 			 return FALSE;
1545 		break;
1546 	}
1547 	return TRUE;
1548 }
1549 
1550 uint32_t
zdr_READDIR3args(ZDR * zdrs,READDIR3args * objp)1551 zdr_READDIR3args (ZDR *zdrs, READDIR3args *objp)
1552 {
1553 	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
1554 		 return FALSE;
1555 	 if (!zdr_cookie3 (zdrs, &objp->cookie))
1556 		 return FALSE;
1557 	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
1558 		 return FALSE;
1559 	 if (!zdr_count3 (zdrs, &objp->count))
1560 		 return FALSE;
1561 	return TRUE;
1562 }
1563 
1564 uint32_t
zdr_entry3(ZDR * zdrs,entry3 * objp)1565 zdr_entry3 (ZDR *zdrs, entry3 *objp)
1566 {
1567 	 if (!zdr_fileid3 (zdrs, &objp->fileid))
1568 		 return FALSE;
1569 	 if (!zdr_filename3 (zdrs, &objp->name))
1570 		 return FALSE;
1571 	 if (!zdr_cookie3 (zdrs, &objp->cookie))
1572 		 return FALSE;
1573 	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entry3), (zdrproc_t) zdr_entry3))
1574 		 return FALSE;
1575 	return TRUE;
1576 }
1577 
1578 uint32_t
zdr_dirlist3(ZDR * zdrs,dirlist3 * objp)1579 zdr_dirlist3 (ZDR *zdrs, dirlist3 *objp)
1580 {
1581 	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry3), (zdrproc_t) zdr_entry3))
1582 		 return FALSE;
1583 	 if (!zdr_bool (zdrs, &objp->eof))
1584 		 return FALSE;
1585 	return TRUE;
1586 }
1587 
1588 uint32_t
zdr_READDIR3resok(ZDR * zdrs,READDIR3resok * objp)1589 zdr_READDIR3resok (ZDR *zdrs, READDIR3resok *objp)
1590 {
1591 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
1592 		 return FALSE;
1593 	 if (!zdr_cookieverf3 (zdrs, objp->cookieverf))
1594 		 return FALSE;
1595 	 if (!zdr_dirlist3 (zdrs, &objp->reply))
1596 		 return FALSE;
1597 	return TRUE;
1598 }
1599 
1600 uint32_t
zdr_READDIR3resfail(ZDR * zdrs,READDIR3resfail * objp)1601 zdr_READDIR3resfail (ZDR *zdrs, READDIR3resfail *objp)
1602 {
1603 	 if (!zdr_post_op_attr (zdrs, &objp->dir_attributes))
1604 		 return FALSE;
1605 	return TRUE;
1606 }
1607 
1608 uint32_t
zdr_READDIR3res(ZDR * zdrs,READDIR3res * objp)1609 zdr_READDIR3res (ZDR *zdrs, READDIR3res *objp)
1610 {
1611 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1612 		 return FALSE;
1613 	switch (objp->status) {
1614 	case NFS3_OK:
1615 		 if (!zdr_READDIR3resok (zdrs, &objp->READDIR3res_u.resok))
1616 			 return FALSE;
1617 		break;
1618 	default:
1619 		 if (!zdr_READDIR3resfail (zdrs, &objp->READDIR3res_u.resfail))
1620 			 return FALSE;
1621 		break;
1622 	}
1623 	return TRUE;
1624 }
1625 
1626 uint32_t
zdr_LINK3args(ZDR * zdrs,LINK3args * objp)1627 zdr_LINK3args (ZDR *zdrs, LINK3args *objp)
1628 {
1629 	 if (!zdr_nfs_fh3 (zdrs, &objp->file))
1630 		 return FALSE;
1631 	 if (!zdr_diropargs3 (zdrs, &objp->link))
1632 		 return FALSE;
1633 	return TRUE;
1634 }
1635 
1636 uint32_t
zdr_LINK3resok(ZDR * zdrs,LINK3resok * objp)1637 zdr_LINK3resok (ZDR *zdrs, LINK3resok *objp)
1638 {
1639 	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
1640 		 return FALSE;
1641 	 if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc))
1642 		 return FALSE;
1643 	return TRUE;
1644 }
1645 
1646 uint32_t
zdr_LINK3resfail(ZDR * zdrs,LINK3resfail * objp)1647 zdr_LINK3resfail (ZDR *zdrs, LINK3resfail *objp)
1648 {
1649 	 if (!zdr_post_op_attr (zdrs, &objp->file_attributes))
1650 		 return FALSE;
1651 	 if (!zdr_wcc_data (zdrs, &objp->linkdir_wcc))
1652 		 return FALSE;
1653 	return TRUE;
1654 }
1655 
1656 uint32_t
zdr_LINK3res(ZDR * zdrs,LINK3res * objp)1657 zdr_LINK3res (ZDR *zdrs, LINK3res *objp)
1658 {
1659 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1660 		 return FALSE;
1661 	switch (objp->status) {
1662 	case NFS3_OK:
1663 		 if (!zdr_LINK3resok (zdrs, &objp->LINK3res_u.resok))
1664 			 return FALSE;
1665 		break;
1666 	default:
1667 		 if (!zdr_LINK3resfail (zdrs, &objp->LINK3res_u.resfail))
1668 			 return FALSE;
1669 		break;
1670 	}
1671 	return TRUE;
1672 }
1673 
1674 uint32_t
zdr_sattrguard3(ZDR * zdrs,sattrguard3 * objp)1675 zdr_sattrguard3 (ZDR *zdrs, sattrguard3 *objp)
1676 {
1677 	 if (!zdr_bool (zdrs, &objp->check))
1678 		 return FALSE;
1679 	switch (objp->check) {
1680 	case TRUE:
1681 		 if (!zdr_nfstime3 (zdrs, &objp->sattrguard3_u.obj_ctime))
1682 			 return FALSE;
1683 		break;
1684 	case FALSE:
1685 		break;
1686 	default:
1687 		return FALSE;
1688 	}
1689 	return TRUE;
1690 }
1691 
1692 uint32_t
zdr_SETATTR3args(ZDR * zdrs,SETATTR3args * objp)1693 zdr_SETATTR3args (ZDR *zdrs, SETATTR3args *objp)
1694 {
1695 	 if (!zdr_nfs_fh3 (zdrs, &objp->object))
1696 		 return FALSE;
1697 	 if (!zdr_sattr3 (zdrs, &objp->new_attributes))
1698 		 return FALSE;
1699 	 if (!zdr_sattrguard3 (zdrs, &objp->guard))
1700 		 return FALSE;
1701 	return TRUE;
1702 }
1703 
1704 uint32_t
zdr_SETATTR3resok(ZDR * zdrs,SETATTR3resok * objp)1705 zdr_SETATTR3resok (ZDR *zdrs, SETATTR3resok *objp)
1706 {
1707 	 if (!zdr_wcc_data (zdrs, &objp->obj_wcc))
1708 		 return FALSE;
1709 	return TRUE;
1710 }
1711 
1712 uint32_t
zdr_SETATTR3resfail(ZDR * zdrs,SETATTR3resfail * objp)1713 zdr_SETATTR3resfail (ZDR *zdrs, SETATTR3resfail *objp)
1714 {
1715 	 if (!zdr_wcc_data (zdrs, &objp->obj_wcc))
1716 		 return FALSE;
1717 	return TRUE;
1718 }
1719 
1720 uint32_t
zdr_SETATTR3res(ZDR * zdrs,SETATTR3res * objp)1721 zdr_SETATTR3res (ZDR *zdrs, SETATTR3res *objp)
1722 {
1723 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
1724 		 return FALSE;
1725 	switch (objp->status) {
1726 	case NFS3_OK:
1727 		 if (!zdr_SETATTR3resok (zdrs, &objp->SETATTR3res_u.resok))
1728 			 return FALSE;
1729 		break;
1730 	default:
1731 		 if (!zdr_SETATTR3resfail (zdrs, &objp->SETATTR3res_u.resfail))
1732 			 return FALSE;
1733 		break;
1734 	}
1735 	return TRUE;
1736 }
1737 
1738 uint32_t
zdr_fhandle2(ZDR * zdrs,fhandle2 objp)1739 zdr_fhandle2 (ZDR *zdrs, fhandle2 objp)
1740 {
1741 	 if (!zdr_opaque (zdrs, objp, FHSIZE2))
1742 		 return FALSE;
1743 	return TRUE;
1744 }
1745 
1746 uint32_t
zdr_ftype2(ZDR * zdrs,ftype2 * objp)1747 zdr_ftype2 (ZDR *zdrs, ftype2 *objp)
1748 {
1749 	 if (!zdr_enum (zdrs, (enum_t *) objp))
1750 		 return FALSE;
1751 	return TRUE;
1752 }
1753 
1754 uint32_t
zdr_fattr2(ZDR * zdrs,fattr2 * objp)1755 zdr_fattr2 (ZDR *zdrs, fattr2 *objp)
1756 {
1757 	register int32_t *buf;
1758 	buf = NULL;
1759 
1760 	if (zdrs->x_op == ZDR_ENCODE) {
1761 		 if (!zdr_ftype2 (zdrs, &objp->type))
1762 			 return FALSE;
1763 		buf = ZDR_INLINE (zdrs, 10 * BYTES_PER_ZDR_UNIT);
1764 		if (buf == NULL) {
1765 			 if (!zdr_u_int (zdrs, &objp->mode))
1766 				 return FALSE;
1767 			 if (!zdr_u_int (zdrs, &objp->nlink))
1768 				 return FALSE;
1769 			 if (!zdr_u_int (zdrs, &objp->uid))
1770 				 return FALSE;
1771 			 if (!zdr_u_int (zdrs, &objp->gid))
1772 				 return FALSE;
1773 			 if (!zdr_u_int (zdrs, &objp->size))
1774 				 return FALSE;
1775 			 if (!zdr_u_int (zdrs, &objp->blocksize))
1776 				 return FALSE;
1777 			 if (!zdr_u_int (zdrs, &objp->rdev))
1778 				 return FALSE;
1779 			 if (!zdr_u_int (zdrs, &objp->blocks))
1780 				 return FALSE;
1781 			 if (!zdr_u_int (zdrs, &objp->fsid))
1782 				 return FALSE;
1783 			 if (!zdr_u_int (zdrs, &objp->fileid))
1784 				 return FALSE;
1785 
1786 		} else {
1787 		IZDR_PUT_U_LONG(buf, objp->mode);
1788 		IZDR_PUT_U_LONG(buf, objp->nlink);
1789 		IZDR_PUT_U_LONG(buf, objp->uid);
1790 		IZDR_PUT_U_LONG(buf, objp->gid);
1791 		IZDR_PUT_U_LONG(buf, objp->size);
1792 		IZDR_PUT_U_LONG(buf, objp->blocksize);
1793 		IZDR_PUT_U_LONG(buf, objp->rdev);
1794 		IZDR_PUT_U_LONG(buf, objp->blocks);
1795 		IZDR_PUT_U_LONG(buf, objp->fsid);
1796 		IZDR_PUT_U_LONG(buf, objp->fileid);
1797 		}
1798 		 if (!zdr_nfstime3 (zdrs, &objp->atime))
1799 			 return FALSE;
1800 		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1801 			 return FALSE;
1802 		 if (!zdr_nfstime3 (zdrs, &objp->ctime))
1803 			 return FALSE;
1804 		return TRUE;
1805 	} else if (zdrs->x_op == ZDR_DECODE) {
1806 		 if (!zdr_ftype2 (zdrs, &objp->type))
1807 			 return FALSE;
1808 		buf = ZDR_INLINE (zdrs, 10 * BYTES_PER_ZDR_UNIT);
1809 		if (buf == NULL) {
1810 			 if (!zdr_u_int (zdrs, &objp->mode))
1811 				 return FALSE;
1812 			 if (!zdr_u_int (zdrs, &objp->nlink))
1813 				 return FALSE;
1814 			 if (!zdr_u_int (zdrs, &objp->uid))
1815 				 return FALSE;
1816 			 if (!zdr_u_int (zdrs, &objp->gid))
1817 				 return FALSE;
1818 			 if (!zdr_u_int (zdrs, &objp->size))
1819 				 return FALSE;
1820 			 if (!zdr_u_int (zdrs, &objp->blocksize))
1821 				 return FALSE;
1822 			 if (!zdr_u_int (zdrs, &objp->rdev))
1823 				 return FALSE;
1824 			 if (!zdr_u_int (zdrs, &objp->blocks))
1825 				 return FALSE;
1826 			 if (!zdr_u_int (zdrs, &objp->fsid))
1827 				 return FALSE;
1828 			 if (!zdr_u_int (zdrs, &objp->fileid))
1829 				 return FALSE;
1830 
1831 		} else {
1832 		objp->mode = IZDR_GET_U_LONG(buf);
1833 		objp->nlink = IZDR_GET_U_LONG(buf);
1834 		objp->uid = IZDR_GET_U_LONG(buf);
1835 		objp->gid = IZDR_GET_U_LONG(buf);
1836 		objp->size = IZDR_GET_U_LONG(buf);
1837 		objp->blocksize = IZDR_GET_U_LONG(buf);
1838 		objp->rdev = IZDR_GET_U_LONG(buf);
1839 		objp->blocks = IZDR_GET_U_LONG(buf);
1840 		objp->fsid = IZDR_GET_U_LONG(buf);
1841 		objp->fileid = IZDR_GET_U_LONG(buf);
1842 		}
1843 		 if (!zdr_nfstime3 (zdrs, &objp->atime))
1844 			 return FALSE;
1845 		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1846 			 return FALSE;
1847 		 if (!zdr_nfstime3 (zdrs, &objp->ctime))
1848 			 return FALSE;
1849 	 return TRUE;
1850 	}
1851 
1852 	 if (!zdr_ftype2 (zdrs, &objp->type))
1853 		 return FALSE;
1854 	 if (!zdr_u_int (zdrs, &objp->mode))
1855 		 return FALSE;
1856 	 if (!zdr_u_int (zdrs, &objp->nlink))
1857 		 return FALSE;
1858 	 if (!zdr_u_int (zdrs, &objp->uid))
1859 		 return FALSE;
1860 	 if (!zdr_u_int (zdrs, &objp->gid))
1861 		 return FALSE;
1862 	 if (!zdr_u_int (zdrs, &objp->size))
1863 		 return FALSE;
1864 	 if (!zdr_u_int (zdrs, &objp->blocksize))
1865 		 return FALSE;
1866 	 if (!zdr_u_int (zdrs, &objp->rdev))
1867 		 return FALSE;
1868 	 if (!zdr_u_int (zdrs, &objp->blocks))
1869 		 return FALSE;
1870 	 if (!zdr_u_int (zdrs, &objp->fsid))
1871 		 return FALSE;
1872 	 if (!zdr_u_int (zdrs, &objp->fileid))
1873 		 return FALSE;
1874 	 if (!zdr_nfstime3 (zdrs, &objp->atime))
1875 		 return FALSE;
1876 	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1877 		 return FALSE;
1878 	 if (!zdr_nfstime3 (zdrs, &objp->ctime))
1879 		 return FALSE;
1880 	return TRUE;
1881 }
1882 
1883 uint32_t
zdr_sattr2(ZDR * zdrs,sattr2 * objp)1884 zdr_sattr2 (ZDR *zdrs, sattr2 *objp)
1885 {
1886 	register int32_t *buf;
1887 	buf = NULL;
1888 
1889 	if (zdrs->x_op == ZDR_ENCODE) {
1890 		buf = ZDR_INLINE (zdrs, 4 * BYTES_PER_ZDR_UNIT);
1891 		if (buf == NULL) {
1892 			 if (!zdr_u_int (zdrs, &objp->mode))
1893 				 return FALSE;
1894 			 if (!zdr_u_int (zdrs, &objp->uid))
1895 				 return FALSE;
1896 			 if (!zdr_u_int (zdrs, &objp->gid))
1897 				 return FALSE;
1898 			 if (!zdr_u_int (zdrs, &objp->size))
1899 				 return FALSE;
1900 
1901 		} else {
1902 		IZDR_PUT_U_LONG(buf, objp->mode);
1903 		IZDR_PUT_U_LONG(buf, objp->uid);
1904 		IZDR_PUT_U_LONG(buf, objp->gid);
1905 		IZDR_PUT_U_LONG(buf, objp->size);
1906 		}
1907 		 if (!zdr_nfstime3 (zdrs, &objp->atime))
1908 			 return FALSE;
1909 		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1910 			 return FALSE;
1911 		return TRUE;
1912 	} else if (zdrs->x_op == ZDR_DECODE) {
1913 		buf = ZDR_INLINE (zdrs, 4 * BYTES_PER_ZDR_UNIT);
1914 		if (buf == NULL) {
1915 			 if (!zdr_u_int (zdrs, &objp->mode))
1916 				 return FALSE;
1917 			 if (!zdr_u_int (zdrs, &objp->uid))
1918 				 return FALSE;
1919 			 if (!zdr_u_int (zdrs, &objp->gid))
1920 				 return FALSE;
1921 			 if (!zdr_u_int (zdrs, &objp->size))
1922 				 return FALSE;
1923 
1924 		} else {
1925 		objp->mode = IZDR_GET_U_LONG(buf);
1926 		objp->uid = IZDR_GET_U_LONG(buf);
1927 		objp->gid = IZDR_GET_U_LONG(buf);
1928 		objp->size = IZDR_GET_U_LONG(buf);
1929 		}
1930 		 if (!zdr_nfstime3 (zdrs, &objp->atime))
1931 			 return FALSE;
1932 		 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1933 			 return FALSE;
1934 	 return TRUE;
1935 	}
1936 
1937 	 if (!zdr_u_int (zdrs, &objp->mode))
1938 		 return FALSE;
1939 	 if (!zdr_u_int (zdrs, &objp->uid))
1940 		 return FALSE;
1941 	 if (!zdr_u_int (zdrs, &objp->gid))
1942 		 return FALSE;
1943 	 if (!zdr_u_int (zdrs, &objp->size))
1944 		 return FALSE;
1945 	 if (!zdr_nfstime3 (zdrs, &objp->atime))
1946 		 return FALSE;
1947 	 if (!zdr_nfstime3 (zdrs, &objp->mtime))
1948 		 return FALSE;
1949 	return TRUE;
1950 }
1951 
1952 uint32_t
zdr_filename2(ZDR * zdrs,filename2 * objp)1953 zdr_filename2 (ZDR *zdrs, filename2 *objp)
1954 {
1955 	 if (!zdr_string (zdrs, objp, MAXNAMLEN2))
1956 		 return FALSE;
1957 	return TRUE;
1958 }
1959 
1960 uint32_t
zdr_path2(ZDR * zdrs,path2 * objp)1961 zdr_path2 (ZDR *zdrs, path2 *objp)
1962 {
1963 	 if (!zdr_string (zdrs, objp, MAXPATHLEN2))
1964 		 return FALSE;
1965 	return TRUE;
1966 }
1967 
1968 uint32_t
zdr_nfsdata2(ZDR * zdrs,nfsdata2 * objp)1969 zdr_nfsdata2 (ZDR *zdrs, nfsdata2 *objp)
1970 {
1971 	 if (!zdr_bytes (zdrs, (char **)&objp->nfsdata2_val, (u_int *) &objp->nfsdata2_len, NFSMAXDATA2))
1972 		 return FALSE;
1973 	return TRUE;
1974 }
1975 
1976 uint32_t
zdr_nfscookie2(ZDR * zdrs,nfscookie2 objp)1977 zdr_nfscookie2 (ZDR *zdrs, nfscookie2 objp)
1978 {
1979 	 if (!zdr_opaque (zdrs, objp, NFSCOOKIESIZE2))
1980 		 return FALSE;
1981 	return TRUE;
1982 }
1983 
1984 uint32_t
zdr_entry2(ZDR * zdrs,entry2 * objp)1985 zdr_entry2 (ZDR *zdrs, entry2 *objp)
1986 {
1987 	 if (!zdr_u_int (zdrs, &objp->fileid))
1988 		 return FALSE;
1989 	 if (!zdr_filename2 (zdrs, &objp->name))
1990 		 return FALSE;
1991 	 if (!zdr_nfscookie2 (zdrs, objp->cookie))
1992 		 return FALSE;
1993 	 if (!zdr_pointer (zdrs, (char **)&objp->nextentry, sizeof (entry2), (zdrproc_t) zdr_entry2))
1994 		 return FALSE;
1995 	return TRUE;
1996 }
1997 
1998 uint32_t
zdr_diropargs2(ZDR * zdrs,diropargs2 * objp)1999 zdr_diropargs2 (ZDR *zdrs, diropargs2 *objp)
2000 {
2001 	 if (!zdr_fhandle2 (zdrs, objp->dir))
2002 		 return FALSE;
2003 	 if (!zdr_filename2 (zdrs, &objp->name))
2004 		 return FALSE;
2005 	return TRUE;
2006 }
2007 
2008 uint32_t
zdr_GETATTR2args(ZDR * zdrs,GETATTR2args * objp)2009 zdr_GETATTR2args (ZDR *zdrs, GETATTR2args *objp)
2010 {
2011 	 if (!zdr_fhandle2 (zdrs, objp->fhandle))
2012 		 return FALSE;
2013 	return TRUE;
2014 }
2015 
2016 uint32_t
zdr_GETATTR2resok(ZDR * zdrs,GETATTR2resok * objp)2017 zdr_GETATTR2resok (ZDR *zdrs, GETATTR2resok *objp)
2018 {
2019 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2020 		 return FALSE;
2021 	return TRUE;
2022 }
2023 
2024 uint32_t
zdr_GETATTR2res(ZDR * zdrs,GETATTR2res * objp)2025 zdr_GETATTR2res (ZDR *zdrs, GETATTR2res *objp)
2026 {
2027 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2028 		 return FALSE;
2029 	switch (objp->status) {
2030 	case NFS3_OK:
2031 		 if (!zdr_GETATTR2resok (zdrs, &objp->GETATTR2res_u.resok))
2032 			 return FALSE;
2033 		break;
2034 	default:
2035 		break;
2036 	}
2037 	return TRUE;
2038 }
2039 
2040 uint32_t
zdr_SETATTR2args(ZDR * zdrs,SETATTR2args * objp)2041 zdr_SETATTR2args (ZDR *zdrs, SETATTR2args *objp)
2042 {
2043 	 if (!zdr_fhandle2 (zdrs, objp->fhandle))
2044 		 return FALSE;
2045 	 if (!zdr_sattr2 (zdrs, &objp->attributes))
2046 		 return FALSE;
2047 	return TRUE;
2048 }
2049 
2050 uint32_t
zdr_SETATTR2resok(ZDR * zdrs,SETATTR2resok * objp)2051 zdr_SETATTR2resok (ZDR *zdrs, SETATTR2resok *objp)
2052 {
2053 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2054 		 return FALSE;
2055 	return TRUE;
2056 }
2057 
2058 uint32_t
zdr_SETATTR2res(ZDR * zdrs,SETATTR2res * objp)2059 zdr_SETATTR2res (ZDR *zdrs, SETATTR2res *objp)
2060 {
2061 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2062 		 return FALSE;
2063 	switch (objp->status) {
2064 	case NFS3_OK:
2065 		 if (!zdr_SETATTR2resok (zdrs, &objp->SETATTR2res_u.resok))
2066 			 return FALSE;
2067 		break;
2068 	default:
2069 		break;
2070 	}
2071 	return TRUE;
2072 }
2073 
2074 uint32_t
zdr_LOOKUP2args(ZDR * zdrs,LOOKUP2args * objp)2075 zdr_LOOKUP2args (ZDR *zdrs, LOOKUP2args *objp)
2076 {
2077 	 if (!zdr_diropargs2 (zdrs, &objp->what))
2078 		 return FALSE;
2079 	return TRUE;
2080 }
2081 
2082 uint32_t
zdr_LOOKUP2resok(ZDR * zdrs,LOOKUP2resok * objp)2083 zdr_LOOKUP2resok (ZDR *zdrs, LOOKUP2resok *objp)
2084 {
2085 	 if (!zdr_fhandle2 (zdrs, objp->file))
2086 		 return FALSE;
2087 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2088 		 return FALSE;
2089 	return TRUE;
2090 }
2091 
2092 uint32_t
zdr_LOOKUP2res(ZDR * zdrs,LOOKUP2res * objp)2093 zdr_LOOKUP2res (ZDR *zdrs, LOOKUP2res *objp)
2094 {
2095 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2096 		 return FALSE;
2097 	switch (objp->status) {
2098 	case NFS3_OK:
2099 		 if (!zdr_LOOKUP2resok (zdrs, &objp->LOOKUP2res_u.resok))
2100 			 return FALSE;
2101 		break;
2102 	default:
2103 		break;
2104 	}
2105 	return TRUE;
2106 }
2107 
2108 uint32_t
zdr_READLINK2args(ZDR * zdrs,READLINK2args * objp)2109 zdr_READLINK2args (ZDR *zdrs, READLINK2args *objp)
2110 {
2111 	 if (!zdr_fhandle2 (zdrs, objp->file))
2112 		 return FALSE;
2113 	return TRUE;
2114 }
2115 
2116 uint32_t
zdr_READLINK2resok(ZDR * zdrs,READLINK2resok * objp)2117 zdr_READLINK2resok (ZDR *zdrs, READLINK2resok *objp)
2118 {
2119 	 if (!zdr_path2 (zdrs, &objp->data))
2120 		 return FALSE;
2121 	return TRUE;
2122 }
2123 
2124 uint32_t
zdr_READLINK2res(ZDR * zdrs,READLINK2res * objp)2125 zdr_READLINK2res (ZDR *zdrs, READLINK2res *objp)
2126 {
2127 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2128 		 return FALSE;
2129 	switch (objp->status) {
2130 	case NFS3_OK:
2131 		 if (!zdr_READLINK2resok (zdrs, &objp->READLINK2res_u.resok))
2132 			 return FALSE;
2133 		break;
2134 	default:
2135 		break;
2136 	}
2137 	return TRUE;
2138 }
2139 
2140 uint32_t
zdr_READ2args(ZDR * zdrs,READ2args * objp)2141 zdr_READ2args (ZDR *zdrs, READ2args *objp)
2142 {
2143 	 if (!zdr_fhandle2 (zdrs, objp->file))
2144 		 return FALSE;
2145 	 if (!zdr_u_int (zdrs, &objp->offset))
2146 		 return FALSE;
2147 	 if (!zdr_u_int (zdrs, &objp->count))
2148 		 return FALSE;
2149 	 if (!zdr_u_int (zdrs, &objp->totalcount))
2150 		 return FALSE;
2151 	return TRUE;
2152 }
2153 
2154 uint32_t
zdr_READ2resok(ZDR * zdrs,READ2resok * objp)2155 zdr_READ2resok (ZDR *zdrs, READ2resok *objp)
2156 {
2157 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2158 		 return FALSE;
2159 	 if (!zdr_nfsdata2 (zdrs, &objp->data))
2160 		 return FALSE;
2161 	return TRUE;
2162 }
2163 
2164 uint32_t
zdr_READ2res(ZDR * zdrs,READ2res * objp)2165 zdr_READ2res (ZDR *zdrs, READ2res *objp)
2166 {
2167 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2168 		 return FALSE;
2169 	switch (objp->status) {
2170 	case NFS3_OK:
2171 		 if (!zdr_READ2resok (zdrs, &objp->READ2res_u.resok))
2172 			 return FALSE;
2173 		break;
2174 	default:
2175 		break;
2176 	}
2177 	return TRUE;
2178 }
2179 
2180 uint32_t
zdr_WRITE2args(ZDR * zdrs,WRITE2args * objp)2181 zdr_WRITE2args (ZDR *zdrs, WRITE2args *objp)
2182 {
2183 	register int32_t *buf;
2184 	buf = NULL;
2185 
2186 	if (zdrs->x_op == ZDR_ENCODE) {
2187 		 if (!zdr_fhandle2 (zdrs, objp->file))
2188 			 return FALSE;
2189 		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
2190 		if (buf == NULL) {
2191 			 if (!zdr_u_int (zdrs, &objp->beginoffset))
2192 				 return FALSE;
2193 			 if (!zdr_u_int (zdrs, &objp->offset))
2194 				 return FALSE;
2195 			 if (!zdr_u_int (zdrs, &objp->totalcount))
2196 				 return FALSE;
2197 
2198 		} else {
2199 		IZDR_PUT_U_LONG(buf, objp->beginoffset);
2200 		IZDR_PUT_U_LONG(buf, objp->offset);
2201 		IZDR_PUT_U_LONG(buf, objp->totalcount);
2202 		}
2203 		 if (!zdr_nfsdata2 (zdrs, &objp->data))
2204 			 return FALSE;
2205 		return TRUE;
2206 	} else if (zdrs->x_op == ZDR_DECODE) {
2207 		 if (!zdr_fhandle2 (zdrs, objp->file))
2208 			 return FALSE;
2209 		buf = ZDR_INLINE (zdrs, 3 * BYTES_PER_ZDR_UNIT);
2210 		if (buf == NULL) {
2211 			 if (!zdr_u_int (zdrs, &objp->beginoffset))
2212 				 return FALSE;
2213 			 if (!zdr_u_int (zdrs, &objp->offset))
2214 				 return FALSE;
2215 			 if (!zdr_u_int (zdrs, &objp->totalcount))
2216 				 return FALSE;
2217 
2218 		} else {
2219 		objp->beginoffset = IZDR_GET_U_LONG(buf);
2220 		objp->offset = IZDR_GET_U_LONG(buf);
2221 		objp->totalcount = IZDR_GET_U_LONG(buf);
2222 		}
2223 		 if (!zdr_nfsdata2 (zdrs, &objp->data))
2224 			 return FALSE;
2225 	 return TRUE;
2226 	}
2227 
2228 	 if (!zdr_fhandle2 (zdrs, objp->file))
2229 		 return FALSE;
2230 	 if (!zdr_u_int (zdrs, &objp->beginoffset))
2231 		 return FALSE;
2232 	 if (!zdr_u_int (zdrs, &objp->offset))
2233 		 return FALSE;
2234 	 if (!zdr_u_int (zdrs, &objp->totalcount))
2235 		 return FALSE;
2236 	 if (!zdr_nfsdata2 (zdrs, &objp->data))
2237 		 return FALSE;
2238 	return TRUE;
2239 }
2240 
2241 uint32_t
zdr_WRITE2resok(ZDR * zdrs,WRITE2resok * objp)2242 zdr_WRITE2resok (ZDR *zdrs, WRITE2resok *objp)
2243 {
2244 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2245 		 return FALSE;
2246 	return TRUE;
2247 }
2248 
2249 uint32_t
zdr_WRITE2res(ZDR * zdrs,WRITE2res * objp)2250 zdr_WRITE2res (ZDR *zdrs, WRITE2res *objp)
2251 {
2252 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2253 		 return FALSE;
2254 	switch (objp->status) {
2255 	case NFS3_OK:
2256 		 if (!zdr_WRITE2resok (zdrs, &objp->WRITE2res_u.resok))
2257 			 return FALSE;
2258 		break;
2259 	default:
2260 		break;
2261 	}
2262 	return TRUE;
2263 }
2264 
2265 uint32_t
zdr_CREATE2args(ZDR * zdrs,CREATE2args * objp)2266 zdr_CREATE2args (ZDR *zdrs, CREATE2args *objp)
2267 {
2268 	 if (!zdr_diropargs2 (zdrs, &objp->where))
2269 		 return FALSE;
2270 	 if (!zdr_sattr2 (zdrs, &objp->attributes))
2271 		 return FALSE;
2272 	return TRUE;
2273 }
2274 
2275 uint32_t
zdr_CREATE2resok(ZDR * zdrs,CREATE2resok * objp)2276 zdr_CREATE2resok (ZDR *zdrs, CREATE2resok *objp)
2277 {
2278 	 if (!zdr_fhandle2 (zdrs, objp->file))
2279 		 return FALSE;
2280 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2281 		 return FALSE;
2282 	return TRUE;
2283 }
2284 
2285 uint32_t
zdr_CREATE2res(ZDR * zdrs,CREATE2res * objp)2286 zdr_CREATE2res (ZDR *zdrs, CREATE2res *objp)
2287 {
2288 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2289 		 return FALSE;
2290 	switch (objp->status) {
2291 	case NFS3_OK:
2292 		 if (!zdr_CREATE2resok (zdrs, &objp->CREATE2res_u.resok))
2293 			 return FALSE;
2294 		break;
2295 	default:
2296 		break;
2297 	}
2298 	return TRUE;
2299 }
2300 
2301 uint32_t
zdr_REMOVE2args(ZDR * zdrs,REMOVE2args * objp)2302 zdr_REMOVE2args (ZDR *zdrs, REMOVE2args *objp)
2303 {
2304 	 if (!zdr_diropargs2 (zdrs, &objp->what))
2305 		 return FALSE;
2306 	return TRUE;
2307 }
2308 
2309 uint32_t
zdr_REMOVE2res(ZDR * zdrs,REMOVE2res * objp)2310 zdr_REMOVE2res (ZDR *zdrs, REMOVE2res *objp)
2311 {
2312 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2313 		 return FALSE;
2314 	return TRUE;
2315 }
2316 
2317 uint32_t
zdr_RENAME2args(ZDR * zdrs,RENAME2args * objp)2318 zdr_RENAME2args (ZDR *zdrs, RENAME2args *objp)
2319 {
2320 	 if (!zdr_diropargs2 (zdrs, &objp->from))
2321 		 return FALSE;
2322 	 if (!zdr_diropargs2 (zdrs, &objp->to))
2323 		 return FALSE;
2324 	return TRUE;
2325 }
2326 
2327 uint32_t
zdr_RENAME2res(ZDR * zdrs,RENAME2res * objp)2328 zdr_RENAME2res (ZDR *zdrs, RENAME2res *objp)
2329 {
2330 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2331 		 return FALSE;
2332 	return TRUE;
2333 }
2334 
2335 uint32_t
zdr_LINK2args(ZDR * zdrs,LINK2args * objp)2336 zdr_LINK2args (ZDR *zdrs, LINK2args *objp)
2337 {
2338 	 if (!zdr_fhandle2 (zdrs, objp->from))
2339 		 return FALSE;
2340 	 if (!zdr_diropargs2 (zdrs, &objp->to))
2341 		 return FALSE;
2342 	return TRUE;
2343 }
2344 
2345 uint32_t
zdr_LINK2res(ZDR * zdrs,LINK2res * objp)2346 zdr_LINK2res (ZDR *zdrs, LINK2res *objp)
2347 {
2348 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2349 		 return FALSE;
2350 	return TRUE;
2351 }
2352 
2353 uint32_t
zdr_SYMLINK2args(ZDR * zdrs,SYMLINK2args * objp)2354 zdr_SYMLINK2args (ZDR *zdrs, SYMLINK2args *objp)
2355 {
2356 	 if (!zdr_diropargs2 (zdrs, &objp->from))
2357 		 return FALSE;
2358 	 if (!zdr_path2 (zdrs, &objp->to))
2359 		 return FALSE;
2360 	 if (!zdr_sattr2 (zdrs, &objp->attributes))
2361 		 return FALSE;
2362 	return TRUE;
2363 }
2364 
2365 uint32_t
zdr_SYMLINK2res(ZDR * zdrs,SYMLINK2res * objp)2366 zdr_SYMLINK2res (ZDR *zdrs, SYMLINK2res *objp)
2367 {
2368 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2369 		 return FALSE;
2370 	return TRUE;
2371 }
2372 
2373 uint32_t
zdr_MKDIR2args(ZDR * zdrs,MKDIR2args * objp)2374 zdr_MKDIR2args (ZDR *zdrs, MKDIR2args *objp)
2375 {
2376 	 if (!zdr_diropargs2 (zdrs, &objp->where))
2377 		 return FALSE;
2378 	 if (!zdr_sattr2 (zdrs, &objp->attributes))
2379 		 return FALSE;
2380 	return TRUE;
2381 }
2382 
2383 uint32_t
zdr_MKDIR2resok(ZDR * zdrs,MKDIR2resok * objp)2384 zdr_MKDIR2resok (ZDR *zdrs, MKDIR2resok *objp)
2385 {
2386 	 if (!zdr_fhandle2 (zdrs, objp->file))
2387 		 return FALSE;
2388 	 if (!zdr_fattr2 (zdrs, &objp->attributes))
2389 		 return FALSE;
2390 	return TRUE;
2391 }
2392 
2393 uint32_t
zdr_MKDIR2res(ZDR * zdrs,MKDIR2res * objp)2394 zdr_MKDIR2res (ZDR *zdrs, MKDIR2res *objp)
2395 {
2396 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2397 		 return FALSE;
2398 	switch (objp->status) {
2399 	case NFS3_OK:
2400 		 if (!zdr_MKDIR2resok (zdrs, &objp->MKDIR2res_u.resok))
2401 			 return FALSE;
2402 		break;
2403 	default:
2404 		break;
2405 	}
2406 	return TRUE;
2407 }
2408 
2409 uint32_t
zdr_RMDIR2args(ZDR * zdrs,RMDIR2args * objp)2410 zdr_RMDIR2args (ZDR *zdrs, RMDIR2args *objp)
2411 {
2412 	 if (!zdr_diropargs2 (zdrs, &objp->what))
2413 		 return FALSE;
2414 	return TRUE;
2415 }
2416 
2417 uint32_t
zdr_RMDIR2res(ZDR * zdrs,RMDIR2res * objp)2418 zdr_RMDIR2res (ZDR *zdrs, RMDIR2res *objp)
2419 {
2420 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2421 		 return FALSE;
2422 	return TRUE;
2423 }
2424 
2425 uint32_t
zdr_READDIR2args(ZDR * zdrs,READDIR2args * objp)2426 zdr_READDIR2args (ZDR *zdrs, READDIR2args *objp)
2427 {
2428 	 if (!zdr_fhandle2 (zdrs, objp->dir))
2429 		 return FALSE;
2430 	 if (!zdr_nfscookie2 (zdrs, objp->cookie))
2431 		 return FALSE;
2432 	 if (!zdr_u_int (zdrs, &objp->count))
2433 		 return FALSE;
2434 	return TRUE;
2435 }
2436 
2437 uint32_t
zdr_READDIR2resok(ZDR * zdrs,READDIR2resok * objp)2438 zdr_READDIR2resok (ZDR *zdrs, READDIR2resok *objp)
2439 {
2440 	 if (!zdr_pointer (zdrs, (char **)&objp->entries, sizeof (entry2), (zdrproc_t) zdr_entry2))
2441 		 return FALSE;
2442 	 if (!zdr_bool (zdrs, &objp->eof))
2443 		 return FALSE;
2444 	return TRUE;
2445 }
2446 
2447 uint32_t
zdr_READDIR2res(ZDR * zdrs,READDIR2res * objp)2448 zdr_READDIR2res (ZDR *zdrs, READDIR2res *objp)
2449 {
2450 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2451 		 return FALSE;
2452 	switch (objp->status) {
2453 	case NFS3_OK:
2454 		 if (!zdr_READDIR2resok (zdrs, &objp->READDIR2res_u.resok))
2455 			 return FALSE;
2456 		break;
2457 	default:
2458 		break;
2459 	}
2460 	return TRUE;
2461 }
2462 
2463 uint32_t
zdr_STATFS2args(ZDR * zdrs,STATFS2args * objp)2464 zdr_STATFS2args (ZDR *zdrs, STATFS2args *objp)
2465 {
2466 	 if (!zdr_fhandle2 (zdrs, objp->dir))
2467 		 return FALSE;
2468 	return TRUE;
2469 }
2470 
2471 uint32_t
zdr_STATFS2resok(ZDR * zdrs,STATFS2resok * objp)2472 zdr_STATFS2resok (ZDR *zdrs, STATFS2resok *objp)
2473 {
2474 	register int32_t *buf;
2475 	buf = NULL;
2476 
2477 	if (zdrs->x_op == ZDR_ENCODE) {
2478 		buf = ZDR_INLINE (zdrs, 5 * BYTES_PER_ZDR_UNIT);
2479 		if (buf == NULL) {
2480 			 if (!zdr_u_int (zdrs, &objp->tsize))
2481 				 return FALSE;
2482 			 if (!zdr_u_int (zdrs, &objp->bsize))
2483 				 return FALSE;
2484 			 if (!zdr_u_int (zdrs, &objp->blocks))
2485 				 return FALSE;
2486 			 if (!zdr_u_int (zdrs, &objp->bfree))
2487 				 return FALSE;
2488 			 if (!zdr_u_int (zdrs, &objp->bavail))
2489 				 return FALSE;
2490 		} else {
2491 			IZDR_PUT_U_LONG(buf, objp->tsize);
2492 			IZDR_PUT_U_LONG(buf, objp->bsize);
2493 			IZDR_PUT_U_LONG(buf, objp->blocks);
2494 			IZDR_PUT_U_LONG(buf, objp->bfree);
2495 			IZDR_PUT_U_LONG(buf, objp->bavail);
2496 		}
2497 		return TRUE;
2498 	} else if (zdrs->x_op == ZDR_DECODE) {
2499 		buf = ZDR_INLINE (zdrs, 5 * BYTES_PER_ZDR_UNIT);
2500 		if (buf == NULL) {
2501 			 if (!zdr_u_int (zdrs, &objp->tsize))
2502 				 return FALSE;
2503 			 if (!zdr_u_int (zdrs, &objp->bsize))
2504 				 return FALSE;
2505 			 if (!zdr_u_int (zdrs, &objp->blocks))
2506 				 return FALSE;
2507 			 if (!zdr_u_int (zdrs, &objp->bfree))
2508 				 return FALSE;
2509 			 if (!zdr_u_int (zdrs, &objp->bavail))
2510 				 return FALSE;
2511 		} else {
2512 			objp->tsize = IZDR_GET_U_LONG(buf);
2513 			objp->bsize = IZDR_GET_U_LONG(buf);
2514 			objp->blocks = IZDR_GET_U_LONG(buf);
2515 			objp->bfree = IZDR_GET_U_LONG(buf);
2516 			objp->bavail = IZDR_GET_U_LONG(buf);
2517 		}
2518 	 return TRUE;
2519 	}
2520 
2521 	 if (!zdr_u_int (zdrs, &objp->tsize))
2522 		 return FALSE;
2523 	 if (!zdr_u_int (zdrs, &objp->bsize))
2524 		 return FALSE;
2525 	 if (!zdr_u_int (zdrs, &objp->blocks))
2526 		 return FALSE;
2527 	 if (!zdr_u_int (zdrs, &objp->bfree))
2528 		 return FALSE;
2529 	 if (!zdr_u_int (zdrs, &objp->bavail))
2530 		 return FALSE;
2531 	return TRUE;
2532 }
2533 
2534 uint32_t
zdr_STATFS2res(ZDR * zdrs,STATFS2res * objp)2535 zdr_STATFS2res (ZDR *zdrs, STATFS2res *objp)
2536 {
2537 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2538 		 return FALSE;
2539 	switch (objp->status) {
2540 	case NFS3_OK:
2541 		 if (!zdr_STATFS2resok (zdrs, &objp->STATFS2res_u.resok))
2542 			 return FALSE;
2543 		break;
2544 	default:
2545 		break;
2546 	}
2547 	return TRUE;
2548 }
2549 
2550 uint32_t
zdr_nfsacl_type(ZDR * zdrs,nfsacl_type * objp)2551 zdr_nfsacl_type (ZDR *zdrs, nfsacl_type *objp)
2552 {
2553 	 if (!zdr_enum (zdrs, (enum_t *) objp))
2554 		 return FALSE;
2555 	return TRUE;
2556 }
2557 
2558 uint32_t
zdr_nfsacl_ace(ZDR * zdrs,nfsacl_ace * objp)2559 zdr_nfsacl_ace (ZDR *zdrs, nfsacl_ace *objp)
2560 {
2561 	 if (!zdr_nfsacl_type (zdrs, &objp->type))
2562 		 return FALSE;
2563 	 if (!zdr_u_int (zdrs, &objp->id))
2564 		 return FALSE;
2565 	 if (!zdr_u_int (zdrs, &objp->perm))
2566 		 return FALSE;
2567 	return TRUE;
2568 }
2569 
2570 uint32_t
zdr_GETACL3args(ZDR * zdrs,GETACL3args * objp)2571 zdr_GETACL3args (ZDR *zdrs, GETACL3args *objp)
2572 {
2573 	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
2574 		 return FALSE;
2575 	 if (!zdr_u_int (zdrs, &objp->mask))
2576 		 return FALSE;
2577 	return TRUE;
2578 }
2579 
2580 uint32_t
zdr_GETACL3resok(ZDR * zdrs,GETACL3resok * objp)2581 zdr_GETACL3resok (ZDR *zdrs, GETACL3resok *objp)
2582 {
2583 	 if (!zdr_post_op_attr (zdrs, &objp->attr))
2584 		 return FALSE;
2585 	 if (!zdr_u_int (zdrs, &objp->mask))
2586 		 return FALSE;
2587 	 if (!zdr_u_int (zdrs, &objp->ace_count))
2588 		 return FALSE;
2589 	 if (!zdr_array (zdrs, (char **)&objp->ace.ace_val, (u_int *) &objp->ace.ace_len, ~0,
2590 		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
2591 		 return FALSE;
2592 	 if (!zdr_u_int (zdrs, &objp->default_ace_count))
2593 		 return FALSE;
2594 	 if (!zdr_array (zdrs, (char **)&objp->default_ace.default_ace_val, (u_int *) &objp->default_ace.default_ace_len, ~0,
2595 		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
2596 		 return FALSE;
2597 	return TRUE;
2598 }
2599 
2600 uint32_t
zdr_GETACL3res(ZDR * zdrs,GETACL3res * objp)2601 zdr_GETACL3res (ZDR *zdrs, GETACL3res *objp)
2602 {
2603 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2604 		 return FALSE;
2605 	switch (objp->status) {
2606 	case NFS3_OK:
2607 		 if (!zdr_GETACL3resok (zdrs, &objp->GETACL3res_u.resok))
2608 			 return FALSE;
2609 		break;
2610 	default:
2611 		break;
2612 	}
2613 	return TRUE;
2614 }
2615 
2616 uint32_t
zdr_SETACL3args(ZDR * zdrs,SETACL3args * objp)2617 zdr_SETACL3args (ZDR *zdrs, SETACL3args *objp)
2618 {
2619 	 if (!zdr_nfs_fh3 (zdrs, &objp->dir))
2620 		 return FALSE;
2621 	 if (!zdr_u_int (zdrs, &objp->mask))
2622 		 return FALSE;
2623 	 if (!zdr_u_int (zdrs, &objp->ace_count))
2624 		 return FALSE;
2625 	 if (!zdr_array (zdrs, (char **)&objp->ace.ace_val, (u_int *) &objp->ace.ace_len, ~0,
2626 		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
2627 		 return FALSE;
2628 	 if (!zdr_u_int (zdrs, &objp->default_ace_count))
2629 		 return FALSE;
2630 	 if (!zdr_array (zdrs, (char **)&objp->default_ace.default_ace_val, (u_int *) &objp->default_ace.default_ace_len, ~0,
2631 		sizeof (nfsacl_ace), (zdrproc_t) zdr_nfsacl_ace))
2632 		 return FALSE;
2633 	return TRUE;
2634 }
2635 
2636 uint32_t
zdr_SETACL3resok(ZDR * zdrs,SETACL3resok * objp)2637 zdr_SETACL3resok (ZDR *zdrs, SETACL3resok *objp)
2638 {
2639 	 if (!zdr_post_op_attr (zdrs, &objp->attr))
2640 		 return FALSE;
2641 	return TRUE;
2642 }
2643 
2644 uint32_t
zdr_SETACL3res(ZDR * zdrs,SETACL3res * objp)2645 zdr_SETACL3res (ZDR *zdrs, SETACL3res *objp)
2646 {
2647 	 if (!zdr_nfsstat3 (zdrs, &objp->status))
2648 		 return FALSE;
2649 	switch (objp->status) {
2650 	case NFS3_OK:
2651 		 if (!zdr_SETACL3resok (zdrs, &objp->SETACL3res_u.resok))
2652 			 return FALSE;
2653 		break;
2654 	default:
2655 		break;
2656 	}
2657 	return TRUE;
2658 }
2659