]> CyberLeo.Net >> Repos - FreeBSD/releng/10.0.git/blob - include/rpcsvc/yp.x
- Copy stable/10 (r259064) to releng/10.0 as part of the
[FreeBSD/releng/10.0.git] / include / rpcsvc / yp.x
1 /* @(#)yp.x     2.1 88/08/01 4.0 RPCSRC */
2
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  */
31
32 /*
33  * Protocol description file for the Yellow Pages Service
34  */
35
36 #ifndef RPC_HDR
37 %#include <sys/cdefs.h>
38 %__FBSDID("$FreeBSD$");
39 #endif
40
41 const YPMAXRECORD = 1024;
42 const YPMAXDOMAIN = 64;
43 const YPMAXMAP = 64;
44 const YPMAXPEER = 64;
45
46
47 enum ypstat {
48         YP_TRUE         =  1,
49         YP_NOMORE       =  2,
50         YP_FALSE        =  0,
51         YP_NOMAP        = -1,
52         YP_NODOM        = -2,
53         YP_NOKEY        = -3,
54         YP_BADOP        = -4,
55         YP_BADDB        = -5,
56         YP_YPERR        = -6,
57         YP_BADARGS      = -7,
58         YP_VERS         = -8
59 };
60
61
62 enum ypxfrstat {
63         YPXFR_SUCC      =  1,
64         YPXFR_AGE       =  2,
65         YPXFR_NOMAP     = -1,
66         YPXFR_NODOM     = -2,
67         YPXFR_RSRC      = -3,
68         YPXFR_RPC       = -4,
69         YPXFR_MADDR     = -5,
70         YPXFR_YPERR     = -6,
71         YPXFR_BADARGS   = -7,
72         YPXFR_DBM       = -8,
73         YPXFR_FILE      = -9,
74         YPXFR_SKEW      = -10,
75         YPXFR_CLEAR     = -11,
76         YPXFR_FORCE     = -12,
77         YPXFR_XFRERR    = -13,
78         YPXFR_REFUSED   = -14
79 };
80
81
82 typedef string domainname<YPMAXDOMAIN>;
83 typedef string mapname<YPMAXMAP>;
84 typedef string peername<YPMAXPEER>;
85 typedef opaque keydat<YPMAXRECORD>;
86 typedef opaque valdat<YPMAXRECORD>;
87
88
89 struct ypmap_parms {
90         domainname domain;      
91         mapname map;
92         unsigned int ordernum;
93         peername peer;
94 };
95
96 struct ypreq_key {
97         domainname domain;
98         mapname map;
99         keydat key;
100 };
101
102 struct ypreq_nokey {
103         domainname domain;      
104         mapname map;
105 };
106         
107 struct ypreq_xfr {
108         ypmap_parms map_parms;
109         unsigned int transid;
110         unsigned int prog;
111         unsigned int port;
112 };
113
114
115 struct ypresp_val {
116         ypstat stat;
117         valdat val;
118 };
119
120 struct ypresp_key_val {
121         ypstat stat;
122 #ifdef STUPID_SUN_BUG /* These are backwards */
123         keydat key;
124         valdat val;
125 #else
126         valdat val;
127         keydat key;
128 #endif
129 };
130
131
132 struct ypresp_master {
133         ypstat stat;    
134         peername peer;
135 };
136
137 struct ypresp_order {
138         ypstat stat;
139         unsigned int ordernum;
140 };
141
142 union ypresp_all switch (bool more) {
143 case TRUE:
144         ypresp_key_val val;
145 case FALSE:
146         void;
147 };
148
149 struct ypresp_xfr {
150         unsigned int transid;
151         ypxfrstat xfrstat;
152 };
153
154 struct ypmaplist {
155         mapname map;
156         ypmaplist *next;
157 };
158
159 struct ypresp_maplist {
160         ypstat stat;
161         ypmaplist *maps;
162 };
163
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 */
181 };
182
183 struct yppushresp_xfr {
184         unsigned transid;
185         yppush_status status;
186 };
187
188 /*
189  * Response structure and overall result status codes.  Success and failure
190  * represent two separate response message types.
191  */
192  
193 enum ypbind_resptype {
194         YPBIND_SUCC_VAL = 1, 
195         YPBIND_FAIL_VAL = 2
196 };
197  
198 struct ypbind_binding {
199     opaque ypbind_binding_addr[4]; /* In network order */
200     opaque ypbind_binding_port[2]; /* In network order */
201 };   
202
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;
208 };     
209
210 /* Detailed failure reason codes for response field ypbind_error*/
211  
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 */
215  
216  
217 /*
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;
224 };
225
226
227 /*
228  * NIS v1 support for backwards compatibility
229  */
230 enum ypreqtype {
231         YPREQ_KEY = 1,
232         YPREQ_NOKEY = 2,
233         YPREQ_MAP_PARMS = 3
234 };
235
236 enum ypresptype {
237         YPRESP_VAL = 1,
238         YPRESP_KEY_VAL = 2,
239         YPRESP_MAP_PARMS = 3
240 };
241
242 union yprequest switch (ypreqtype yp_reqtype) {
243 case YPREQ_KEY:
244         ypreq_key yp_req_keytype;
245 case YPREQ_NOKEY:
246         ypreq_nokey yp_req_nokeytype;
247 case YPREQ_MAP_PARMS:
248         ypmap_parms yp_req_map_parmstype;
249 };
250
251 union ypresponse switch (ypresptype yp_resptype) {
252 case YPRESP_VAL:
253         ypresp_val yp_resp_valtype;
254 case YPRESP_KEY_VAL:
255         ypresp_key_val yp_resp_key_valtype;
256 case YPRESP_MAP_PARMS:
257         ypmap_parms yp_resp_map_parmstype;
258 };
259
260 #if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY)
261 /*
262  * YP access protocol
263  */
264 program YPPROG {
265 /*
266  * NIS v1 support for backwards compatibility
267  */
268         version YPOLDVERS {
269                 void
270                 YPOLDPROC_NULL(void) = 0;
271
272                 bool
273                 YPOLDPROC_DOMAIN(domainname) = 1;
274
275                 bool
276                 YPOLDPROC_DOMAIN_NONACK(domainname) = 2;
277
278                 ypresponse
279                 YPOLDPROC_MATCH(yprequest) = 3;
280
281                 ypresponse
282                 YPOLDPROC_FIRST(yprequest) = 4;
283
284                 ypresponse
285                 YPOLDPROC_NEXT(yprequest) = 5;
286
287                 ypresponse
288                 YPOLDPROC_POLL(yprequest) = 6;
289
290                 ypresponse
291                 YPOLDPROC_PUSH(yprequest) = 7;
292
293                 ypresponse
294                 YPOLDPROC_PULL(yprequest) = 8;
295
296                 ypresponse
297                 YPOLDPROC_GET(yprequest) = 9;
298         } = 1;
299
300         version YPVERS {
301                 void 
302                 YPPROC_NULL(void) = 0;
303
304                 bool 
305                 YPPROC_DOMAIN(domainname) = 1;  
306
307                 bool
308                 YPPROC_DOMAIN_NONACK(domainname) = 2;
309
310                 ypresp_val
311                 YPPROC_MATCH(ypreq_key) = 3;
312
313                 ypresp_key_val 
314 #ifdef STUPID_SUN_BUG /* should be ypreq_nokey */
315                 YPPROC_FIRST(ypreq_key) = 4;
316 #else
317                 YPPROC_FIRST(ypreq_nokey) = 4;
318 #endif
319                 ypresp_key_val 
320                 YPPROC_NEXT(ypreq_key) = 5;
321
322                 ypresp_xfr
323                 YPPROC_XFR(ypreq_xfr) = 6;
324
325                 void
326                 YPPROC_CLEAR(void) = 7;
327
328                 ypresp_all
329                 YPPROC_ALL(ypreq_nokey) = 8;
330
331                 ypresp_master
332                 YPPROC_MASTER(ypreq_nokey) = 9;
333
334                 ypresp_order
335                 YPPROC_ORDER(ypreq_nokey) = 10;
336
337                 ypresp_maplist 
338                 YPPROC_MAPLIST(domainname) = 11;
339         } = 2;
340 } = 100004;
341 #endif
342 #if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY)
343 /*
344  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
345  */
346 program YPPUSH_XFRRESPPROG {
347         version YPPUSH_XFRRESPVERS {
348                 void
349                 YPPUSHPROC_NULL(void) = 0;
350 #ifdef STUPID_SUN_BUG /* argument and return value are backwards */
351                 yppushresp_xfr  
352                 YPPUSHPROC_XFRRESP(void) = 1;
353 #else
354                 void
355                 YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
356 #endif
357         } = 1;
358 } = 0x40000000; /* transient: could be anything up to 0x5fffffff */
359 #endif
360 #if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY)
361 /*
362  * YP binding protocol
363  */
364 program YPBINDPROG {
365         version YPBINDVERS {
366                 void
367                 YPBINDPROC_NULL(void) = 0;
368         
369                 ypbind_resp
370                 YPBINDPROC_DOMAIN(domainname) = 1;
371
372                 void
373                 YPBINDPROC_SETDOM(ypbind_setdom) = 2;
374         } = 2;
375 } = 100007;
376
377 #endif