1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 23 /* 24 * Copyright 2006 Sun Microsystems, Inc. All rights reserved. 25 * Use is subject to license terms. 26 */ 27 28 #pragma ident "%Z%%M% %I% %E% SMI" 29 30 /* 31 * Originally generated using rpcgen. 32 */ 33 34 #include "mt.h" 35 #include <rpc/rpc.h> 36 #include <rpcsvc/nis.h> 37 38 bool_t 39 xdr_nis_attr(XDR *xdrs, nis_attr *objp) 40 { 41 if (!xdr_string(xdrs, &objp->zattr_ndx, ~0)) 42 return (FALSE); 43 return (xdr_bytes(xdrs, (char **)&objp->zattr_val.zattr_val_val, 44 (uint_t *)&objp->zattr_val.zattr_val_len, ~0)); 45 } 46 47 bool_t 48 xdr_nis_name(XDR *xdrs, nis_name *objp) 49 { 50 return (xdr_string(xdrs, objp, ~0)); 51 } 52 53 bool_t 54 xdr_zotypes(XDR *xdrs, zotypes *objp) 55 { 56 return (xdr_enum(xdrs, (enum_t *)objp)); 57 } 58 59 bool_t 60 xdr_nstype(XDR *xdrs, nstype *objp) 61 { 62 return (xdr_enum(xdrs, (enum_t *)objp)); 63 } 64 65 bool_t 66 xdr_oar_mask(XDR *xdrs, oar_mask *objp) 67 { 68 if (!xdr_u_int(xdrs, &objp->oa_rights)) 69 return (FALSE); 70 return (xdr_zotypes(xdrs, &objp->oa_otype)); 71 } 72 73 bool_t 74 xdr_endpoint(XDR *xdrs, endpoint *objp) 75 { 76 if (!xdr_string(xdrs, &objp->uaddr, ~0)) 77 return (FALSE); 78 if (!xdr_string(xdrs, &objp->family, ~0)) 79 return (FALSE); 80 return (xdr_string(xdrs, &objp->proto, ~0)); 81 } 82 83 bool_t 84 xdr_nis_server(XDR *xdrs, nis_server *objp) 85 { 86 if (!xdr_nis_name(xdrs, &objp->name)) 87 return (FALSE); 88 if (!xdr_array(xdrs, (char **)&objp->ep.ep_val, 89 (uint_t *)&objp->ep.ep_len, ~0, 90 sizeof (endpoint), (xdrproc_t)xdr_endpoint)) 91 return (FALSE); 92 if (!xdr_u_int(xdrs, &objp->key_type)) 93 return (FALSE); 94 return (xdr_netobj(xdrs, &objp->pkey)); 95 } 96 97 bool_t 98 xdr_directory_obj(XDR *xdrs, directory_obj *objp) 99 { 100 if (!xdr_nis_name(xdrs, &objp->do_name)) 101 return (FALSE); 102 if (!xdr_nstype(xdrs, &objp->do_type)) 103 return (FALSE); 104 if (!xdr_array(xdrs, (char **)&objp->do_servers.do_servers_val, 105 (uint_t *)&objp->do_servers.do_servers_len, ~0, 106 sizeof (nis_server), (xdrproc_t)xdr_nis_server)) 107 return (FALSE); 108 if (!xdr_uint32_t(xdrs, &objp->do_ttl)) 109 return (FALSE); 110 return (xdr_array(xdrs, (char **)&objp->do_armask.do_armask_val, 111 (uint_t *)&objp->do_armask.do_armask_len, ~0, 112 sizeof (oar_mask), (xdrproc_t)xdr_oar_mask)); 113 } 114 115 bool_t 116 xdr_entry_col(XDR *xdrs, entry_col *objp) 117 { 118 if (!xdr_u_int(xdrs, &objp->ec_flags)) 119 return (FALSE); 120 return (xdr_bytes(xdrs, (char **)&objp->ec_value.ec_value_val, 121 (uint_t *)&objp->ec_value.ec_value_len, ~0)); 122 } 123 124 bool_t 125 xdr_entry_obj(XDR *xdrs, entry_obj *objp) 126 { 127 if (!xdr_string(xdrs, &objp->en_type, ~0)) 128 return (FALSE); 129 return (xdr_array(xdrs, (char **)&objp->en_cols.en_cols_val, 130 (uint_t *)&objp->en_cols.en_cols_len, ~0, 131 sizeof (entry_col), (xdrproc_t)xdr_entry_col)); 132 } 133 134 bool_t 135 xdr_group_obj(XDR *xdrs, group_obj *objp) 136 { 137 if (!xdr_u_int(xdrs, &objp->gr_flags)) 138 return (FALSE); 139 return (xdr_array(xdrs, (char **)&objp->gr_members.gr_members_val, 140 (uint_t *)&objp->gr_members.gr_members_len, ~0, 141 sizeof (nis_name), (xdrproc_t)xdr_nis_name)); 142 } 143 144 bool_t 145 xdr_link_obj(XDR *xdrs, link_obj *objp) 146 { 147 if (!xdr_zotypes(xdrs, &objp->li_rtype)) 148 return (FALSE); 149 if (!xdr_array(xdrs, (char **)&objp->li_attrs.li_attrs_val, 150 (uint_t *)&objp->li_attrs.li_attrs_len, ~0, 151 sizeof (nis_attr), (xdrproc_t)xdr_nis_attr)) 152 return (FALSE); 153 return (xdr_nis_name(xdrs, &objp->li_name)); 154 } 155 156 bool_t 157 xdr_table_col(XDR *xdrs, table_col *objp) 158 { 159 if (!xdr_string(xdrs, &objp->tc_name, 64)) 160 return (FALSE); 161 if (!xdr_u_int(xdrs, &objp->tc_flags)) 162 return (FALSE); 163 return (xdr_u_int(xdrs, &objp->tc_rights)); 164 } 165 166 bool_t 167 xdr_table_obj(XDR *xdrs, table_obj *objp) 168 { 169 if (!xdr_string(xdrs, &objp->ta_type, 64)) 170 return (FALSE); 171 if (!xdr_int(xdrs, &objp->ta_maxcol)) 172 return (FALSE); 173 if (!xdr_u_char(xdrs, &objp->ta_sep)) 174 return (FALSE); 175 if (!xdr_array(xdrs, (char **)&objp->ta_cols.ta_cols_val, 176 (uint_t *)&objp->ta_cols.ta_cols_len, ~0, 177 sizeof (table_col), (xdrproc_t)xdr_table_col)) 178 return (FALSE); 179 return (xdr_string(xdrs, &objp->ta_path, ~0)); 180 } 181 182 bool_t 183 xdr_objdata(XDR *xdrs, objdata *objp) 184 { 185 if (!xdr_zotypes(xdrs, &objp->zo_type)) 186 return (FALSE); 187 188 switch (objp->zo_type) { 189 case NIS_DIRECTORY_OBJ: 190 return (xdr_directory_obj(xdrs, &objp->objdata_u.di_data)); 191 case NIS_GROUP_OBJ: 192 return (xdr_group_obj(xdrs, &objp->objdata_u.gr_data)); 193 case NIS_TABLE_OBJ: 194 return (xdr_table_obj(xdrs, &objp->objdata_u.ta_data)); 195 case NIS_ENTRY_OBJ: 196 return (xdr_entry_obj(xdrs, &objp->objdata_u.en_data)); 197 case NIS_LINK_OBJ: 198 return (xdr_link_obj(xdrs, &objp->objdata_u.li_data)); 199 case NIS_PRIVATE_OBJ: 200 return (xdr_bytes(xdrs, 201 (char **)&objp->objdata_u.po_data.po_data_val, 202 (uint_t *)&objp->objdata_u.po_data.po_data_len, ~0)); 203 case NIS_NO_OBJ: 204 return (TRUE); 205 case NIS_BOGUS_OBJ: 206 return (TRUE); 207 } 208 return (TRUE); 209 } 210 211 bool_t 212 xdr_nis_oid(XDR *xdrs, nis_oid *objp) 213 { 214 if (!xdr_uint32_t(xdrs, &objp->ctime)) 215 return (FALSE); 216 return (xdr_uint32_t(xdrs, &objp->mtime)); 217 } 218 219 bool_t 220 xdr_nis_object(XDR *xdrs, nis_object *objp) 221 { 222 if (!xdr_nis_oid(xdrs, &objp->zo_oid)) 223 return (FALSE); 224 if (!xdr_nis_name(xdrs, &objp->zo_name)) 225 return (FALSE); 226 if (!xdr_nis_name(xdrs, &objp->zo_owner)) 227 return (FALSE); 228 if (!xdr_nis_name(xdrs, &objp->zo_group)) 229 return (FALSE); 230 if (!xdr_nis_name(xdrs, &objp->zo_domain)) 231 return (FALSE); 232 if (!xdr_u_int(xdrs, &objp->zo_access)) 233 return (FALSE); 234 if (!xdr_uint32_t(xdrs, &objp->zo_ttl)) 235 return (FALSE); 236 return (xdr_objdata(xdrs, &objp->zo_data)); 237 } 238 239 bool_t 240 xdr_nis_error(XDR *xdrs, nis_error *objp) 241 { 242 return (xdr_enum(xdrs, (enum_t *)objp)); 243 } 244 245 bool_t 246 xdr_nis_result(XDR *xdrs, nis_result *objp) 247 { 248 if (!xdr_nis_error(xdrs, &objp->status)) 249 return (FALSE); 250 if (!xdr_array(xdrs, (char **)&objp->objects.objects_val, 251 (uint_t *)&objp->objects.objects_len, ~0, 252 sizeof (nis_object), (xdrproc_t)xdr_nis_object)) 253 return (FALSE); 254 if (!xdr_netobj(xdrs, &objp->cookie)) 255 return (FALSE); 256 if (!xdr_uint32_t(xdrs, &objp->zticks)) 257 return (FALSE); 258 if (!xdr_uint32_t(xdrs, &objp->dticks)) 259 return (FALSE); 260 if (!xdr_uint32_t(xdrs, &objp->aticks)) 261 return (FALSE); 262 return (xdr_uint32_t(xdrs, &objp->cticks)); 263 } 264 265 bool_t 266 xdr_ns_request(XDR *xdrs, ns_request *objp) 267 { 268 if (!xdr_nis_name(xdrs, &objp->ns_name)) 269 return (FALSE); 270 return (xdr_array(xdrs, (char **)&objp->ns_object.ns_object_val, 271 (uint_t *)&objp->ns_object.ns_object_len, 1, 272 sizeof (nis_object), (xdrproc_t)xdr_nis_object)); 273 } 274 275 bool_t 276 xdr_ib_request(XDR *xdrs, ib_request *objp) 277 { 278 if (!xdr_nis_name(xdrs, &objp->ibr_name)) 279 return (FALSE); 280 if (!xdr_array(xdrs, (char **)&objp->ibr_srch.ibr_srch_val, 281 (uint_t *)&objp->ibr_srch.ibr_srch_len, ~0, 282 sizeof (nis_attr), (xdrproc_t)xdr_nis_attr)) 283 return (FALSE); 284 if (!xdr_u_int(xdrs, &objp->ibr_flags)) 285 return (FALSE); 286 if (!xdr_array(xdrs, (char **)&objp->ibr_obj.ibr_obj_val, 287 (uint_t *)&objp->ibr_obj.ibr_obj_len, 1, 288 sizeof (nis_object), (xdrproc_t)xdr_nis_object)) 289 return (FALSE); 290 if (!xdr_array(xdrs, (char **)&objp->ibr_cbhost.ibr_cbhost_val, 291 (uint_t *)&objp->ibr_cbhost.ibr_cbhost_len, 1, 292 sizeof (nis_server), (xdrproc_t)xdr_nis_server)) 293 return (FALSE); 294 if (!xdr_u_int(xdrs, &objp->ibr_bufsize)) 295 return (FALSE); 296 return (xdr_netobj(xdrs, &objp->ibr_cookie)); 297 } 298 299 bool_t 300 xdr_ping_args(XDR *xdrs, ping_args *objp) 301 { 302 if (!xdr_nis_name(xdrs, &objp->dir)) 303 return (FALSE); 304 return (xdr_uint32_t(xdrs, &objp->stamp)); 305 } 306 307 bool_t 308 xdr_log_entry_t(XDR *xdrs, log_entry_t *objp) 309 { 310 return (xdr_enum(xdrs, (enum_t *)objp)); 311 } 312 313 bool_t 314 xdr_log_entry(XDR *xdrs, log_entry *objp) 315 { 316 if (!xdr_uint32_t(xdrs, &objp->le_time)) 317 return (FALSE); 318 if (!xdr_log_entry_t(xdrs, &objp->le_type)) 319 return (FALSE); 320 if (!xdr_nis_name(xdrs, &objp->le_princp)) 321 return (FALSE); 322 if (!xdr_nis_name(xdrs, &objp->le_name)) 323 return (FALSE); 324 if (!xdr_array(xdrs, (char **)&objp->le_attrs.le_attrs_val, 325 (uint_t *)&objp->le_attrs.le_attrs_len, ~0, 326 sizeof (nis_attr), (xdrproc_t)xdr_nis_attr)) 327 return (FALSE); 328 return (xdr_nis_object(xdrs, &objp->le_object)); 329 } 330 331 bool_t 332 xdr_log_result(XDR *xdrs, log_result *objp) 333 { 334 if (!xdr_nis_error(xdrs, &objp->lr_status)) 335 return (FALSE); 336 if (!xdr_netobj(xdrs, &objp->lr_cookie)) 337 return (FALSE); 338 return (xdr_array(xdrs, (char **)&objp->lr_entries.lr_entries_val, 339 (uint_t *)&objp->lr_entries.lr_entries_len, ~0, 340 sizeof (log_entry), (xdrproc_t)xdr_log_entry)); 341 } 342 343 bool_t 344 xdr_cp_result(XDR *xdrs, cp_result *objp) 345 { 346 if (!xdr_nis_error(xdrs, &objp->cp_status)) 347 return (FALSE); 348 if (!xdr_uint32_t(xdrs, &objp->cp_zticks)) 349 return (FALSE); 350 return (xdr_uint32_t(xdrs, &objp->cp_dticks)); 351 } 352 353 bool_t 354 xdr_nis_tag(XDR *xdrs, nis_tag *objp) 355 { 356 if (!xdr_u_int(xdrs, &objp->tag_type)) 357 return (FALSE); 358 return (xdr_string(xdrs, &objp->tag_val, ~0)); 359 } 360 361 bool_t 362 xdr_nis_taglist(XDR *xdrs, nis_taglist *objp) 363 { 364 return (xdr_array(xdrs, (char **)&objp->tags.tags_val, 365 (uint_t *)&objp->tags.tags_len, ~0, 366 sizeof (nis_tag), (xdrproc_t)xdr_nis_tag)); 367 } 368 369 bool_t 370 xdr_dump_args(XDR *xdrs, dump_args *objp) 371 { 372 if (!xdr_nis_name(xdrs, &objp->da_dir)) 373 return (FALSE); 374 if (!xdr_uint32_t(xdrs, &objp->da_time)) 375 return (FALSE); 376 return (xdr_array(xdrs, (char **)&objp->da_cbhost.da_cbhost_val, 377 (uint_t *)&objp->da_cbhost.da_cbhost_len, 1, 378 sizeof (nis_server), (xdrproc_t)xdr_nis_server)); 379 } 380 381 bool_t 382 xdr_fd_args(XDR *xdrs, fd_args *objp) 383 { 384 if (!xdr_nis_name(xdrs, &objp->dir_name)) 385 return (FALSE); 386 return (xdr_nis_name(xdrs, &objp->requester)); 387 } 388 389 bool_t 390 xdr_fd_result(XDR *xdrs, fd_result *objp) 391 { 392 if (!xdr_nis_error(xdrs, &objp->status)) 393 return (FALSE); 394 if (!xdr_nis_name(xdrs, &objp->source)) 395 return (FALSE); 396 if (!xdr_bytes(xdrs, (char **)&objp->dir_data.dir_data_val, 397 (uint_t *)&objp->dir_data.dir_data_len, ~0)) 398 return (FALSE); 399 return (xdr_bytes(xdrs, (char **)&objp->signature.signature_val, 400 (uint_t *)&objp->signature.signature_len, ~0)); 401 } 402 /* 403 * Structures used for server binding. 404 */ 405 406 bool_t 407 xdr_nis_bound_endpoint(XDR *xdrs, nis_bound_endpoint *objp) 408 { 409 rpc_inline_t *buf; 410 411 if (xdrs->x_op == XDR_ENCODE) { 412 if (!xdr_endpoint(xdrs, &objp->ep)) 413 return (FALSE); 414 buf = XDR_INLINE(xdrs, 5 * BYTES_PER_XDR_UNIT); 415 if (buf == NULL) { 416 if (!xdr_int(xdrs, &objp->generation)) 417 return (FALSE); 418 if (!xdr_int(xdrs, &objp->rank)) 419 return (FALSE); 420 if (!xdr_u_int(xdrs, &objp->flags)) 421 return (FALSE); 422 if (!xdr_int(xdrs, &objp->hostnum)) 423 return (FALSE); 424 if (!xdr_int(xdrs, &objp->epnum)) 425 return (FALSE); 426 427 } else { 428 #if defined(_LP64) 429 IXDR_PUT_INT32(buf, objp->generation); 430 IXDR_PUT_INT32(buf, objp->rank); 431 IXDR_PUT_U_INT32(buf, objp->flags); 432 IXDR_PUT_INT32(buf, objp->hostnum); 433 IXDR_PUT_INT32(buf, objp->epnum); 434 #else 435 IXDR_PUT_LONG(buf, objp->generation); 436 IXDR_PUT_LONG(buf, objp->rank); 437 IXDR_PUT_U_LONG(buf, objp->flags); 438 IXDR_PUT_LONG(buf, objp->hostnum); 439 IXDR_PUT_LONG(buf, objp->epnum); 440 #endif 441 } 442 if (!xdr_nis_name(xdrs, &objp->uaddr)) 443 return (FALSE); 444 return (xdr_endpoint(xdrs, &objp->cbep)); 445 } 446 if (xdrs->x_op == XDR_DECODE) { 447 if (!xdr_endpoint(xdrs, &objp->ep)) 448 return (FALSE); 449 buf = XDR_INLINE(xdrs, 5 * BYTES_PER_XDR_UNIT); 450 if (buf == NULL) { 451 if (!xdr_int(xdrs, &objp->generation)) 452 return (FALSE); 453 if (!xdr_int(xdrs, &objp->rank)) 454 return (FALSE); 455 if (!xdr_u_int(xdrs, &objp->flags)) 456 return (FALSE); 457 if (!xdr_int(xdrs, &objp->hostnum)) 458 return (FALSE); 459 if (!xdr_int(xdrs, &objp->epnum)) 460 return (FALSE); 461 462 } else { 463 #if defined(_LP64) 464 objp->generation = IXDR_GET_INT32(buf); 465 objp->rank = IXDR_GET_INT32(buf); 466 objp->flags = IXDR_GET_U_INT32(buf); 467 objp->hostnum = IXDR_GET_INT32(buf); 468 objp->epnum = IXDR_GET_INT32(buf); 469 #else 470 objp->generation = IXDR_GET_LONG(buf); 471 objp->rank = IXDR_GET_LONG(buf); 472 objp->flags = IXDR_GET_U_LONG(buf); 473 objp->hostnum = IXDR_GET_LONG(buf); 474 objp->epnum = IXDR_GET_LONG(buf); 475 #endif 476 } 477 if (!xdr_nis_name(xdrs, &objp->uaddr)) 478 return (FALSE); 479 return (xdr_endpoint(xdrs, &objp->cbep)); 480 } 481 482 if (!xdr_endpoint(xdrs, &objp->ep)) 483 return (FALSE); 484 if (!xdr_int(xdrs, &objp->generation)) 485 return (FALSE); 486 if (!xdr_int(xdrs, &objp->rank)) 487 return (FALSE); 488 if (!xdr_u_int(xdrs, &objp->flags)) 489 return (FALSE); 490 if (!xdr_int(xdrs, &objp->hostnum)) 491 return (FALSE); 492 if (!xdr_int(xdrs, &objp->epnum)) 493 return (FALSE); 494 if (!xdr_nis_name(xdrs, &objp->uaddr)) 495 return (FALSE); 496 return (xdr_endpoint(xdrs, &objp->cbep)); 497 } 498 499 bool_t 500 xdr_nis_bound_directory(XDR *xdrs, nis_bound_directory *objp) 501 { 502 if (!xdr_int(xdrs, &objp->generation)) 503 return (FALSE); 504 if (!xdr_int(xdrs, &objp->min_rank)) 505 return (FALSE); 506 if (!xdr_int(xdrs, &objp->optimal_rank)) 507 return (FALSE); 508 if (!xdr_directory_obj(xdrs, &objp->dobj)) 509 return (FALSE); 510 return (xdr_array(xdrs, (char **)&objp->BEP.BEP_val, 511 (uint_t *)&objp->BEP.BEP_len, ~0, 512 sizeof (nis_bound_endpoint), 513 (xdrproc_t)xdr_nis_bound_endpoint)); 514 } 515 516 bool_t 517 xdr_nis_active_endpoint(XDR *xdrs, nis_active_endpoint *objp) 518 { 519 if (!xdr_endpoint(xdrs, &objp->ep)) 520 return (FALSE); 521 if (!xdr_nis_name(xdrs, &objp->hostname)) 522 return (FALSE); 523 if (!xdr_int(xdrs, &objp->rank)) 524 return (FALSE); 525 if (!xdr_int(xdrs, &objp->uaddr_generation)) 526 return (FALSE); 527 if (!xdr_nis_name(xdrs, &objp->uaddr)) 528 return (FALSE); 529 if (!xdr_int(xdrs, &objp->cbep_generation)) 530 return (FALSE); 531 return (xdr_endpoint(xdrs, &objp->cbep)); 532 } 533