| lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | /* | 
 | 2 |  * Copyright (c) 2010, Oracle America, Inc. | 
 | 3 |  * | 
 | 4 |  * Redistribution and use in source and binary forms, with or without | 
 | 5 |  * modification, are permitted provided that the following conditions are | 
 | 6 |  * met: | 
 | 7 |  * | 
 | 8 |  *     * Redistributions of source code must retain the above copyright | 
 | 9 |  *       notice, this list of conditions and the following disclaimer. | 
 | 10 |  *     * Redistributions in binary form must reproduce the above | 
 | 11 |  *       copyright notice, this list of conditions and the following | 
 | 12 |  *       disclaimer in the documentation and/or other materials | 
 | 13 |  *       provided with the distribution. | 
 | 14 |  *     * Neither the name of the "Oracle America, Inc." nor the names of its | 
 | 15 |  *       contributors may be used to endorse or promote products derived | 
 | 16 |  *       from this software without specific prior written permission. | 
 | 17 |  * | 
 | 18 |  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | 
 | 19 |  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | 
 | 20 |  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | 
 | 21 |  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | 
 | 22 |  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, | 
 | 23 |  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL | 
 | 24 |  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | 
 | 25 |  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS | 
 | 26 |  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, | 
 | 27 |  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | 
 | 28 |  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 
 | 29 |  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 
 | 30 |  */ | 
 | 31 |  | 
 | 32 | #ifndef _RPCSVC_NIS_H | 
 | 33 | #define _RPCSVC_NIS_H 1 | 
 | 34 |  | 
 | 35 | #include <features.h> | 
 | 36 | #include <rpc/rpc.h> | 
 | 37 | #include <rpcsvc/nis_tags.h> | 
 | 38 |  | 
 | 39 | __BEGIN_DECLS | 
 | 40 |  | 
 | 41 | /* | 
 | 42 |  *	nis.h | 
 | 43 |  * | 
 | 44 |  *	This file is the main include file for NIS clients. It contains | 
 | 45 |  *	both the client library function defines and the various data | 
 | 46 |  *	structures used by the NIS service. It includes the file nis_tags.h | 
 | 47 |  *	which defines the tag values. This allows the tags to change without | 
 | 48 |  *	having to change the nis.x file. | 
 | 49 |  * | 
 | 50 |  *	NOTE : THIS FILE IS NOT GENERATED WITH RPCGEN ! SO YOU HAVE TO | 
 | 51 |  *             ADD ALL THE CHANGES ON nis_*.x FILES HERE AGAIN ! | 
 | 52 |  * | 
 | 53 |  *      I have removed all the Solaris internal structs and variables, | 
 | 54 |  *      because they are not supported, Sun changed them between various | 
 | 55 |  *      releases and they shouldn't be used in user programs. | 
 | 56 |  *                                              <kukuk@suse.de> | 
 | 57 |  */ | 
 | 58 |  | 
 | 59 |  | 
 | 60 | #ifndef __nis_object_h | 
 | 61 | #define __nis_object_h | 
 | 62 |  | 
 | 63 | #define NIS_MAXSTRINGLEN 255 | 
 | 64 | #define NIS_MAXNAMELEN 1024 | 
 | 65 | #define NIS_MAXATTRNAME 32 | 
 | 66 | #define NIS_MAXATTRVAL 2048 | 
 | 67 | #define NIS_MAXCOLUMNS 64 | 
 | 68 | #define NIS_MAXATTR 16 | 
 | 69 | #define NIS_MAXPATH 1024 | 
 | 70 | #define NIS_MAXREPLICAS 128 | 
 | 71 | #define NIS_MAXLINKS 16 | 
 | 72 | #define NIS_PK_NONE 0 | 
 | 73 | #define NIS_PK_DH 1 | 
 | 74 | #define NIS_PK_RSA 2 | 
 | 75 | #define NIS_PK_KERB 3 | 
 | 76 | #define NIS_PK_DHEXT 4 | 
 | 77 |  | 
 | 78 | struct nis_attr { | 
 | 79 | 	char *zattr_ndx; | 
 | 80 | 	struct { | 
 | 81 | 		u_int zattr_val_len; | 
 | 82 | 		char *zattr_val_val; | 
 | 83 | 	} zattr_val; | 
 | 84 | }; | 
 | 85 | typedef struct nis_attr nis_attr; | 
 | 86 |  | 
 | 87 | typedef char *nis_name; | 
 | 88 |  | 
 | 89 | enum zotypes { | 
 | 90 | 	BOGUS_OBJ = 0, | 
 | 91 | 	NO_OBJ = 1, | 
 | 92 | 	DIRECTORY_OBJ = 2, | 
 | 93 | 	GROUP_OBJ = 3, | 
 | 94 | 	TABLE_OBJ = 4, | 
 | 95 | 	ENTRY_OBJ = 5, | 
 | 96 | 	LINK_OBJ = 6, | 
 | 97 | 	PRIVATE_OBJ = 7, | 
 | 98 | 	NIS_BOGUS_OBJ = 0, | 
 | 99 | 	NIS_NO_OBJ = 1, | 
 | 100 | 	NIS_DIRECTORY_OBJ = 2, | 
 | 101 | 	NIS_GROUP_OBJ = 3, | 
 | 102 | 	NIS_TABLE_OBJ = 4, | 
 | 103 | 	NIS_ENTRY_OBJ = 5, | 
 | 104 | 	NIS_LINK_OBJ = 6, | 
 | 105 | 	NIS_PRIVATE_OBJ = 7 | 
 | 106 | }; | 
 | 107 | typedef enum zotypes zotypes; | 
 | 108 |  | 
 | 109 | enum nstype { | 
 | 110 | 	UNKNOWN = 0, | 
 | 111 | 	NIS = 1, | 
 | 112 | 	SUNYP = 2, | 
 | 113 | 	IVY = 3, | 
 | 114 | 	DNS = 4, | 
 | 115 | 	X500 = 5, | 
 | 116 | 	DNANS = 6, | 
 | 117 | 	XCHS = 7, | 
 | 118 | 	CDS = 8, | 
 | 119 | }; | 
 | 120 | typedef enum nstype nstype; | 
 | 121 |  | 
 | 122 | struct oar_mask { | 
 | 123 | 	uint32_t oa_rights; | 
 | 124 | 	zotypes oa_otype; | 
 | 125 | }; | 
 | 126 | typedef struct oar_mask oar_mask; | 
 | 127 |  | 
 | 128 | struct endpoint { | 
 | 129 | 	char *uaddr; | 
 | 130 | 	char *family; | 
 | 131 | 	char *proto; | 
 | 132 | }; | 
 | 133 | typedef struct endpoint endpoint; | 
 | 134 |  | 
 | 135 | struct nis_server { | 
 | 136 | 	nis_name name; | 
 | 137 | 	struct { | 
 | 138 | 		u_int ep_len; | 
 | 139 | 		endpoint *ep_val; | 
 | 140 | 	} ep; | 
 | 141 | 	uint32_t key_type; | 
 | 142 | 	netobj pkey; | 
 | 143 | }; | 
 | 144 | typedef struct nis_server nis_server; | 
 | 145 |  | 
 | 146 | struct directory_obj { | 
 | 147 | 	nis_name do_name; | 
 | 148 | 	nstype do_type; | 
 | 149 | 	struct { | 
 | 150 | 		u_int do_servers_len; | 
 | 151 | 		nis_server *do_servers_val; | 
 | 152 | 	} do_servers; | 
 | 153 | 	uint32_t do_ttl; | 
 | 154 | 	struct { | 
 | 155 | 		u_int do_armask_len; | 
 | 156 | 		oar_mask *do_armask_val; | 
 | 157 | 	} do_armask; | 
 | 158 | }; | 
 | 159 | typedef struct directory_obj directory_obj; | 
 | 160 |  | 
 | 161 | #define EN_BINARY 1 | 
 | 162 | #define EN_CRYPT 2 | 
 | 163 | #define EN_XDR 4 | 
 | 164 | #define EN_MODIFIED 8 | 
 | 165 | #define EN_ASN1 64 | 
 | 166 |  | 
 | 167 | struct entry_col { | 
 | 168 | 	uint32_t ec_flags; | 
 | 169 | 	struct { | 
 | 170 | 		u_int ec_value_len; | 
 | 171 | 		char *ec_value_val; | 
 | 172 | 	} ec_value; | 
 | 173 | }; | 
 | 174 | typedef struct entry_col entry_col; | 
 | 175 |  | 
 | 176 | struct entry_obj { | 
 | 177 | 	char *en_type; | 
 | 178 | 	struct { | 
 | 179 | 		u_int en_cols_len; | 
 | 180 | 		entry_col *en_cols_val; | 
 | 181 | 	} en_cols; | 
 | 182 | }; | 
 | 183 | typedef struct entry_obj entry_obj; | 
 | 184 |  | 
 | 185 | struct group_obj { | 
 | 186 | 	uint32_t gr_flags; | 
 | 187 | 	struct { | 
 | 188 | 		u_int gr_members_len; | 
 | 189 | 		nis_name *gr_members_val; | 
 | 190 | 	} gr_members; | 
 | 191 | }; | 
 | 192 | typedef struct group_obj group_obj; | 
 | 193 |  | 
 | 194 | struct link_obj { | 
 | 195 | 	zotypes li_rtype; | 
 | 196 | 	struct { | 
 | 197 | 		u_int li_attrs_len; | 
 | 198 | 		nis_attr *li_attrs_val; | 
 | 199 | 	} li_attrs; | 
 | 200 | 	nis_name li_name; | 
 | 201 | }; | 
 | 202 | typedef struct link_obj link_obj; | 
 | 203 |  | 
 | 204 | #define TA_BINARY 1 | 
 | 205 | #define TA_CRYPT 2 | 
 | 206 | #define TA_XDR 4 | 
 | 207 | #define TA_SEARCHABLE 8 | 
 | 208 | #define TA_CASE 16 | 
 | 209 | #define TA_MODIFIED 32 | 
 | 210 | #define TA_ASN1 64 | 
 | 211 |  | 
 | 212 | struct table_col { | 
 | 213 | 	char *tc_name; | 
 | 214 | 	uint32_t tc_flags; | 
 | 215 | 	uint32_t tc_rights; | 
 | 216 | }; | 
 | 217 | typedef struct table_col table_col; | 
 | 218 |  | 
 | 219 | struct table_obj { | 
 | 220 | 	char *ta_type; | 
 | 221 | 	int ta_maxcol; | 
 | 222 | 	u_char ta_sep; | 
 | 223 | 	struct { | 
 | 224 | 		u_int ta_cols_len; | 
 | 225 | 		table_col *ta_cols_val; | 
 | 226 | 	} ta_cols; | 
 | 227 | 	char *ta_path; | 
 | 228 | }; | 
 | 229 | typedef struct table_obj table_obj; | 
 | 230 |  | 
 | 231 | struct objdata { | 
 | 232 | 	zotypes zo_type; | 
 | 233 | 	union { | 
 | 234 | 		struct directory_obj di_data; | 
 | 235 | 		struct group_obj gr_data; | 
 | 236 | 		struct table_obj ta_data; | 
 | 237 | 		struct entry_obj en_data; | 
 | 238 | 		struct link_obj li_data; | 
 | 239 | 		struct { | 
 | 240 | 			u_int po_data_len; | 
 | 241 | 			char *po_data_val; | 
 | 242 | 		} po_data; | 
 | 243 | 	} objdata_u; | 
 | 244 | }; | 
 | 245 | typedef struct objdata objdata; | 
 | 246 |  | 
 | 247 | struct nis_oid { | 
 | 248 | 	uint32_t ctime; | 
 | 249 | 	uint32_t mtime; | 
 | 250 | }; | 
 | 251 | typedef struct nis_oid nis_oid; | 
 | 252 |  | 
 | 253 | struct nis_object { | 
 | 254 | 	nis_oid zo_oid; | 
 | 255 | 	nis_name zo_name; | 
 | 256 | 	nis_name zo_owner; | 
 | 257 | 	nis_name zo_group; | 
 | 258 | 	nis_name zo_domain; | 
 | 259 | 	uint32_t zo_access; | 
 | 260 | 	uint32_t zo_ttl; | 
 | 261 | 	objdata zo_data; | 
 | 262 | }; | 
 | 263 | typedef struct nis_object nis_object; | 
 | 264 |  | 
 | 265 | #endif /* if __nis_object_h */ | 
 | 266 |  | 
 | 267 | enum nis_error { | 
 | 268 | 	NIS_SUCCESS = 0, | 
 | 269 | 	NIS_S_SUCCESS = 1, | 
 | 270 | 	NIS_NOTFOUND = 2, | 
 | 271 | 	NIS_S_NOTFOUND = 3, | 
 | 272 | 	NIS_CACHEEXPIRED = 4, | 
 | 273 | 	NIS_NAMEUNREACHABLE = 5, | 
 | 274 | 	NIS_UNKNOWNOBJ = 6, | 
 | 275 | 	NIS_TRYAGAIN = 7, | 
 | 276 | 	NIS_SYSTEMERROR = 8, | 
 | 277 | 	NIS_CHAINBROKEN = 9, | 
 | 278 | 	NIS_PERMISSION = 10, | 
 | 279 | 	NIS_NOTOWNER = 11, | 
 | 280 | 	NIS_NOT_ME = 12, | 
 | 281 | 	NIS_NOMEMORY = 13, | 
 | 282 | 	NIS_NAMEEXISTS = 14, | 
 | 283 | 	NIS_NOTMASTER = 15, | 
 | 284 | 	NIS_INVALIDOBJ = 16, | 
 | 285 | 	NIS_BADNAME = 17, | 
 | 286 | 	NIS_NOCALLBACK = 18, | 
 | 287 | 	NIS_CBRESULTS = 19, | 
 | 288 | 	NIS_NOSUCHNAME = 20, | 
 | 289 | 	NIS_NOTUNIQUE = 21, | 
 | 290 | 	NIS_IBMODERROR = 22, | 
 | 291 | 	NIS_NOSUCHTABLE = 23, | 
 | 292 | 	NIS_TYPEMISMATCH = 24, | 
 | 293 | 	NIS_LINKNAMEERROR = 25, | 
 | 294 | 	NIS_PARTIAL = 26, | 
 | 295 | 	NIS_TOOMANYATTRS = 27, | 
 | 296 | 	NIS_RPCERROR = 28, | 
 | 297 | 	NIS_BADATTRIBUTE = 29, | 
 | 298 | 	NIS_NOTSEARCHABLE = 30, | 
 | 299 | 	NIS_CBERROR = 31, | 
 | 300 | 	NIS_FOREIGNNS = 32, | 
 | 301 | 	NIS_BADOBJECT = 33, | 
 | 302 | 	NIS_NOTSAMEOBJ = 34, | 
 | 303 | 	NIS_MODFAIL = 35, | 
 | 304 | 	NIS_BADREQUEST = 36, | 
 | 305 | 	NIS_NOTEMPTY = 37, | 
 | 306 | 	NIS_COLDSTART_ERR = 38, | 
 | 307 | 	NIS_RESYNC = 39, | 
 | 308 | 	NIS_FAIL = 40, | 
 | 309 | 	NIS_UNAVAIL = 41, | 
 | 310 | 	NIS_RES2BIG = 42, | 
 | 311 | 	NIS_SRVAUTH = 43, | 
 | 312 | 	NIS_CLNTAUTH = 44, | 
 | 313 | 	NIS_NOFILESPACE = 45, | 
 | 314 | 	NIS_NOPROC = 46, | 
 | 315 | 	NIS_DUMPLATER = 47, | 
 | 316 | }; | 
 | 317 | typedef enum nis_error nis_error; | 
 | 318 |  | 
 | 319 | struct nis_result { | 
 | 320 | 	nis_error status; | 
 | 321 | 	struct { | 
 | 322 | 		u_int objects_len; | 
 | 323 | 		nis_object *objects_val; | 
 | 324 | 	} objects; | 
 | 325 | 	netobj cookie; | 
 | 326 | 	uint32_t zticks; | 
 | 327 | 	uint32_t dticks; | 
 | 328 | 	uint32_t aticks; | 
 | 329 | 	uint32_t cticks; | 
 | 330 | }; | 
 | 331 | typedef struct nis_result nis_result; | 
 | 332 |  | 
 | 333 | struct ns_request { | 
 | 334 | 	nis_name ns_name; | 
 | 335 | 	struct { | 
 | 336 | 		u_int ns_object_len; | 
 | 337 | 		nis_object *ns_object_val; | 
 | 338 | 	} ns_object; | 
 | 339 | }; | 
 | 340 | typedef struct ns_request ns_request; | 
 | 341 |  | 
 | 342 | struct ib_request { | 
 | 343 | 	nis_name ibr_name; | 
 | 344 | 	struct { | 
 | 345 | 		u_int ibr_srch_len; | 
 | 346 | 		nis_attr *ibr_srch_val; | 
 | 347 | 	} ibr_srch; | 
 | 348 | 	uint32_t ibr_flags; | 
 | 349 | 	struct { | 
 | 350 | 		u_int ibr_obj_len; | 
 | 351 | 		nis_object *ibr_obj_val; | 
 | 352 | 	} ibr_obj; | 
 | 353 | 	struct { | 
 | 354 | 		u_int ibr_cbhost_len; | 
 | 355 | 		nis_server *ibr_cbhost_val; | 
 | 356 | 	} ibr_cbhost; | 
 | 357 | 	u_int ibr_bufsize; | 
 | 358 | 	netobj ibr_cookie; | 
 | 359 | }; | 
 | 360 | typedef struct ib_request ib_request; | 
 | 361 |  | 
 | 362 | struct ping_args { | 
 | 363 | 	nis_name dir; | 
 | 364 | 	uint32_t stamp; | 
 | 365 | }; | 
 | 366 | typedef struct ping_args ping_args; | 
 | 367 |  | 
 | 368 | enum log_entry_t { | 
 | 369 | 	LOG_NOP = 0, | 
 | 370 | 	ADD_NAME = 1, | 
 | 371 | 	REM_NAME = 2, | 
 | 372 | 	MOD_NAME_OLD = 3, | 
 | 373 | 	MOD_NAME_NEW = 4, | 
 | 374 | 	ADD_IBASE = 5, | 
 | 375 | 	REM_IBASE = 6, | 
 | 376 | 	MOD_IBASE = 7, | 
 | 377 | 	UPD_STAMP = 8, | 
 | 378 | }; | 
 | 379 | typedef enum log_entry_t log_entry_t; | 
 | 380 |  | 
 | 381 | struct log_entry { | 
 | 382 | 	uint32_t le_time; | 
 | 383 | 	log_entry_t le_type; | 
 | 384 | 	nis_name le_princp; | 
 | 385 | 	nis_name le_name; | 
 | 386 | 	struct { | 
 | 387 | 		u_int le_attrs_len; | 
 | 388 | 		nis_attr *le_attrs_val; | 
 | 389 | 	} le_attrs; | 
 | 390 | 	nis_object le_object; | 
 | 391 | }; | 
 | 392 | typedef struct log_entry log_entry; | 
 | 393 |  | 
 | 394 | struct log_result { | 
 | 395 | 	nis_error lr_status; | 
 | 396 | 	netobj lr_cookie; | 
 | 397 | 	struct { | 
 | 398 | 		u_int lr_entries_len; | 
 | 399 | 		log_entry *lr_entries_val; | 
 | 400 | 	} lr_entries; | 
 | 401 | }; | 
 | 402 | typedef struct log_result log_result; | 
 | 403 |  | 
 | 404 | struct cp_result { | 
 | 405 | 	nis_error cp_status; | 
 | 406 | 	uint32_t cp_zticks; | 
 | 407 | 	uint32_t cp_dticks; | 
 | 408 | }; | 
 | 409 | typedef struct cp_result cp_result; | 
 | 410 |  | 
 | 411 | struct nis_tag { | 
 | 412 | 	uint32_t tag_type; | 
 | 413 | 	char *tag_val; | 
 | 414 | }; | 
 | 415 | typedef struct nis_tag nis_tag; | 
 | 416 |  | 
 | 417 | struct nis_taglist { | 
 | 418 | 	struct { | 
 | 419 | 		u_int tags_len; | 
 | 420 | 		nis_tag *tags_val; | 
 | 421 | 	} tags; | 
 | 422 | }; | 
 | 423 | typedef struct nis_taglist nis_taglist; | 
 | 424 |  | 
 | 425 | struct dump_args { | 
 | 426 | 	nis_name da_dir; | 
 | 427 | 	uint32_t da_time; | 
 | 428 | 	struct { | 
 | 429 | 		u_int da_cbhost_len; | 
 | 430 | 		nis_server *da_cbhost_val; | 
 | 431 | 	} da_cbhost; | 
 | 432 | }; | 
 | 433 | typedef struct dump_args dump_args; | 
 | 434 |  | 
 | 435 | struct fd_args { | 
 | 436 | 	nis_name dir_name; | 
 | 437 | 	nis_name requester; | 
 | 438 | }; | 
 | 439 | typedef struct fd_args fd_args; | 
 | 440 |  | 
 | 441 | struct fd_result { | 
 | 442 | 	nis_error status; | 
 | 443 | 	nis_name source; | 
 | 444 | 	struct { | 
 | 445 | 		u_int dir_data_len; | 
 | 446 | 		char *dir_data_val; | 
 | 447 | 	} dir_data; | 
 | 448 | 	struct { | 
 | 449 | 		u_int signature_len; | 
 | 450 | 		char *signature_val; | 
 | 451 | 	} signature; | 
 | 452 | }; | 
 | 453 | typedef struct fd_result fd_result; | 
 | 454 |  | 
 | 455 | /* Generic client creating flags */ | 
 | 456 | #define ZMH_VC		1 | 
 | 457 | #define ZMH_DG		2 | 
 | 458 | #define ZMH_AUTH	4 | 
 | 459 |  | 
 | 460 | /* Testing Access rights for objects */ | 
 | 461 |  | 
 | 462 | #define NIS_READ_ACC		1 | 
 | 463 | #define NIS_MODIFY_ACC		2 | 
 | 464 | #define NIS_CREATE_ACC		4 | 
 | 465 | #define NIS_DESTROY_ACC	8 | 
 | 466 | /* Test macros. a == access rights, m == desired rights. */ | 
 | 467 | #define NIS_WORLD(a, m)        (((a) & (m)) != 0) | 
 | 468 | #define NIS_GROUP(a, m)        (((a) & ((m) << 8)) != 0) | 
 | 469 | #define NIS_OWNER(a, m)        (((a) & ((m) << 16)) != 0) | 
 | 470 | #define NIS_NOBODY(a, m)       (((a) & ((m) << 24)) != 0) | 
 | 471 | /* | 
 | 472 |  * EOL Alert - The following non-prefixed test macros are | 
 | 473 |  * here for backward compatibility, and will be not be present | 
 | 474 |  * in future releases - use the NIS_*() macros above. | 
 | 475 |  */ | 
 | 476 | #define WORLD(a, m)	(((a) & (m)) != 0) | 
 | 477 | #define GROUP(a, m)	(((a) & ((m) << 8)) != 0) | 
 | 478 | #define OWNER(a, m)	(((a) & ((m) << 16)) != 0) | 
 | 479 | #define NOBODY(a, m)	(((a) & ((m) << 24)) != 0) | 
 | 480 |  | 
 | 481 | #define OATYPE(d, n) (((d)->do_armask.do_armask_val+n)->oa_otype) | 
 | 482 | #define OARIGHTS(d, n) (((d)->do_armask.do_armask_val+n)->oa_rights) | 
 | 483 | #define WORLD_DEFAULT (NIS_READ_ACC) | 
 | 484 | #define GROUP_DEFAULT (NIS_READ_ACC << 8) | 
 | 485 | #define OWNER_DEFAULT ((NIS_READ_ACC + NIS_MODIFY_ACC + NIS_CREATE_ACC +\ | 
 | 486 | 			NIS_DESTROY_ACC) << 16) | 
 | 487 | #define DEFAULT_RIGHTS (WORLD_DEFAULT | GROUP_DEFAULT | OWNER_DEFAULT) | 
 | 488 |  | 
 | 489 | /* Result manipulation defines ... */ | 
 | 490 | #define NIS_RES_NUMOBJ(x)	((x)->objects.objects_len) | 
 | 491 | #define NIS_RES_OBJECT(x)	((x)->objects.objects_val) | 
 | 492 | #define NIS_RES_COOKIE(x)	((x)->cookie) | 
 | 493 | #define NIS_RES_STATUS(x)	((x)->status) | 
 | 494 |  | 
 | 495 | /* These defines make getting at the variant part of the object easier. */ | 
 | 496 | #define TA_data zo_data.objdata_u.ta_data | 
 | 497 | #define EN_data zo_data.objdata_u.en_data | 
 | 498 | #define DI_data zo_data.objdata_u.di_data | 
 | 499 | #define LI_data zo_data.objdata_u.li_data | 
 | 500 | #define GR_data zo_data.objdata_u.gr_data | 
 | 501 |  | 
 | 502 | #define __type_of(o) ((o)->zo_data.zo_type) | 
 | 503 |  | 
 | 504 | /* Declarations for the internal subroutines in nislib.c */ | 
 | 505 | enum name_pos {SAME_NAME, HIGHER_NAME, LOWER_NAME, NOT_SEQUENTIAL, BAD_NAME}; | 
 | 506 | typedef enum name_pos name_pos; | 
 | 507 |  | 
 | 508 | /* | 
 | 509 |  * Defines for getting at column data in entry objects. Because RPCGEN | 
 | 510 |  * generates some rather wordy structures, we create some defines that | 
 | 511 |  * collapse the needed keystrokes to access a particular value using | 
 | 512 |  * these definitions they take an nis_object *, and an int and return | 
 | 513 |  * a u_char * for Value, and an int for length. | 
 | 514 |  */ | 
 | 515 | #define ENTRY_VAL(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_val | 
 | 516 | #define ENTRY_LEN(obj, col) (obj)->EN_data.en_cols.en_cols_val[col].ec_value.ec_value_len | 
 | 517 |  | 
 | 518 |  | 
 | 519 | /* Prototypes, and extern declarations for the NIS library functions. */ | 
 | 520 | #include <rpcsvc/nislib.h> | 
 | 521 | #endif | 
 | 522 |  | 
 | 523 | /* | 
 | 524 |  * nis_3.h | 
 | 525 |  * | 
 | 526 |  * This file contains definitions that are only of interest to the actual | 
 | 527 |  * service daemon and client stubs. Normal users of NIS will not include | 
 | 528 |  * this file. | 
 | 529 |  * | 
 | 530 |  * NOTE : This include file is automatically created by a combination | 
 | 531 |  * of rpcgen and sed. DO NOT EDIT IT, change the nis.x file instead | 
 | 532 |  * and then remake this file. | 
 | 533 |  */ | 
 | 534 | #ifndef __nis_3_h | 
 | 535 | #define __nis_3_h | 
 | 536 |  | 
 | 537 | #define NIS_PROG 100300 | 
 | 538 | #define NIS_VERSION 3 | 
 | 539 |  | 
 | 540 | #define NIS_LOOKUP 1 | 
 | 541 | extern  nis_result * nis_lookup_3 (ns_request *, CLIENT *) __THROW; | 
 | 542 | extern  nis_result * nis_lookup_3_svc (ns_request *, struct svc_req *) __THROW; | 
 | 543 | #define NIS_ADD 2 | 
 | 544 | extern  nis_result * nis_add_3 (ns_request *, CLIENT *) __THROW; | 
 | 545 | extern  nis_result * nis_add_3_svc (ns_request *, struct svc_req *) __THROW; | 
 | 546 | #define NIS_MODIFY 3 | 
 | 547 | extern  nis_result * nis_modify_3 (ns_request *, CLIENT *) __THROW; | 
 | 548 | extern  nis_result * nis_modify_3_svc (ns_request *, struct svc_req *) __THROW; | 
 | 549 | #define NIS_REMOVE 4 | 
 | 550 | extern  nis_result * nis_remove_3 (ns_request *, CLIENT *) __THROW; | 
 | 551 | extern  nis_result * nis_remove_3_svc (ns_request *, struct svc_req *) __THROW; | 
 | 552 | #define NIS_IBLIST 5 | 
 | 553 | extern  nis_result * nis_iblist_3 (ib_request *, CLIENT *) __THROW; | 
 | 554 | extern  nis_result * nis_iblist_3_svc (ib_request *, struct svc_req *) __THROW; | 
 | 555 | #define NIS_IBADD 6 | 
 | 556 | extern  nis_result * nis_ibadd_3 (ib_request *, CLIENT *) __THROW; | 
 | 557 | extern  nis_result * nis_ibadd_3_svc (ib_request *, struct svc_req *) __THROW; | 
 | 558 | #define NIS_IBMODIFY 7 | 
 | 559 | extern  nis_result * nis_ibmodify_3 (ib_request *, CLIENT *) __THROW; | 
 | 560 | extern  nis_result * nis_ibmodify_3_svc (ib_request *, struct svc_req *) | 
 | 561 |      __THROW; | 
 | 562 | #define NIS_IBREMOVE 8 | 
 | 563 | extern  nis_result * nis_ibremove_3 (ib_request *, CLIENT *) __THROW; | 
 | 564 | extern  nis_result * nis_ibremove_3_svc (ib_request *, struct svc_req *) | 
 | 565 |      __THROW; | 
 | 566 | #define NIS_IBFIRST 9 | 
 | 567 | extern  nis_result * nis_ibfirst_3 (ib_request *, CLIENT *) __THROW; | 
 | 568 | extern  nis_result * nis_ibfirst_3_svc (ib_request *, struct svc_req *) | 
 | 569 |      __THROW; | 
 | 570 | #define NIS_IBNEXT 10 | 
 | 571 | extern  nis_result * nis_ibnext_3 (ib_request *, CLIENT *) __THROW; | 
 | 572 | extern  nis_result * nis_ibnext_3_svc (ib_request *, struct svc_req *) __THROW; | 
 | 573 | #define NIS_FINDDIRECTORY 12 | 
 | 574 | extern  fd_result * nis_finddirectory_3 (fd_args *, CLIENT *) __THROW; | 
 | 575 | extern  fd_result * nis_finddirectory_3_svc (fd_args *, | 
 | 576 | 					     struct svc_req *) __THROW; | 
 | 577 | #define NIS_STATUS 14 | 
 | 578 | extern  nis_taglist * nis_status_3 (nis_taglist *, CLIENT *) __THROW; | 
 | 579 | extern  nis_taglist * nis_status_3_svc (nis_taglist *, struct svc_req *) | 
 | 580 |      __THROW; | 
 | 581 | #define NIS_DUMPLOG 15 | 
 | 582 | extern  log_result * nis_dumplog_3 (dump_args *, CLIENT *) __THROW; | 
 | 583 | extern  log_result * nis_dumplog_3_svc (dump_args *, struct svc_req *) __THROW; | 
 | 584 | #define NIS_DUMP 16 | 
 | 585 | extern  log_result * nis_dump_3 (dump_args *, CLIENT *) __THROW; | 
 | 586 | extern  log_result * nis_dump_3_svc (dump_args *, struct svc_req *) __THROW; | 
 | 587 | #define NIS_CALLBACK 17 | 
 | 588 | extern  bool_t * nis_callback_3 (netobj *, CLIENT *) __THROW; | 
 | 589 | extern  bool_t * nis_callback_3_svc (netobj *, struct svc_req *) __THROW; | 
 | 590 | #define NIS_CPTIME 18 | 
 | 591 | extern  uint32_t * nis_cptime_3 (nis_name *, CLIENT *) __THROW; | 
 | 592 | extern  uint32_t * nis_cptime_3_svc (nis_name *, struct svc_req *) __THROW; | 
 | 593 | #define NIS_CHECKPOINT 19 | 
 | 594 | extern  cp_result * nis_checkpoint_3 (nis_name *, CLIENT *) __THROW; | 
 | 595 | extern  cp_result * nis_checkpoint_3_svc (nis_name *, struct svc_req *) | 
 | 596 |      __THROW; | 
 | 597 | #define NIS_PING 20 | 
 | 598 | extern  void * nis_ping_3 (ping_args *, CLIENT *) __THROW; | 
 | 599 | extern  void * nis_ping_3_svc (ping_args *, struct svc_req *) __THROW; | 
 | 600 | #define NIS_SERVSTATE 21 | 
 | 601 | extern  nis_taglist * nis_servstate_3 (nis_taglist *, CLIENT *) __THROW; | 
 | 602 | extern  nis_taglist * nis_servstate_3_svc (nis_taglist *, | 
 | 603 | 					   struct svc_req *) __THROW; | 
 | 604 | #define NIS_MKDIR 22 | 
 | 605 | extern  nis_error * nis_mkdir_3 (nis_name *, CLIENT *) __THROW; | 
 | 606 | extern  nis_error * nis_mkdir_3_svc (nis_name *, struct svc_req *) __THROW; | 
 | 607 | #define NIS_RMDIR 23 | 
 | 608 | extern  nis_error * nis_rmdir_3 (nis_name *, CLIENT *) __THROW; | 
 | 609 | extern  nis_error * nis_rmdir_3_svc (nis_name *, struct svc_req *) __THROW; | 
 | 610 | #define NIS_UPDKEYS 24 | 
 | 611 | extern  nis_error * nis_updkeys_3 (nis_name *, CLIENT *) __THROW; | 
 | 612 | extern  nis_error * nis_updkeys_3_svc (nis_name *, struct svc_req *) __THROW; | 
 | 613 |  | 
 | 614 | __END_DECLS | 
 | 615 |  | 
 | 616 | #endif /* ! _RPCSVC_NIS_H */ |