1 /*
2  * Please do not edit this file.
3  * It was generated using rpcgen.
4  */
5 
6 #include "../../../uts/common/rpcsvc/idmap_prot.h"
7 
8 #ifndef _KERNEL
9 #include <stdlib.h>
10 #endif /* !_KERNEL */
11 
12 #if	defined(_KERNEL)
13 #include <sys/nvpair.h>
14 #else
15 #include <libnvpair.h>
16 #endif
17 #if	!defined(_KERNEL)
18 #include <string.h>
19 #include <stdio.h>
20 #endif
21 
22 bool_t
23 xdr_nvlist_t_ptr(XDR *xdrs, nvlist_t_ptr *n)
24 {
25 	char *buf;
26 	u_int len;
27 	bool_t ret;
28 	int err;
29 	size_t	sz;
30 	bool_t	present;
31 
32 	switch (xdrs->x_op) {
33 	case XDR_DECODE:
34 		if (!xdr_bool(xdrs, &present))
35 			return (FALSE);
36 		if (!present) {
37 			*n = NULL;
38 			return (TRUE);
39 		}
40 		buf = NULL;
41 		if (!xdr_bytes(xdrs, &buf, &len, ~0))
42 			return (FALSE);
43 
44 		err = nvlist_unpack(buf, (size_t)len, n, 0);
45 #if	defined(_KERNEL)
46 		kmem_free(buf, len);
47 #else
48 		free(buf);
49 #endif
50 
51 		if (err != 0) {
52 #if	!defined(_KERNEL)
53 			fprintf(stderr, "xdr_nvlist_t unpack:  %s\n",
54 			    strerror(err));
55 #endif
56 			return (FALSE);
57 		}
58 		return (TRUE);
59 
60 	case XDR_ENCODE:
61 		present = (*n != NULL);
62 		if (!xdr_bool(xdrs, &present))
63 			return (FALSE);
64 		if (!present)
65 			return (TRUE);
66 		buf = NULL;
67 		err = nvlist_pack(*n, &buf, &sz, NV_ENCODE_XDR, 0);
68 		if (err != 0) {
69 #if	!defined(_KERNEL)
70 			fprintf(stderr, "xdr_nvlist_t pack:  %s\n",
71 			    strerror(err));
72 #endif
73 			return (FALSE);
74 		}
75 
76 		/* nvlist_pack() and xdr_bytes() want different types */
77 		len = (u_int) sz;
78 
79 		ret = xdr_bytes(xdrs, &buf, &len, ~0);
80 #if	defined(_KERNEL)
81 		kmem_free(buf, len);
82 #else
83 		free(buf);
84 #endif
85 
86 		return (ret);
87 
88 	case XDR_FREE:
89 		if (*n != NULL) {
90 			nvlist_free(*n);
91 			*n = NULL;
92 		}
93 		return (TRUE);
94 
95 	default:
96 		return (FALSE);
97 	}
98 }
99 
100 bool_t
101 xdr_idmap_utf8str(XDR *xdrs, idmap_utf8str *objp)
102 {
103 
104 	rpc_inline_t *buf;
105 
106 	if (!xdr_string(xdrs, objp, ~0))
107 		return (FALSE);
108 	return (TRUE);
109 }
110 
111 bool_t
112 xdr_idmap_utf8str_list(XDR *xdrs, idmap_utf8str_list *objp)
113 {
114 
115 	rpc_inline_t *buf;
116 
117 	if (!xdr_array(xdrs, (char **)&objp->idmap_utf8str_list_val, (u_int *) &objp->idmap_utf8str_list_len, ~0,
118 		sizeof (idmap_utf8str), (xdrproc_t)xdr_idmap_utf8str))
119 		return (FALSE);
120 	return (TRUE);
121 }
122 
123 bool_t
124 xdr_idmap_retcode(XDR *xdrs, idmap_retcode *objp)
125 {
126 
127 	rpc_inline_t *buf;
128 
129 	if (!xdr_int(xdrs, objp))
130 		return (FALSE);
131 	return (TRUE);
132 }
133 
134 bool_t
135 xdr_idmap_id_type(XDR *xdrs, idmap_id_type *objp)
136 {
137 
138 	rpc_inline_t *buf;
139 
140 	if (!xdr_enum(xdrs, (enum_t *)objp))
141 		return (FALSE);
142 	return (TRUE);
143 }
144 
145 bool_t
146 xdr_idmap_map_type(XDR *xdrs, idmap_map_type *objp)
147 {
148 
149 	rpc_inline_t *buf;
150 
151 	if (!xdr_enum(xdrs, (enum_t *)objp))
152 		return (FALSE);
153 	return (TRUE);
154 }
155 
156 bool_t
157 xdr_idmap_map_src(XDR *xdrs, idmap_map_src *objp)
158 {
159 
160 	rpc_inline_t *buf;
161 
162 	if (!xdr_enum(xdrs, (enum_t *)objp))
163 		return (FALSE);
164 	return (TRUE);
165 }
166 
167 bool_t
168 xdr_idmap_sid(XDR *xdrs, idmap_sid *objp)
169 {
170 
171 	rpc_inline_t *buf;
172 
173 	if (!xdr_string(xdrs, &objp->prefix, ~0))
174 		return (FALSE);
175 	if (!xdr_uint32_t(xdrs, &objp->rid))
176 		return (FALSE);
177 	return (TRUE);
178 }
179 
180 bool_t
181 xdr_idmap_id(XDR *xdrs, idmap_id *objp)
182 {
183 
184 	rpc_inline_t *buf;
185 
186 	if (!xdr_idmap_id_type(xdrs, &objp->idtype))
187 		return (FALSE);
188 	switch (objp->idtype) {
189 	case IDMAP_UID:
190 		if (!xdr_uint32_t(xdrs, &objp->idmap_id_u.uid))
191 			return (FALSE);
192 		break;
193 	case IDMAP_GID:
194 		if (!xdr_uint32_t(xdrs, &objp->idmap_id_u.gid))
195 			return (FALSE);
196 		break;
197 	case IDMAP_SID:
198 		if (!xdr_idmap_sid(xdrs, &objp->idmap_id_u.sid))
199 			return (FALSE);
200 		break;
201 	case IDMAP_USID:
202 		if (!xdr_idmap_sid(xdrs, &objp->idmap_id_u.usid))
203 			return (FALSE);
204 		break;
205 	case IDMAP_GSID:
206 		if (!xdr_idmap_sid(xdrs, &objp->idmap_id_u.gsid))
207 			return (FALSE);
208 		break;
209 	case IDMAP_NONE:
210 		break;
211 	case IDMAP_POSIXID:
212 		break;
213 	default:
214 		return (FALSE);
215 	}
216 	return (TRUE);
217 }
218 
219 bool_t
220 xdr_idmap_namerule(XDR *xdrs, idmap_namerule *objp)
221 {
222 
223 	rpc_inline_t *buf;
224 
225 	if (!xdr_bool(xdrs, &objp->is_user))
226 		return (FALSE);
227 	if (!xdr_bool(xdrs, &objp->is_wuser))
228 		return (FALSE);
229 	if (!xdr_int(xdrs, &objp->direction))
230 		return (FALSE);
231 	if (!xdr_idmap_utf8str(xdrs, &objp->windomain))
232 		return (FALSE);
233 	if (!xdr_idmap_utf8str(xdrs, &objp->winname))
234 		return (FALSE);
235 	if (!xdr_idmap_utf8str(xdrs, &objp->unixname))
236 		return (FALSE);
237 	if (!xdr_bool(xdrs, &objp->is_nt4))
238 		return (FALSE);
239 	return (TRUE);
240 }
241 
242 bool_t
243 xdr_idmap_namerules_res(XDR *xdrs, idmap_namerules_res *objp)
244 {
245 
246 	rpc_inline_t *buf;
247 
248 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
249 		return (FALSE);
250 	if (!xdr_uint64_t(xdrs, &objp->lastrowid))
251 		return (FALSE);
252 	if (!xdr_array(xdrs, (char **)&objp->rules.rules_val, (u_int *) &objp->rules.rules_len, ~0,
253 		sizeof (idmap_namerule), (xdrproc_t)xdr_idmap_namerule))
254 		return (FALSE);
255 	return (TRUE);
256 }
257 
258 bool_t
259 xdr_idmap_how_ds_based(XDR *xdrs, idmap_how_ds_based *objp)
260 {
261 
262 	rpc_inline_t *buf;
263 
264 	if (!xdr_idmap_utf8str(xdrs, &objp->dn))
265 		return (FALSE);
266 	if (!xdr_idmap_utf8str(xdrs, &objp->attr))
267 		return (FALSE);
268 	if (!xdr_idmap_utf8str(xdrs, &objp->value))
269 		return (FALSE);
270 	return (TRUE);
271 }
272 
273 bool_t
274 xdr_idmap_how(XDR *xdrs, idmap_how *objp)
275 {
276 
277 	rpc_inline_t *buf;
278 
279 	if (!xdr_idmap_map_type(xdrs, &objp->map_type))
280 		return (FALSE);
281 	switch (objp->map_type) {
282 	case IDMAP_MAP_TYPE_UNKNOWN:
283 		break;
284 	case IDMAP_MAP_TYPE_DS_AD:
285 		if (!xdr_idmap_how_ds_based(xdrs, &objp->idmap_how_u.ad))
286 			return (FALSE);
287 		break;
288 	case IDMAP_MAP_TYPE_DS_NLDAP:
289 		if (!xdr_idmap_how_ds_based(xdrs, &objp->idmap_how_u.nldap))
290 			return (FALSE);
291 		break;
292 	case IDMAP_MAP_TYPE_RULE_BASED:
293 		if (!xdr_idmap_namerule(xdrs, &objp->idmap_how_u.rule))
294 			return (FALSE);
295 		break;
296 	case IDMAP_MAP_TYPE_EPHEMERAL:
297 		break;
298 	case IDMAP_MAP_TYPE_LOCAL_SID:
299 		break;
300 	case IDMAP_MAP_TYPE_KNOWN_SID:
301 		break;
302 	case IDMAP_MAP_TYPE_IDMU:
303 		if (!xdr_idmap_how_ds_based(xdrs, &objp->idmap_how_u.idmu))
304 			return (FALSE);
305 		break;
306 	default:
307 		return (FALSE);
308 	}
309 	return (TRUE);
310 }
311 
312 bool_t
313 xdr_idmap_info(XDR *xdrs, idmap_info *objp)
314 {
315 
316 	rpc_inline_t *buf;
317 
318 	if (!xdr_idmap_map_src(xdrs, &objp->src))
319 		return (FALSE);
320 	if (!xdr_idmap_how(xdrs, &objp->how))
321 		return (FALSE);
322 	if (!xdr_nvlist_t_ptr(xdrs, &objp->trace))
323 		return (FALSE);
324 	return (TRUE);
325 }
326 
327 bool_t
328 xdr_idmap_id_res(XDR *xdrs, idmap_id_res *objp)
329 {
330 
331 	rpc_inline_t *buf;
332 
333 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
334 		return (FALSE);
335 	if (!xdr_idmap_id(xdrs, &objp->id))
336 		return (FALSE);
337 	if (!xdr_int(xdrs, &objp->direction))
338 		return (FALSE);
339 	if (!xdr_idmap_info(xdrs, &objp->info))
340 		return (FALSE);
341 	return (TRUE);
342 }
343 
344 bool_t
345 xdr_idmap_ids_res(XDR *xdrs, idmap_ids_res *objp)
346 {
347 
348 	rpc_inline_t *buf;
349 
350 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
351 		return (FALSE);
352 	if (!xdr_array(xdrs, (char **)&objp->ids.ids_val, (u_int *) &objp->ids.ids_len, ~0,
353 		sizeof (idmap_id_res), (xdrproc_t)xdr_idmap_id_res))
354 		return (FALSE);
355 	return (TRUE);
356 }
357 
358 bool_t
359 xdr_idmap_mapping(XDR *xdrs, idmap_mapping *objp)
360 {
361 
362 	rpc_inline_t *buf;
363 
364 	if (!xdr_int32_t(xdrs, &objp->flag))
365 		return (FALSE);
366 	if (!xdr_int(xdrs, &objp->direction))
367 		return (FALSE);
368 	if (!xdr_idmap_id(xdrs, &objp->id1))
369 		return (FALSE);
370 	if (!xdr_idmap_utf8str(xdrs, &objp->id1domain))
371 		return (FALSE);
372 	if (!xdr_idmap_utf8str(xdrs, &objp->id1name))
373 		return (FALSE);
374 	if (!xdr_idmap_id(xdrs, &objp->id2))
375 		return (FALSE);
376 	if (!xdr_idmap_utf8str(xdrs, &objp->id2domain))
377 		return (FALSE);
378 	if (!xdr_idmap_utf8str(xdrs, &objp->id2name))
379 		return (FALSE);
380 	if (!xdr_idmap_info(xdrs, &objp->info))
381 		return (FALSE);
382 	return (TRUE);
383 }
384 
385 bool_t
386 xdr_idmap_mapping_batch(XDR *xdrs, idmap_mapping_batch *objp)
387 {
388 
389 	rpc_inline_t *buf;
390 
391 	if (!xdr_array(xdrs, (char **)&objp->idmap_mapping_batch_val, (u_int *) &objp->idmap_mapping_batch_len, ~0,
392 		sizeof (idmap_mapping), (xdrproc_t)xdr_idmap_mapping))
393 		return (FALSE);
394 	return (TRUE);
395 }
396 
397 bool_t
398 xdr_idmap_mappings_res(XDR *xdrs, idmap_mappings_res *objp)
399 {
400 
401 	rpc_inline_t *buf;
402 
403 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
404 		return (FALSE);
405 	if (!xdr_uint64_t(xdrs, &objp->lastrowid))
406 		return (FALSE);
407 	if (!xdr_array(xdrs, (char **)&objp->mappings.mappings_val, (u_int *) &objp->mappings.mappings_len, ~0,
408 		sizeof (idmap_mapping), (xdrproc_t)xdr_idmap_mapping))
409 		return (FALSE);
410 	return (TRUE);
411 }
412 
413 bool_t
414 xdr_idmap_update_res(XDR *xdrs, idmap_update_res *objp)
415 {
416 
417 	rpc_inline_t *buf;
418 
419 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
420 		return (FALSE);
421 	if (!xdr_int64_t(xdrs, &objp->error_index))
422 		return (FALSE);
423 	if (!xdr_idmap_namerule(xdrs, &objp->error_rule))
424 		return (FALSE);
425 	if (!xdr_idmap_namerule(xdrs, &objp->conflict_rule))
426 		return (FALSE);
427 	return (TRUE);
428 }
429 
430 bool_t
431 xdr_idmap_opnum(XDR *xdrs, idmap_opnum *objp)
432 {
433 
434 	rpc_inline_t *buf;
435 
436 	if (!xdr_enum(xdrs, (enum_t *)objp))
437 		return (FALSE);
438 	return (TRUE);
439 }
440 
441 bool_t
442 xdr_idmap_update_op(XDR *xdrs, idmap_update_op *objp)
443 {
444 
445 	rpc_inline_t *buf;
446 
447 	if (!xdr_idmap_opnum(xdrs, &objp->opnum))
448 		return (FALSE);
449 	switch (objp->opnum) {
450 	case OP_ADD_NAMERULE:
451 	case OP_RM_NAMERULE:
452 		if (!xdr_idmap_namerule(xdrs, &objp->idmap_update_op_u.rule))
453 			return (FALSE);
454 		break;
455 	}
456 	return (TRUE);
457 }
458 
459 bool_t
460 xdr_idmap_update_batch(XDR *xdrs, idmap_update_batch *objp)
461 {
462 
463 	rpc_inline_t *buf;
464 
465 	if (!xdr_array(xdrs, (char **)&objp->idmap_update_batch_val, (u_int *) &objp->idmap_update_batch_len, ~0,
466 		sizeof (idmap_update_op), (xdrproc_t)xdr_idmap_update_op))
467 		return (FALSE);
468 	return (TRUE);
469 }
470 
471 bool_t
472 xdr_idmap_ad_disc_ds_t(XDR *xdrs, idmap_ad_disc_ds_t *objp)
473 {
474 
475 	rpc_inline_t *buf;
476 
477 	if (!xdr_int(xdrs, &objp->port))
478 		return (FALSE);
479 	if (!xdr_int(xdrs, &objp->priority))
480 		return (FALSE);
481 	if (!xdr_int(xdrs, &objp->weight))
482 		return (FALSE);
483 	if (!xdr_vector(xdrs, (char *)objp->host, AD_DISC_MAXHOSTNAME,
484 		sizeof (char), (xdrproc_t)xdr_char))
485 		return (FALSE);
486 	return (TRUE);
487 }
488 
489 bool_t
490 xdr_idmap_prop_type(XDR *xdrs, idmap_prop_type *objp)
491 {
492 
493 	rpc_inline_t *buf;
494 
495 	if (!xdr_enum(xdrs, (enum_t *)objp))
496 		return (FALSE);
497 	return (TRUE);
498 }
499 
500 bool_t
501 xdr_idmap_prop_val(XDR *xdrs, idmap_prop_val *objp)
502 {
503 
504 	rpc_inline_t *buf;
505 
506 	if (!xdr_idmap_prop_type(xdrs, &objp->prop))
507 		return (FALSE);
508 	switch (objp->prop) {
509 	case PROP_LIST_SIZE_LIMIT:
510 		if (!xdr_uint64_t(xdrs, &objp->idmap_prop_val_u.intval))
511 			return (FALSE);
512 		break;
513 	case PROP_DEFAULT_DOMAIN:
514 	case PROP_DOMAIN_NAME:
515 	case PROP_MACHINE_SID:
516 	case PROP_FOREST_NAME:
517 	case PROP_SITE_NAME:
518 	case PROP_AD_UNIXUSER_ATTR:
519 	case PROP_AD_UNIXGROUP_ATTR:
520 	case PROP_NLDAP_WINNAME_ATTR:
521 	case PROP_DIRECTORY_BASED_MAPPING:
522 		if (!xdr_idmap_utf8str(xdrs, &objp->idmap_prop_val_u.utf8val))
523 			return (FALSE);
524 		break;
525 	case PROP_DOMAIN_CONTROLLER:
526 	case PROP_GLOBAL_CATALOG:
527 		if (!xdr_idmap_ad_disc_ds_t(xdrs, &objp->idmap_prop_val_u.dsval))
528 			return (FALSE);
529 		break;
530 	}
531 	return (TRUE);
532 }
533 
534 bool_t
535 xdr_idmap_prop_res(XDR *xdrs, idmap_prop_res *objp)
536 {
537 
538 	rpc_inline_t *buf;
539 
540 	if (!xdr_idmap_retcode(xdrs, &objp->retcode))
541 		return (FALSE);
542 	if (!xdr_idmap_prop_val(xdrs, &objp->value))
543 		return (FALSE);
544 	if (!xdr_bool(xdrs, &objp->auto_discovered))
545 		return (FALSE);
546 	return (TRUE);
547 }
548 
549 bool_t
550 xdr_idmap_flush_op(XDR *xdrs, idmap_flush_op *objp)
551 {
552 
553 	rpc_inline_t *buf;
554 
555 	if (!xdr_enum(xdrs, (enum_t *)objp))
556 		return (FALSE);
557 	return (TRUE);
558 }
559 
560 bool_t
561 xdr_directory_error_rpc(XDR *xdrs, directory_error_rpc *objp)
562 {
563 
564 	rpc_inline_t *buf;
565 
566 	if (!xdr_idmap_utf8str(xdrs, &objp->code))
567 		return (FALSE);
568 	if (!xdr_idmap_utf8str(xdrs, &objp->fmt))
569 		return (FALSE);
570 	if (!xdr_array(xdrs, (char **)&objp->params.params_val, (u_int *) &objp->params.params_len, ~0,
571 		sizeof (idmap_utf8str), (xdrproc_t)xdr_idmap_utf8str))
572 		return (FALSE);
573 	return (TRUE);
574 }
575 
576 bool_t
577 xdr_directory_value_rpc(XDR *xdrs, directory_value_rpc *objp)
578 {
579 
580 	rpc_inline_t *buf;
581 
582 	if (!xdr_bytes(xdrs, (char **)&objp->directory_value_rpc_val, (u_int *) &objp->directory_value_rpc_len, ~0))
583 		return (FALSE);
584 	return (TRUE);
585 }
586 
587 bool_t
588 xdr_directory_values_rpc(XDR *xdrs, directory_values_rpc *objp)
589 {
590 
591 	rpc_inline_t *buf;
592 
593 	if (!xdr_bool(xdrs, &objp->found))
594 		return (FALSE);
595 	switch (objp->found) {
596 	case TRUE:
597 		if (!xdr_array(xdrs, (char **)&objp->directory_values_rpc_u.values.values_val, (u_int *) &objp->directory_values_rpc_u.values.values_len, ~0,
598 			sizeof (directory_value_rpc), (xdrproc_t)xdr_directory_value_rpc))
599 			return (FALSE);
600 		break;
601 	case FALSE:
602 		break;
603 	default:
604 		return (FALSE);
605 	}
606 	return (TRUE);
607 }
608 
609 bool_t
610 xdr_directory_lookup_status_rpc(XDR *xdrs, directory_lookup_status_rpc *objp)
611 {
612 
613 	rpc_inline_t *buf;
614 
615 	if (!xdr_enum(xdrs, (enum_t *)objp))
616 		return (FALSE);
617 	return (TRUE);
618 }
619 
620 bool_t
621 xdr_directory_entry_rpc(XDR *xdrs, directory_entry_rpc *objp)
622 {
623 
624 	rpc_inline_t *buf;
625 
626 	if (!xdr_directory_lookup_status_rpc(xdrs, &objp->status))
627 		return (FALSE);
628 	switch (objp->status) {
629 	case DIRECTORY_NOT_FOUND:
630 		break;
631 	case DIRECTORY_FOUND:
632 		if (!xdr_array(xdrs, (char **)&objp->directory_entry_rpc_u.attrs.attrs_val, (u_int *) &objp->directory_entry_rpc_u.attrs.attrs_len, ~0,
633 			sizeof (directory_values_rpc), (xdrproc_t)xdr_directory_values_rpc))
634 			return (FALSE);
635 		break;
636 	case DIRECTORY_ERROR:
637 		if (!xdr_directory_error_rpc(xdrs, &objp->directory_entry_rpc_u.err))
638 			return (FALSE);
639 		break;
640 	default:
641 		return (FALSE);
642 	}
643 	return (TRUE);
644 }
645 
646 bool_t
647 xdr_directory_results_rpc(XDR *xdrs, directory_results_rpc *objp)
648 {
649 
650 	rpc_inline_t *buf;
651 
652 	if (!xdr_bool(xdrs, &objp->failed))
653 		return (FALSE);
654 	switch (objp->failed) {
655 	case TRUE:
656 		if (!xdr_directory_error_rpc(xdrs, &objp->directory_results_rpc_u.err))
657 			return (FALSE);
658 		break;
659 	case FALSE:
660 		if (!xdr_array(xdrs, (char **)&objp->directory_results_rpc_u.entries.entries_val, (u_int *) &objp->directory_results_rpc_u.entries.entries_len, ~0,
661 			sizeof (directory_entry_rpc), (xdrproc_t)xdr_directory_entry_rpc))
662 			return (FALSE);
663 		break;
664 	default:
665 		return (FALSE);
666 	}
667 	return (TRUE);
668 }
669 
670 bool_t
671 xdr_idmap_list_mappings_1_argument(XDR *xdrs, idmap_list_mappings_1_argument *objp)
672 {
673 
674 	if (!xdr_int64_t(xdrs, &objp->lastrowid))
675 		return (FALSE);
676 	if (!xdr_uint64_t(xdrs, &objp->limit))
677 		return (FALSE);
678 	if (!xdr_int32_t(xdrs, &objp->flag))
679 		return (FALSE);
680 	return (TRUE);
681 }
682 
683 bool_t
684 xdr_idmap_list_namerules_1_argument(XDR *xdrs, idmap_list_namerules_1_argument *objp)
685 {
686 
687 	if (!xdr_idmap_namerule(xdrs, &objp->rule))
688 		return (FALSE);
689 	if (!xdr_uint64_t(xdrs, &objp->lastrowid))
690 		return (FALSE);
691 	if (!xdr_uint64_t(xdrs, &objp->limit))
692 		return (FALSE);
693 	return (TRUE);
694 }
695 
696 bool_t
697 xdr_directory_get_common_1_argument(XDR *xdrs, directory_get_common_1_argument *objp)
698 {
699 
700 	if (!xdr_idmap_utf8str_list(xdrs, &objp->ids))
701 		return (FALSE);
702 	if (!xdr_idmap_utf8str(xdrs, &objp->types))
703 		return (FALSE);
704 	if (!xdr_idmap_utf8str_list(xdrs, &objp->attrs))
705 		return (FALSE);
706 	return (TRUE);
707 }
708