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