usr.sbin/makefs/hammer2: Use blkno -1 for logical vnode for clarity
[dragonfly.git] / include / rpcsvc / yp.x
blobe08232720609aa9640b5c1c8449a3c23b6502db3
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, MERCHANTABILITY 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  * $FreeBSD: src/include/rpcsvc/yp.x,v 1.12 1999/08/27 23:45:12 peter Exp $
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;
103         
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 /* These are backwards */
120         keydat key;
121         valdat val;
122 #else
123         valdat val;
124         keydat key;
125 #endif
129 struct ypresp_master {
130         ypstat stat;    
131         peername peer;
134 struct ypresp_order {
135         ypstat stat;
136         unsigned int ordernum;
139 union ypresp_all switch (bool more) {
140 case TRUE:
141         ypresp_key_val val;
142 case FALSE:
143         void;
146 struct ypresp_xfr {
147         unsigned int transid;
148         ypxfrstat xfrstat;
151 struct ypmaplist {
152         mapname map;
153         ypmaplist *next;
156 struct ypresp_maplist {
157         ypstat stat;
158         ypmaplist *maps;
161 enum yppush_status {
162         YPPUSH_SUCC     =  1,   /* Success */
163         YPPUSH_AGE      =  2,   /* Master's version not newer */
164         YPPUSH_NOMAP    = -1,   /* Can't find server for map */
165         YPPUSH_NODOM    = -2,   /* Domain not supported */
166         YPPUSH_RSRC     = -3,   /* Local resource alloc failure */
167         YPPUSH_RPC      = -4,   /* RPC failure talking to server */
168         YPPUSH_MADDR    = -5,   /* Can't get master address */
169         YPPUSH_YPERR    = -6,   /* YP server/map db error */
170         YPPUSH_BADARGS  = -7,   /* Request arguments bad */
171         YPPUSH_DBM      = -8,   /* Local dbm operation failed */
172         YPPUSH_FILE     = -9,   /* Local file I/O operation failed */
173         YPPUSH_SKEW     = -10,  /* Map version skew during transfer */
174         YPPUSH_CLEAR    = -11,  /* Can't send "Clear" req to local ypserv */
175         YPPUSH_FORCE    = -12,  /* No local order number in map  use -f flag. */
176         YPPUSH_XFRERR   = -13,  /* ypxfr error */
177         YPPUSH_REFUSED  = -14   /* Transfer request refused by ypserv */
180 struct yppushresp_xfr {
181         unsigned transid;
182         yppush_status status;
186  * Response structure and overall result status codes.  Success and failure
187  * represent two separate response message types.
188  */
190 enum ypbind_resptype {
191         YPBIND_SUCC_VAL = 1, 
192         YPBIND_FAIL_VAL = 2
195 struct ypbind_binding {
196     opaque ypbind_binding_addr[4]; /* In network order */
197     opaque ypbind_binding_port[2]; /* In network order */
198 };   
200 union ypbind_resp switch (ypbind_resptype ypbind_status) {
201 case YPBIND_FAIL_VAL:
202         unsigned ypbind_error;
203 case YPBIND_SUCC_VAL:
204         ypbind_binding ypbind_bindinfo;
205 };     
207 /* Detailed failure reason codes for response field ypbind_error*/
209 const YPBIND_ERR_ERR    = 1;    /* Internal error */
210 const YPBIND_ERR_NOSERV = 2;    /* No bound server for passed domain */
211 const YPBIND_ERR_RESC   = 3;    /* System resource allocation failure */
215  * Request data structure for ypbind "Set domain" procedure.
216  */
217 struct ypbind_setdom {
218         domainname ypsetdom_domain;
219         ypbind_binding ypsetdom_binding;
220         unsigned ypsetdom_vers;
225  * NIS v1 support for backwards compatibility
226  */
227 enum ypreqtype {
228         YPREQ_KEY = 1,
229         YPREQ_NOKEY = 2,
230         YPREQ_MAP_PARMS = 3
233 enum ypresptype {
234         YPRESP_VAL = 1,
235         YPRESP_KEY_VAL = 2,
236         YPRESP_MAP_PARMS = 3
239 union yprequest switch (ypreqtype yp_reqtype) {
240 case YPREQ_KEY:
241         ypreq_key yp_req_keytype;
242 case YPREQ_NOKEY:
243         ypreq_nokey yp_req_nokeytype;
244 case YPREQ_MAP_PARMS:
245         ypmap_parms yp_req_map_parmstype;
248 union ypresponse switch (ypresptype yp_resptype) {
249 case YPRESP_VAL:
250         ypresp_val yp_resp_valtype;
251 case YPRESP_KEY_VAL:
252         ypresp_key_val yp_resp_key_valtype;
253 case YPRESP_MAP_PARMS:
254         ypmap_parms yp_resp_map_parmstype;
257 #if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY)
259  * YP access protocol
260  */
261 program YPPROG {
263  * NIS v1 support for backwards compatibility
264  */
265         version YPOLDVERS {
266                 void
267                 YPOLDPROC_NULL(void) = 0;
269                 bool
270                 YPOLDPROC_DOMAIN(domainname) = 1;
272                 bool
273                 YPOLDPROC_DOMAIN_NONACK(domainname) = 2;
275                 ypresponse
276                 YPOLDPROC_MATCH(yprequest) = 3;
278                 ypresponse
279                 YPOLDPROC_FIRST(yprequest) = 4;
281                 ypresponse
282                 YPOLDPROC_NEXT(yprequest) = 5;
284                 ypresponse
285                 YPOLDPROC_POLL(yprequest) = 6;
287                 ypresponse
288                 YPOLDPROC_PUSH(yprequest) = 7;
290                 ypresponse
291                 YPOLDPROC_PULL(yprequest) = 8;
293                 ypresponse
294                 YPOLDPROC_GET(yprequest) = 9;
295         } = 1;
297         version YPVERS {
298                 void 
299                 YPPROC_NULL(void) = 0;
301                 bool 
302                 YPPROC_DOMAIN(domainname) = 1;  
304                 bool
305                 YPPROC_DOMAIN_NONACK(domainname) = 2;
307                 ypresp_val
308                 YPPROC_MATCH(ypreq_key) = 3;
310                 ypresp_key_val 
311 #ifdef STUPID_SUN_BUG /* should be ypreq_nokey */
312                 YPPROC_FIRST(ypreq_key) = 4;
313 #else
314                 YPPROC_FIRST(ypreq_nokey) = 4;
315 #endif
316                 ypresp_key_val 
317                 YPPROC_NEXT(ypreq_key) = 5;
319                 ypresp_xfr
320                 YPPROC_XFR(ypreq_xfr) = 6;
322                 void
323                 YPPROC_CLEAR(void) = 7;
325                 ypresp_all
326                 YPPROC_ALL(ypreq_nokey) = 8;
328                 ypresp_master
329                 YPPROC_MASTER(ypreq_nokey) = 9;
331                 ypresp_order
332                 YPPROC_ORDER(ypreq_nokey) = 10;
334                 ypresp_maplist 
335                 YPPROC_MAPLIST(domainname) = 11;
336         } = 2;
337 } = 100004;
338 #endif
339 #if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY)
341  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
342  */
343 program YPPUSH_XFRRESPPROG {
344         version YPPUSH_XFRRESPVERS {
345                 void
346                 YPPUSHPROC_NULL(void) = 0;
347 #ifdef STUPID_SUN_BUG /* argument and return value are backwards */
348                 yppushresp_xfr  
349                 YPPUSHPROC_XFRRESP(void) = 1;
350 #else
351                 void
352                 YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
353 #endif
354         } = 1;
355 } = 0x40000000; /* transient: could be anything up to 0x5fffffff */
356 #endif
357 #if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY)
359  * YP binding protocol
360  */
361 program YPBINDPROG {
362         version YPBINDVERS {
363                 void
364                 YPBINDPROC_NULL(void) = 0;
365         
366                 ypbind_resp
367                 YPBINDPROC_DOMAIN(domainname) = 1;
369                 void
370                 YPBINDPROC_SETDOM(ypbind_setdom) = 2;
371         } = 2;
372 } = 100007;
374 #endif