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