xref: /utopia/UTPA2-700.0.x/projects/tools/lint/mips-linux-gnu_include/rpcsvc/yp.x (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1*53ee8cc1Swenshuai.xi /* @(#)yp.x	2.1 88/08/01 4.0 RPCSRC */
2*53ee8cc1Swenshuai.xi 
3*53ee8cc1Swenshuai.xi /*
4*53ee8cc1Swenshuai.xi  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
5*53ee8cc1Swenshuai.xi  * unrestricted use provided that this legend is included on all tape
6*53ee8cc1Swenshuai.xi  * media and as a part of the software program in whole or part.  Users
7*53ee8cc1Swenshuai.xi  * may copy or modify Sun RPC without charge, but are not authorized
8*53ee8cc1Swenshuai.xi  * to license or distribute it to anyone else except as part of a product or
9*53ee8cc1Swenshuai.xi  * program developed by the user.
10*53ee8cc1Swenshuai.xi  *
11*53ee8cc1Swenshuai.xi  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
12*53ee8cc1Swenshuai.xi  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
13*53ee8cc1Swenshuai.xi  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
14*53ee8cc1Swenshuai.xi  *
15*53ee8cc1Swenshuai.xi  * Sun RPC is provided with no support and without any obligation on the
16*53ee8cc1Swenshuai.xi  * part of Sun Microsystems, Inc. to assist in its use, correction,
17*53ee8cc1Swenshuai.xi  * modification or enhancement.
18*53ee8cc1Swenshuai.xi  *
19*53ee8cc1Swenshuai.xi  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
20*53ee8cc1Swenshuai.xi  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
21*53ee8cc1Swenshuai.xi  * OR ANY PART THEREOF.
22*53ee8cc1Swenshuai.xi  *
23*53ee8cc1Swenshuai.xi  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
24*53ee8cc1Swenshuai.xi  * or profits or other special, indirect and consequential damages, even if
25*53ee8cc1Swenshuai.xi  * Sun has been advised of the possibility of such damages.
26*53ee8cc1Swenshuai.xi  *
27*53ee8cc1Swenshuai.xi  * Sun Microsystems, Inc.
28*53ee8cc1Swenshuai.xi  * 2550 Garcia Avenue
29*53ee8cc1Swenshuai.xi  * Mountain View, California  94043
30*53ee8cc1Swenshuai.xi  */
31*53ee8cc1Swenshuai.xi 
32*53ee8cc1Swenshuai.xi /*
33*53ee8cc1Swenshuai.xi  * Protocol description file for the Yellow Pages Service
34*53ee8cc1Swenshuai.xi  */
35*53ee8cc1Swenshuai.xi 
36*53ee8cc1Swenshuai.xi const YPMAXRECORD = 1024;
37*53ee8cc1Swenshuai.xi const YPMAXDOMAIN = 64;
38*53ee8cc1Swenshuai.xi const YPMAXMAP = 64;
39*53ee8cc1Swenshuai.xi const YPMAXPEER = 64;
40*53ee8cc1Swenshuai.xi 
41*53ee8cc1Swenshuai.xi 
42*53ee8cc1Swenshuai.xi enum ypstat {
43*53ee8cc1Swenshuai.xi 	YP_TRUE		=  1,
44*53ee8cc1Swenshuai.xi 	YP_NOMORE	=  2,
45*53ee8cc1Swenshuai.xi 	YP_FALSE	=  0,
46*53ee8cc1Swenshuai.xi 	YP_NOMAP	= -1,
47*53ee8cc1Swenshuai.xi 	YP_NODOM	= -2,
48*53ee8cc1Swenshuai.xi 	YP_NOKEY	= -3,
49*53ee8cc1Swenshuai.xi 	YP_BADOP	= -4,
50*53ee8cc1Swenshuai.xi 	YP_BADDB	= -5,
51*53ee8cc1Swenshuai.xi 	YP_YPERR	= -6,
52*53ee8cc1Swenshuai.xi 	YP_BADARGS	= -7,
53*53ee8cc1Swenshuai.xi 	YP_VERS		= -8
54*53ee8cc1Swenshuai.xi };
55*53ee8cc1Swenshuai.xi 
56*53ee8cc1Swenshuai.xi 
57*53ee8cc1Swenshuai.xi enum ypxfrstat {
58*53ee8cc1Swenshuai.xi 	YPXFR_SUCC	=  1,
59*53ee8cc1Swenshuai.xi 	YPXFR_AGE	=  2,
60*53ee8cc1Swenshuai.xi 	YPXFR_NOMAP	= -1,
61*53ee8cc1Swenshuai.xi 	YPXFR_NODOM	= -2,
62*53ee8cc1Swenshuai.xi 	YPXFR_RSRC	= -3,
63*53ee8cc1Swenshuai.xi 	YPXFR_RPC	= -4,
64*53ee8cc1Swenshuai.xi 	YPXFR_MADDR	= -5,
65*53ee8cc1Swenshuai.xi 	YPXFR_YPERR	= -6,
66*53ee8cc1Swenshuai.xi 	YPXFR_BADARGS	= -7,
67*53ee8cc1Swenshuai.xi 	YPXFR_DBM	= -8,
68*53ee8cc1Swenshuai.xi 	YPXFR_FILE	= -9,
69*53ee8cc1Swenshuai.xi 	YPXFR_SKEW	= -10,
70*53ee8cc1Swenshuai.xi 	YPXFR_CLEAR	= -11,
71*53ee8cc1Swenshuai.xi 	YPXFR_FORCE	= -12,
72*53ee8cc1Swenshuai.xi 	YPXFR_XFRERR	= -13,
73*53ee8cc1Swenshuai.xi 	YPXFR_REFUSED	= -14
74*53ee8cc1Swenshuai.xi };
75*53ee8cc1Swenshuai.xi 
76*53ee8cc1Swenshuai.xi 
77*53ee8cc1Swenshuai.xi typedef string domainname<YPMAXDOMAIN>;
78*53ee8cc1Swenshuai.xi typedef string mapname<YPMAXMAP>;
79*53ee8cc1Swenshuai.xi typedef string peername<YPMAXPEER>;
80*53ee8cc1Swenshuai.xi typedef opaque keydat<YPMAXRECORD>;
81*53ee8cc1Swenshuai.xi typedef opaque valdat<YPMAXRECORD>;
82*53ee8cc1Swenshuai.xi 
83*53ee8cc1Swenshuai.xi 
84*53ee8cc1Swenshuai.xi struct ypmap_parms {
85*53ee8cc1Swenshuai.xi 	domainname domain;
86*53ee8cc1Swenshuai.xi 	mapname map;
87*53ee8cc1Swenshuai.xi 	unsigned int ordernum;
88*53ee8cc1Swenshuai.xi 	peername peer;
89*53ee8cc1Swenshuai.xi };
90*53ee8cc1Swenshuai.xi 
91*53ee8cc1Swenshuai.xi struct ypreq_key {
92*53ee8cc1Swenshuai.xi 	domainname domain;
93*53ee8cc1Swenshuai.xi 	mapname map;
94*53ee8cc1Swenshuai.xi 	keydat key;
95*53ee8cc1Swenshuai.xi };
96*53ee8cc1Swenshuai.xi 
97*53ee8cc1Swenshuai.xi struct ypreq_nokey {
98*53ee8cc1Swenshuai.xi 	domainname domain;
99*53ee8cc1Swenshuai.xi 	mapname map;
100*53ee8cc1Swenshuai.xi };
101*53ee8cc1Swenshuai.xi 
102*53ee8cc1Swenshuai.xi struct ypreq_xfr {
103*53ee8cc1Swenshuai.xi 	ypmap_parms map_parms;
104*53ee8cc1Swenshuai.xi 	unsigned int transid;
105*53ee8cc1Swenshuai.xi 	unsigned int prog;
106*53ee8cc1Swenshuai.xi 	unsigned int port;
107*53ee8cc1Swenshuai.xi };
108*53ee8cc1Swenshuai.xi 
109*53ee8cc1Swenshuai.xi 
110*53ee8cc1Swenshuai.xi struct ypresp_val {
111*53ee8cc1Swenshuai.xi 	ypstat stat;
112*53ee8cc1Swenshuai.xi 	valdat val;
113*53ee8cc1Swenshuai.xi };
114*53ee8cc1Swenshuai.xi 
115*53ee8cc1Swenshuai.xi struct ypresp_key_val {
116*53ee8cc1Swenshuai.xi 	ypstat stat;
117*53ee8cc1Swenshuai.xi #ifdef STUPID_SUN_BUG
118*53ee8cc1Swenshuai.xi 	/* This is the form as distributed by Sun.  But even the Sun NIS
119*53ee8cc1Swenshuai.xi 	   servers expect the values in the other order.  So their
120*53ee8cc1Swenshuai.xi 	   implementation somehow must change the order internally.  We
121*53ee8cc1Swenshuai.xi 	   don't want to follow this bad example since the user should be
122*53ee8cc1Swenshuai.xi 	   able to use rpcgen on this file.  */
123*53ee8cc1Swenshuai.xi 	keydat key;
124*53ee8cc1Swenshuai.xi 	valdat val;
125*53ee8cc1Swenshuai.xi #else
126*53ee8cc1Swenshuai.xi 	valdat val;
127*53ee8cc1Swenshuai.xi 	keydat key;
128*53ee8cc1Swenshuai.xi #endif
129*53ee8cc1Swenshuai.xi };
130*53ee8cc1Swenshuai.xi 
131*53ee8cc1Swenshuai.xi 
132*53ee8cc1Swenshuai.xi struct ypresp_master {
133*53ee8cc1Swenshuai.xi 	ypstat stat;
134*53ee8cc1Swenshuai.xi 	peername peer;
135*53ee8cc1Swenshuai.xi };
136*53ee8cc1Swenshuai.xi 
137*53ee8cc1Swenshuai.xi struct ypresp_order {
138*53ee8cc1Swenshuai.xi 	ypstat stat;
139*53ee8cc1Swenshuai.xi 	unsigned int ordernum;
140*53ee8cc1Swenshuai.xi };
141*53ee8cc1Swenshuai.xi 
142*53ee8cc1Swenshuai.xi union ypresp_all switch (bool more) {
143*53ee8cc1Swenshuai.xi case TRUE:
144*53ee8cc1Swenshuai.xi 	ypresp_key_val val;
145*53ee8cc1Swenshuai.xi case FALSE:
146*53ee8cc1Swenshuai.xi 	void;
147*53ee8cc1Swenshuai.xi };
148*53ee8cc1Swenshuai.xi 
149*53ee8cc1Swenshuai.xi struct ypresp_xfr {
150*53ee8cc1Swenshuai.xi 	unsigned int transid;
151*53ee8cc1Swenshuai.xi 	ypxfrstat xfrstat;
152*53ee8cc1Swenshuai.xi };
153*53ee8cc1Swenshuai.xi 
154*53ee8cc1Swenshuai.xi struct ypmaplist {
155*53ee8cc1Swenshuai.xi 	mapname map;
156*53ee8cc1Swenshuai.xi 	ypmaplist *next;
157*53ee8cc1Swenshuai.xi };
158*53ee8cc1Swenshuai.xi 
159*53ee8cc1Swenshuai.xi struct ypresp_maplist {
160*53ee8cc1Swenshuai.xi 	ypstat stat;
161*53ee8cc1Swenshuai.xi 	ypmaplist *maps;
162*53ee8cc1Swenshuai.xi };
163*53ee8cc1Swenshuai.xi 
164*53ee8cc1Swenshuai.xi enum yppush_status {
165*53ee8cc1Swenshuai.xi 	YPPUSH_SUCC	=  1,	/* Success */
166*53ee8cc1Swenshuai.xi 	YPPUSH_AGE 	=  2,	/* Master's version not newer */
167*53ee8cc1Swenshuai.xi 	YPPUSH_NOMAP	= -1,	/* Can't find server for map */
168*53ee8cc1Swenshuai.xi 	YPPUSH_NODOM	= -2,	/* Domain not supported */
169*53ee8cc1Swenshuai.xi 	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */
170*53ee8cc1Swenshuai.xi 	YPPUSH_RPC	= -4,	/* RPC failure talking to server */
171*53ee8cc1Swenshuai.xi 	YPPUSH_MADDR 	= -5,	/* Can't get master address */
172*53ee8cc1Swenshuai.xi 	YPPUSH_YPERR	= -6,	/* YP server/map db error */
173*53ee8cc1Swenshuai.xi 	YPPUSH_BADARGS	= -7,	/* Request arguments bad */
174*53ee8cc1Swenshuai.xi 	YPPUSH_DBM	= -8,	/* Local dbm operation failed */
175*53ee8cc1Swenshuai.xi 	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */
176*53ee8cc1Swenshuai.xi 	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */
177*53ee8cc1Swenshuai.xi 	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */
178*53ee8cc1Swenshuai.xi 	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */
179*53ee8cc1Swenshuai.xi 	YPPUSH_XFRERR 	= -13,	/* ypxfr error */
180*53ee8cc1Swenshuai.xi 	YPPUSH_REFUSED	= -14 	/* Transfer request refused by ypserv */
181*53ee8cc1Swenshuai.xi };
182*53ee8cc1Swenshuai.xi 
183*53ee8cc1Swenshuai.xi struct yppushresp_xfr {
184*53ee8cc1Swenshuai.xi 	unsigned transid;
185*53ee8cc1Swenshuai.xi 	yppush_status status;
186*53ee8cc1Swenshuai.xi };
187*53ee8cc1Swenshuai.xi 
188*53ee8cc1Swenshuai.xi /*
189*53ee8cc1Swenshuai.xi  * Response structure and overall result status codes.  Success and failure
190*53ee8cc1Swenshuai.xi  * represent two separate response message types.
191*53ee8cc1Swenshuai.xi  */
192*53ee8cc1Swenshuai.xi 
193*53ee8cc1Swenshuai.xi enum ypbind_resptype {
194*53ee8cc1Swenshuai.xi 	YPBIND_SUCC_VAL = 1,
195*53ee8cc1Swenshuai.xi 	YPBIND_FAIL_VAL = 2
196*53ee8cc1Swenshuai.xi };
197*53ee8cc1Swenshuai.xi 
198*53ee8cc1Swenshuai.xi struct ypbind_binding {
199*53ee8cc1Swenshuai.xi     opaque ypbind_binding_addr[4]; /* In network order */
200*53ee8cc1Swenshuai.xi     opaque ypbind_binding_port[2]; /* In network order */
201*53ee8cc1Swenshuai.xi };
202*53ee8cc1Swenshuai.xi 
203*53ee8cc1Swenshuai.xi union ypbind_resp switch (ypbind_resptype ypbind_status) {
204*53ee8cc1Swenshuai.xi case YPBIND_FAIL_VAL:
205*53ee8cc1Swenshuai.xi         unsigned ypbind_error;
206*53ee8cc1Swenshuai.xi case YPBIND_SUCC_VAL:
207*53ee8cc1Swenshuai.xi         ypbind_binding ypbind_bindinfo;
208*53ee8cc1Swenshuai.xi };
209*53ee8cc1Swenshuai.xi 
210*53ee8cc1Swenshuai.xi /* Detailed failure reason codes for response field ypbind_error*/
211*53ee8cc1Swenshuai.xi 
212*53ee8cc1Swenshuai.xi const YPBIND_ERR_ERR    = 1;	/* Internal error */
213*53ee8cc1Swenshuai.xi const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
214*53ee8cc1Swenshuai.xi const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
215*53ee8cc1Swenshuai.xi 
216*53ee8cc1Swenshuai.xi 
217*53ee8cc1Swenshuai.xi /*
218*53ee8cc1Swenshuai.xi  * Request data structure for ypbind "Set domain" procedure.
219*53ee8cc1Swenshuai.xi  */
220*53ee8cc1Swenshuai.xi struct ypbind_setdom {
221*53ee8cc1Swenshuai.xi 	domainname ypsetdom_domain;
222*53ee8cc1Swenshuai.xi 	ypbind_binding ypsetdom_binding;
223*53ee8cc1Swenshuai.xi 	unsigned ypsetdom_vers;
224*53ee8cc1Swenshuai.xi };
225*53ee8cc1Swenshuai.xi 
226*53ee8cc1Swenshuai.xi 
227*53ee8cc1Swenshuai.xi /*
228*53ee8cc1Swenshuai.xi  * YP access protocol
229*53ee8cc1Swenshuai.xi  */
230*53ee8cc1Swenshuai.xi program YPPROG {
231*53ee8cc1Swenshuai.xi 	version YPVERS {
232*53ee8cc1Swenshuai.xi 		void
233*53ee8cc1Swenshuai.xi 		YPPROC_NULL(void) = 0;
234*53ee8cc1Swenshuai.xi 
235*53ee8cc1Swenshuai.xi 		bool
236*53ee8cc1Swenshuai.xi 		YPPROC_DOMAIN(domainname) = 1;
237*53ee8cc1Swenshuai.xi 
238*53ee8cc1Swenshuai.xi 		bool
239*53ee8cc1Swenshuai.xi 		YPPROC_DOMAIN_NONACK(domainname) = 2;
240*53ee8cc1Swenshuai.xi 
241*53ee8cc1Swenshuai.xi 		ypresp_val
242*53ee8cc1Swenshuai.xi 		YPPROC_MATCH(ypreq_key) = 3;
243*53ee8cc1Swenshuai.xi 
244*53ee8cc1Swenshuai.xi 		ypresp_key_val
245*53ee8cc1Swenshuai.xi 		YPPROC_FIRST(ypreq_key) = 4;
246*53ee8cc1Swenshuai.xi 
247*53ee8cc1Swenshuai.xi 		ypresp_key_val
248*53ee8cc1Swenshuai.xi 		YPPROC_NEXT(ypreq_key) = 5;
249*53ee8cc1Swenshuai.xi 
250*53ee8cc1Swenshuai.xi 		ypresp_xfr
251*53ee8cc1Swenshuai.xi 		YPPROC_XFR(ypreq_xfr) = 6;
252*53ee8cc1Swenshuai.xi 
253*53ee8cc1Swenshuai.xi 		void
254*53ee8cc1Swenshuai.xi 		YPPROC_CLEAR(void) = 7;
255*53ee8cc1Swenshuai.xi 
256*53ee8cc1Swenshuai.xi 		ypresp_all
257*53ee8cc1Swenshuai.xi 		YPPROC_ALL(ypreq_nokey) = 8;
258*53ee8cc1Swenshuai.xi 
259*53ee8cc1Swenshuai.xi 		ypresp_master
260*53ee8cc1Swenshuai.xi 		YPPROC_MASTER(ypreq_nokey) = 9;
261*53ee8cc1Swenshuai.xi 
262*53ee8cc1Swenshuai.xi 		ypresp_order
263*53ee8cc1Swenshuai.xi 		YPPROC_ORDER(ypreq_nokey) = 10;
264*53ee8cc1Swenshuai.xi 
265*53ee8cc1Swenshuai.xi 		ypresp_maplist
266*53ee8cc1Swenshuai.xi 		YPPROC_MAPLIST(domainname) = 11;
267*53ee8cc1Swenshuai.xi 	} = 2;
268*53ee8cc1Swenshuai.xi } = 100004;
269*53ee8cc1Swenshuai.xi 
270*53ee8cc1Swenshuai.xi 
271*53ee8cc1Swenshuai.xi /*
272*53ee8cc1Swenshuai.xi  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
273*53ee8cc1Swenshuai.xi  */
274*53ee8cc1Swenshuai.xi program YPPUSH_XFRRESPPROG {
275*53ee8cc1Swenshuai.xi 	version YPPUSH_XFRRESPVERS {
276*53ee8cc1Swenshuai.xi 		void
277*53ee8cc1Swenshuai.xi 		YPPUSHPROC_NULL(void) = 0;
278*53ee8cc1Swenshuai.xi 
279*53ee8cc1Swenshuai.xi #ifdef STUPID_SUN_BUG
280*53ee8cc1Swenshuai.xi 		/* This is the form as distributed by Sun.  But even
281*53ee8cc1Swenshuai.xi 		   the Sun NIS servers expect the values in the other
282*53ee8cc1Swenshuai.xi 		   order.  So their implementation somehow must change
283*53ee8cc1Swenshuai.xi 		   the order internally.  We don't want to follow this
284*53ee8cc1Swenshuai.xi 		   bad example since the user should be able to use
285*53ee8cc1Swenshuai.xi 		   rpcgen on this file.  */
286*53ee8cc1Swenshuai.xi 		yppushresp_xfr
287*53ee8cc1Swenshuai.xi 		YPPUSHPROC_XFRRESP(void) = 1;
288*53ee8cc1Swenshuai.xi #else
289*53ee8cc1Swenshuai.xi 		void
290*53ee8cc1Swenshuai.xi 		YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
291*53ee8cc1Swenshuai.xi #endif
292*53ee8cc1Swenshuai.xi 	} = 1;
293*53ee8cc1Swenshuai.xi } = 0x40000000;	/* transient: could be anything up to 0x5fffffff */
294*53ee8cc1Swenshuai.xi 
295*53ee8cc1Swenshuai.xi /*
296*53ee8cc1Swenshuai.xi  * YP binding protocol
297*53ee8cc1Swenshuai.xi  */
298*53ee8cc1Swenshuai.xi program YPBINDPROG {
299*53ee8cc1Swenshuai.xi 	version YPBINDVERS {
300*53ee8cc1Swenshuai.xi 		void
301*53ee8cc1Swenshuai.xi 		YPBINDPROC_NULL(void) = 0;
302*53ee8cc1Swenshuai.xi 
303*53ee8cc1Swenshuai.xi 		ypbind_resp
304*53ee8cc1Swenshuai.xi 		YPBINDPROC_DOMAIN(domainname) = 1;
305*53ee8cc1Swenshuai.xi 
306*53ee8cc1Swenshuai.xi 		void
307*53ee8cc1Swenshuai.xi 		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
308*53ee8cc1Swenshuai.xi 	} = 2;
309*53ee8cc1Swenshuai.xi } = 100007;
310