Move non-deprecated RPC-related functions from sunrpc to inet
[platform/upstream/glibc.git] / nis / rpcsvc / yp.x
1 /* @(#)yp.x     2.1 88/08/01 4.0 RPCSRC */
2
3 /*
4  * Copyright (c) 2010, Oracle America, Inc.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions are
8  * met:
9  *
10  *     * Redistributions of source code must retain the above copyright
11  *       notice, this list of conditions and the following disclaimer.
12  *     * Redistributions in binary form must reproduce the above
13  *       copyright notice, this list of conditions and the following
14  *       disclaimer in the documentation and/or other materials
15  *       provided with the distribution.
16  *     * Neither the name of the "Oracle America, Inc." nor the names of its
17  *       contributors may be used to endorse or promote products derived
18  *       from this software without specific prior written permission.
19  *
20  *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21  *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22  *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23  *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
24  *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
25  *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
26  *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
27  *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28  *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
29  *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
30  *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31  *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
32  */
33
34 /*
35  * Protocol description file for the Yellow Pages Service
36  */
37
38 const YPMAXRECORD = 1024;
39 const YPMAXDOMAIN = 64;
40 const YPMAXMAP = 64;
41 const YPMAXPEER = 64;
42
43
44 enum ypstat {
45         YP_TRUE         =  1,
46         YP_NOMORE       =  2,
47         YP_FALSE        =  0,
48         YP_NOMAP        = -1,
49         YP_NODOM        = -2,
50         YP_NOKEY        = -3,
51         YP_BADOP        = -4,
52         YP_BADDB        = -5,
53         YP_YPERR        = -6,
54         YP_BADARGS      = -7,
55         YP_VERS         = -8
56 };
57
58
59 enum ypxfrstat {
60         YPXFR_SUCC      =  1,
61         YPXFR_AGE       =  2,
62         YPXFR_NOMAP     = -1,
63         YPXFR_NODOM     = -2,
64         YPXFR_RSRC      = -3,
65         YPXFR_RPC       = -4,
66         YPXFR_MADDR     = -5,
67         YPXFR_YPERR     = -6,
68         YPXFR_BADARGS   = -7,
69         YPXFR_DBM       = -8,
70         YPXFR_FILE      = -9,
71         YPXFR_SKEW      = -10,
72         YPXFR_CLEAR     = -11,
73         YPXFR_FORCE     = -12,
74         YPXFR_XFRERR    = -13,
75         YPXFR_REFUSED   = -14
76 };
77
78
79 typedef string domainname<YPMAXDOMAIN>;
80 typedef string mapname<YPMAXMAP>;
81 typedef string peername<YPMAXPEER>;
82 typedef opaque keydat<YPMAXRECORD>;
83 typedef opaque valdat<YPMAXRECORD>;
84
85
86 struct ypmap_parms {
87         domainname domain;
88         mapname map;
89         unsigned int ordernum;
90         peername peer;
91 };
92
93 struct ypreq_key {
94         domainname domain;
95         mapname map;
96         keydat key;
97 };
98
99 struct ypreq_nokey {
100         domainname domain;
101         mapname map;
102 };
103
104 struct ypreq_xfr {
105         ypmap_parms map_parms;
106         unsigned int transid;
107         unsigned int prog;
108         unsigned int port;
109 };
110
111
112 struct ypresp_val {
113         ypstat stat;
114         valdat val;
115 };
116
117 struct ypresp_key_val {
118         ypstat stat;
119 #ifdef STUPID_SUN_BUG
120         /* This is the form as distributed by Sun.  But even the Sun NIS
121            servers expect the values in the other order.  So their
122            implementation somehow must change the order internally.  We
123            don't want to follow this bad example since the user should be
124            able to use rpcgen on this file.  */
125         keydat key;
126         valdat val;
127 #else
128         valdat val;
129         keydat key;
130 #endif
131 };
132
133
134 struct ypresp_master {
135         ypstat stat;
136         peername peer;
137 };
138
139 struct ypresp_order {
140         ypstat stat;
141         unsigned int ordernum;
142 };
143
144 union ypresp_all switch (bool more) {
145 case TRUE:
146         ypresp_key_val val;
147 case FALSE:
148         void;
149 };
150
151 struct ypresp_xfr {
152         unsigned int transid;
153         ypxfrstat xfrstat;
154 };
155
156 struct ypmaplist {
157         mapname map;
158         ypmaplist *next;
159 };
160
161 struct ypresp_maplist {
162         ypstat stat;
163         ypmaplist *maps;
164 };
165
166 enum yppush_status {
167         YPPUSH_SUCC     =  1,   /* Success */
168         YPPUSH_AGE      =  2,   /* Master's version not newer */
169         YPPUSH_NOMAP    = -1,   /* Can't find server for map */
170         YPPUSH_NODOM    = -2,   /* Domain not supported */
171         YPPUSH_RSRC     = -3,   /* Local resource alloc failure */
172         YPPUSH_RPC      = -4,   /* RPC failure talking to server */
173         YPPUSH_MADDR    = -5,   /* Can't get master address */
174         YPPUSH_YPERR    = -6,   /* YP server/map db error */
175         YPPUSH_BADARGS  = -7,   /* Request arguments bad */
176         YPPUSH_DBM      = -8,   /* Local dbm operation failed */
177         YPPUSH_FILE     = -9,   /* Local file I/O operation failed */
178         YPPUSH_SKEW     = -10,  /* Map version skew during transfer */
179         YPPUSH_CLEAR    = -11,  /* Can't send "Clear" req to local ypserv */
180         YPPUSH_FORCE    = -12,  /* No local order number in map  use -f flag. */
181         YPPUSH_XFRERR   = -13,  /* ypxfr error */
182         YPPUSH_REFUSED  = -14   /* Transfer request refused by ypserv */
183 };
184
185 struct yppushresp_xfr {
186         unsigned transid;
187         yppush_status status;
188 };
189
190 /*
191  * Response structure and overall result status codes.  Success and failure
192  * represent two separate response message types.
193  */
194
195 enum ypbind_resptype {
196         YPBIND_SUCC_VAL = 1,
197         YPBIND_FAIL_VAL = 2
198 };
199
200 struct ypbind_binding {
201     opaque ypbind_binding_addr[4]; /* In network order */
202     opaque ypbind_binding_port[2]; /* In network order */
203 };
204
205 union ypbind_resp switch (ypbind_resptype ypbind_status) {
206 case YPBIND_FAIL_VAL:
207         unsigned ypbind_error;
208 case YPBIND_SUCC_VAL:
209         ypbind_binding ypbind_bindinfo;
210 };
211
212 /* Detailed failure reason codes for response field ypbind_error*/
213
214 const YPBIND_ERR_ERR    = 1;    /* Internal error */
215 const YPBIND_ERR_NOSERV = 2;    /* No bound server for passed domain */
216 const YPBIND_ERR_RESC   = 3;    /* System resource allocation failure */
217
218
219 /*
220  * Request data structure for ypbind "Set domain" procedure.
221  */
222 struct ypbind_setdom {
223         domainname ypsetdom_domain;
224         ypbind_binding ypsetdom_binding;
225         unsigned ypsetdom_vers;
226 };
227
228
229 /*
230  * YP access protocol
231  */
232 program YPPROG {
233         version YPVERS {
234                 void
235                 YPPROC_NULL(void) = 0;
236
237                 bool
238                 YPPROC_DOMAIN(domainname) = 1;
239
240                 bool
241                 YPPROC_DOMAIN_NONACK(domainname) = 2;
242
243                 ypresp_val
244                 YPPROC_MATCH(ypreq_key) = 3;
245
246                 ypresp_key_val
247                 YPPROC_FIRST(ypreq_key) = 4;
248
249                 ypresp_key_val
250                 YPPROC_NEXT(ypreq_key) = 5;
251
252                 ypresp_xfr
253                 YPPROC_XFR(ypreq_xfr) = 6;
254
255                 void
256                 YPPROC_CLEAR(void) = 7;
257
258                 ypresp_all
259                 YPPROC_ALL(ypreq_nokey) = 8;
260
261                 ypresp_master
262                 YPPROC_MASTER(ypreq_nokey) = 9;
263
264                 ypresp_order
265                 YPPROC_ORDER(ypreq_nokey) = 10;
266
267                 ypresp_maplist
268                 YPPROC_MAPLIST(domainname) = 11;
269         } = 2;
270 } = 100004;
271
272
273 /*
274  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
275  */
276 program YPPUSH_XFRRESPPROG {
277         version YPPUSH_XFRRESPVERS {
278                 void
279                 YPPUSHPROC_NULL(void) = 0;
280
281 #ifdef STUPID_SUN_BUG
282                 /* This is the form as distributed by Sun.  But even
283                    the Sun NIS servers expect the values in the other
284                    order.  So their implementation somehow must change
285                    the order internally.  We don't want to follow this
286                    bad example since the user should be able to use
287                    rpcgen on this file.  */
288                 yppushresp_xfr
289                 YPPUSHPROC_XFRRESP(void) = 1;
290 #else
291                 void
292                 YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
293 #endif
294         } = 1;
295 } = 0x40000000; /* transient: could be anything up to 0x5fffffff */
296
297 /*
298  * YP binding protocol
299  */
300 program YPBINDPROG {
301         version YPBINDVERS {
302                 void
303                 YPBINDPROC_NULL(void) = 0;
304
305                 ypbind_resp
306                 YPBINDPROC_DOMAIN(domainname) = 1;
307
308                 void
309                 YPBINDPROC_SETDOM(ypbind_setdom) = 2;
310         } = 2;
311 } = 100007;