struct stat is not posix conform
[glibc.git] / nis / rpcsvc / yp.x
blob269ae6f6063ec6f24dad13f52b7f86d9635c14b0
1 /* @(#)yp.x     2.1 88/08/01 4.0 RPCSRC */
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  */
35  * Protocol description file for the Yellow Pages Service
36  */
38 const YPMAXRECORD = 1024;
39 const YPMAXDOMAIN = 64;
40 const YPMAXMAP = 64;
41 const YPMAXPEER = 64;
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
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
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>;
86 struct ypmap_parms {
87         domainname domain;
88         mapname map;
89         unsigned int ordernum;
90         peername peer;
93 struct ypreq_key {
94         domainname domain;
95         mapname map;
96         keydat key;
99 struct ypreq_nokey {
100         domainname domain;
101         mapname map;
104 struct ypreq_xfr {
105         ypmap_parms map_parms;
106         unsigned int transid;
107         unsigned int prog;
108         unsigned int port;
112 struct ypresp_val {
113         ypstat stat;
114         valdat val;
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
134 struct ypresp_master {
135         ypstat stat;
136         peername peer;
139 struct ypresp_order {
140         ypstat stat;
141         unsigned int ordernum;
144 union ypresp_all switch (bool more) {
145 case TRUE:
146         ypresp_key_val val;
147 case FALSE:
148         void;
151 struct ypresp_xfr {
152         unsigned int transid;
153         ypxfrstat xfrstat;
156 struct ypmaplist {
157         mapname map;
158         ypmaplist *next;
161 struct ypresp_maplist {
162         ypstat stat;
163         ypmaplist *maps;
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 */
185 struct yppushresp_xfr {
186         unsigned transid;
187         yppush_status status;
191  * Response structure and overall result status codes.  Success and failure
192  * represent two separate response message types.
193  */
195 enum ypbind_resptype {
196         YPBIND_SUCC_VAL = 1,
197         YPBIND_FAIL_VAL = 2
200 struct ypbind_binding {
201     opaque ypbind_binding_addr[4]; /* In network order */
202     opaque ypbind_binding_port[2]; /* In network order */
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;
212 /* Detailed failure reason codes for response field ypbind_error*/
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 */
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;
230  * YP access protocol
231  */
232 program YPPROG {
233         version YPVERS {
234                 void
235                 YPPROC_NULL(void) = 0;
237                 bool
238                 YPPROC_DOMAIN(domainname) = 1;
240                 bool
241                 YPPROC_DOMAIN_NONACK(domainname) = 2;
243                 ypresp_val
244                 YPPROC_MATCH(ypreq_key) = 3;
246                 ypresp_key_val
247                 YPPROC_FIRST(ypreq_key) = 4;
249                 ypresp_key_val
250                 YPPROC_NEXT(ypreq_key) = 5;
252                 ypresp_xfr
253                 YPPROC_XFR(ypreq_xfr) = 6;
255                 void
256                 YPPROC_CLEAR(void) = 7;
258                 ypresp_all
259                 YPPROC_ALL(ypreq_nokey) = 8;
261                 ypresp_master
262                 YPPROC_MASTER(ypreq_nokey) = 9;
264                 ypresp_order
265                 YPPROC_ORDER(ypreq_nokey) = 10;
267                 ypresp_maplist
268                 YPPROC_MAPLIST(domainname) = 11;
269         } = 2;
270 } = 100004;
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;
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 */
298  * YP binding protocol
299  */
300 program YPBINDPROG {
301         version YPBINDVERS {
302                 void
303                 YPBINDPROC_NULL(void) = 0;
305                 ypbind_resp
306                 YPBINDPROC_DOMAIN(domainname) = 1;
308                 void
309                 YPBINDPROC_SETDOM(ypbind_setdom) = 2;
310         } = 2;
311 } = 100007;