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