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