1 /* @(#)yp.x 2.1 88/08/01 4.0 RPCSRC */
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.
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.
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.
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.
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.
27 * Sun Microsystems, Inc.
29 * Mountain View, California 94043
31 * $FreeBSD: src/include/rpcsvc/yp.x,v 1.12 1999/08/27 23:45:12 peter Exp $
32 * $DragonFly: src/include/rpcsvc/yp.x,v 1.2 2003/06/17 04:25:58 dillon Exp $
36 * Protocol description file for the Yellow Pages Service
39 const YPMAXRECORD = 1024;
40 const YPMAXDOMAIN = 64;
80 typedef string domainname<YPMAXDOMAIN>;
81 typedef string mapname<YPMAXMAP>;
82 typedef string peername<YPMAXPEER>;
83 typedef opaque keydat<YPMAXRECORD>;
84 typedef opaque valdat<YPMAXRECORD>;
90 unsigned int ordernum;
106 ypmap_parms map_parms;
107 unsigned int transid;
118 struct ypresp_key_val {
120 #ifdef STUPID_SUN_BUG /* These are backwards */
130 struct ypresp_master {
135 struct ypresp_order {
137 unsigned int ordernum;
140 union ypresp_all switch (bool more) {
148 unsigned int transid;
157 struct ypresp_maplist {
163 YPPUSH_SUCC = 1, /* Success */
164 YPPUSH_AGE = 2, /* Master's version not newer */
165 YPPUSH_NOMAP = -1, /* Can't find server for map */
166 YPPUSH_NODOM = -2, /* Domain not supported */
167 YPPUSH_RSRC = -3, /* Local resource alloc failure */
168 YPPUSH_RPC = -4, /* RPC failure talking to server */
169 YPPUSH_MADDR = -5, /* Can't get master address */
170 YPPUSH_YPERR = -6, /* YP server/map db error */
171 YPPUSH_BADARGS = -7, /* Request arguments bad */
172 YPPUSH_DBM = -8, /* Local dbm operation failed */
173 YPPUSH_FILE = -9, /* Local file I/O operation failed */
174 YPPUSH_SKEW = -10, /* Map version skew during transfer */
175 YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */
176 YPPUSH_FORCE = -12, /* No local order number in map use -f flag. */
177 YPPUSH_XFRERR = -13, /* ypxfr error */
178 YPPUSH_REFUSED = -14 /* Transfer request refused by ypserv */
181 struct yppushresp_xfr {
183 yppush_status status;
187 * Response structure and overall result status codes. Success and failure
188 * represent two separate response message types.
191 enum ypbind_resptype {
196 struct ypbind_binding {
197 opaque ypbind_binding_addr[4]; /* In network order */
198 opaque ypbind_binding_port[2]; /* In network order */
201 union ypbind_resp switch (ypbind_resptype ypbind_status) {
202 case YPBIND_FAIL_VAL:
203 unsigned ypbind_error;
204 case YPBIND_SUCC_VAL:
205 ypbind_binding ypbind_bindinfo;
208 /* Detailed failure reason codes for response field ypbind_error*/
210 const YPBIND_ERR_ERR = 1; /* Internal error */
211 const YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */
212 const YPBIND_ERR_RESC = 3; /* System resource allocation failure */
216 * Request data structure for ypbind "Set domain" procedure.
218 struct ypbind_setdom {
219 domainname ypsetdom_domain;
220 ypbind_binding ypsetdom_binding;
221 unsigned ypsetdom_vers;
226 * NIS v1 support for backwards compatibility
240 union yprequest switch (ypreqtype yp_reqtype) {
242 ypreq_key yp_req_keytype;
244 ypreq_nokey yp_req_nokeytype;
245 case YPREQ_MAP_PARMS:
246 ypmap_parms yp_req_map_parmstype;
249 union ypresponse switch (ypresptype yp_resptype) {
251 ypresp_val yp_resp_valtype;
253 ypresp_key_val yp_resp_key_valtype;
254 case YPRESP_MAP_PARMS:
255 ypmap_parms yp_resp_map_parmstype;
258 #if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY)
264 * NIS v1 support for backwards compatibility
268 YPOLDPROC_NULL(void) = 0;
271 YPOLDPROC_DOMAIN(domainname) = 1;
274 YPOLDPROC_DOMAIN_NONACK(domainname) = 2;
277 YPOLDPROC_MATCH(yprequest) = 3;
280 YPOLDPROC_FIRST(yprequest) = 4;
283 YPOLDPROC_NEXT(yprequest) = 5;
286 YPOLDPROC_POLL(yprequest) = 6;
289 YPOLDPROC_PUSH(yprequest) = 7;
292 YPOLDPROC_PULL(yprequest) = 8;
295 YPOLDPROC_GET(yprequest) = 9;
300 YPPROC_NULL(void) = 0;
303 YPPROC_DOMAIN(domainname) = 1;
306 YPPROC_DOMAIN_NONACK(domainname) = 2;
309 YPPROC_MATCH(ypreq_key) = 3;
312 #ifdef STUPID_SUN_BUG /* should be ypreq_nokey */
313 YPPROC_FIRST(ypreq_key) = 4;
315 YPPROC_FIRST(ypreq_nokey) = 4;
318 YPPROC_NEXT(ypreq_key) = 5;
321 YPPROC_XFR(ypreq_xfr) = 6;
324 YPPROC_CLEAR(void) = 7;
327 YPPROC_ALL(ypreq_nokey) = 8;
330 YPPROC_MASTER(ypreq_nokey) = 9;
333 YPPROC_ORDER(ypreq_nokey) = 10;
336 YPPROC_MAPLIST(domainname) = 11;
340 #if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY)
342 * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
344 program YPPUSH_XFRRESPPROG {
345 version YPPUSH_XFRRESPVERS {
347 YPPUSHPROC_NULL(void) = 0;
348 #ifdef STUPID_SUN_BUG /* argument and return value are backwards */
350 YPPUSHPROC_XFRRESP(void) = 1;
353 YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
356 } = 0x40000000; /* transient: could be anything up to 0x5fffffff */
358 #if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY)
360 * YP binding protocol
365 YPBINDPROC_NULL(void) = 0;
368 YPBINDPROC_DOMAIN(domainname) = 1;
371 YPBINDPROC_SETDOM(ypbind_setdom) = 2;