yp.x revision 12677
11832Swollman/* 21832Swollman * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 31832Swollman * unrestricted use provided that this legend is included on all tape 41832Swollman * media and as a part of the software program in whole or part. Users 51832Swollman * may copy or modify Sun RPC without charge, but are not authorized 61832Swollman * to license or distribute it to anyone else except as part of a product or 71832Swollman * program developed by the user. 81832Swollman * 91832Swollman * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 101832Swollman * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 111832Swollman * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 121832Swollman * 131832Swollman * Sun RPC is provided with no support and without any obligation on the 141832Swollman * part of Sun Microsystems, Inc. to assist in its use, correction, 151832Swollman * modification or enhancement. 161832Swollman * 171832Swollman * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 181832Swollman * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 191832Swollman * OR ANY PART THEREOF. 201832Swollman * 211832Swollman * In no event will Sun Microsystems, Inc. be liable for any lost revenue 221832Swollman * or profits or other special, indirect and consequential damages, even if 231832Swollman * Sun has been advised of the possibility of such damages. 241832Swollman * 251832Swollman * Sun Microsystems, Inc. 261832Swollman * 2550 Garcia Avenue 271832Swollman * Mountain View, California 94043 281832Swollman */ 291832Swollman 301832Swollman/* 311832Swollman * Protocol description file for the Yellow Pages Service 321832Swollman */ 331832Swollman 341832Swollman#ifndef RPC_HDR 351832Swollman%#ifndef lint 361832Swollman%/*static char sccsid[] = "from: @(#)yp.x 2.1 88/08/01 4.0 RPCSRC";*/ 3712677Swpaul%static char rcsid[] = "$Id$"; 381832Swollman%#endif /* not lint */ 391832Swollman#endif 401832Swollman 411832Swollmanconst YPMAXRECORD = 1024; 421832Swollmanconst YPMAXDOMAIN = 64; 431832Swollmanconst YPMAXMAP = 64; 441832Swollmanconst YPMAXPEER = 64; 451832Swollman 461832Swollman 471832Swollmanenum ypstat { 481832Swollman YP_TRUE = 1, 491832Swollman YP_NOMORE = 2, 501832Swollman YP_FALSE = 0, 511832Swollman YP_NOMAP = -1, 521832Swollman YP_NODOM = -2, 531832Swollman YP_NOKEY = -3, 541832Swollman YP_BADOP = -4, 551832Swollman YP_BADDB = -5, 561832Swollman YP_YPERR = -6, 571832Swollman YP_BADARGS = -7, 581832Swollman YP_VERS = -8 591832Swollman}; 601832Swollman 611832Swollman 621832Swollmanenum ypxfrstat { 631832Swollman YPXFR_SUCC = 1, 641832Swollman YPXFR_AGE = 2, 651832Swollman YPXFR_NOMAP = -1, 661832Swollman YPXFR_NODOM = -2, 671832Swollman YPXFR_RSRC = -3, 681832Swollman YPXFR_RPC = -4, 691832Swollman YPXFR_MADDR = -5, 701832Swollman YPXFR_YPERR = -6, 711832Swollman YPXFR_BADARGS = -7, 721832Swollman YPXFR_DBM = -8, 731832Swollman YPXFR_FILE = -9, 741832Swollman YPXFR_SKEW = -10, 751832Swollman YPXFR_CLEAR = -11, 761832Swollman YPXFR_FORCE = -12, 771832Swollman YPXFR_XFRERR = -13, 781832Swollman YPXFR_REFUSED = -14 791832Swollman}; 801832Swollman 811832Swollman 821832Swollmantypedef string domainname<YPMAXDOMAIN>; 831832Swollmantypedef string mapname<YPMAXMAP>; 841832Swollmantypedef string peername<YPMAXPEER>; 851832Swollmantypedef opaque keydat<YPMAXRECORD>; 861832Swollmantypedef opaque valdat<YPMAXRECORD>; 871832Swollman 881832Swollman 891832Swollmanstruct ypmap_parms { 901832Swollman domainname domain; 911832Swollman mapname map; 921832Swollman unsigned int ordernum; 931832Swollman peername peer; 941832Swollman}; 951832Swollman 961832Swollmanstruct ypreq_key { 971832Swollman domainname domain; 981832Swollman mapname map; 991832Swollman keydat key; 1001832Swollman}; 1011832Swollman 1021832Swollmanstruct ypreq_nokey { 1031832Swollman domainname domain; 1041832Swollman mapname map; 1051832Swollman}; 1061832Swollman 1071832Swollmanstruct ypreq_xfr { 1081832Swollman ypmap_parms map_parms; 1091832Swollman unsigned int transid; 1101832Swollman unsigned int prog; 1111832Swollman unsigned int port; 1121832Swollman}; 1131832Swollman 1141832Swollman 1151832Swollmanstruct ypresp_val { 1161832Swollman ypstat stat; 1171832Swollman valdat val; 1181832Swollman}; 1191832Swollman 1201832Swollmanstruct ypresp_key_val { 1211832Swollman ypstat stat; 12212677Swpaul#ifdef STUPID_SUN_BUG /* These are backwards */ 1231832Swollman keydat key; 1241832Swollman valdat val; 12512677Swpaul#else 12612677Swpaul valdat val; 12712677Swpaul keydat key; 12812677Swpaul#endif 1291832Swollman}; 1301832Swollman 1311832Swollman 1321832Swollmanstruct ypresp_master { 1331832Swollman ypstat stat; 1341832Swollman peername peer; 1351832Swollman}; 1361832Swollman 1371832Swollmanstruct ypresp_order { 1381832Swollman ypstat stat; 1391832Swollman unsigned int ordernum; 1401832Swollman}; 1411832Swollman 1421832Swollmanunion ypresp_all switch (bool more) { 1431832Swollmancase TRUE: 1441832Swollman ypresp_key_val val; 1451832Swollmancase FALSE: 1461832Swollman void; 1471832Swollman}; 1481832Swollman 1491832Swollmanstruct ypresp_xfr { 1501832Swollman unsigned int transid; 1511832Swollman ypxfrstat xfrstat; 1521832Swollman}; 1531832Swollman 1541832Swollmanstruct ypmaplist { 1551832Swollman mapname map; 1561832Swollman ypmaplist *next; 1571832Swollman}; 1581832Swollman 1591832Swollmanstruct ypresp_maplist { 1601832Swollman ypstat stat; 1611832Swollman ypmaplist *maps; 1621832Swollman}; 1631832Swollman 1641832Swollmanenum yppush_status { 1651832Swollman YPPUSH_SUCC = 1, /* Success */ 1661832Swollman YPPUSH_AGE = 2, /* Master's version not newer */ 1671832Swollman YPPUSH_NOMAP = -1, /* Can't find server for map */ 1681832Swollman YPPUSH_NODOM = -2, /* Domain not supported */ 1691832Swollman YPPUSH_RSRC = -3, /* Local resource alloc failure */ 1701832Swollman YPPUSH_RPC = -4, /* RPC failure talking to server */ 1711832Swollman YPPUSH_MADDR = -5, /* Can't get master address */ 1721832Swollman YPPUSH_YPERR = -6, /* YP server/map db error */ 1731832Swollman YPPUSH_BADARGS = -7, /* Request arguments bad */ 1741832Swollman YPPUSH_DBM = -8, /* Local dbm operation failed */ 1751832Swollman YPPUSH_FILE = -9, /* Local file I/O operation failed */ 1761832Swollman YPPUSH_SKEW = -10, /* Map version skew during transfer */ 1771832Swollman YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */ 1781832Swollman YPPUSH_FORCE = -12, /* No local order number in map use -f flag. */ 1791832Swollman YPPUSH_XFRERR = -13, /* ypxfr error */ 1801832Swollman YPPUSH_REFUSED = -14 /* Transfer request refused by ypserv */ 1811832Swollman}; 1821832Swollman 1831832Swollmanstruct yppushresp_xfr { 1841832Swollman unsigned transid; 1851832Swollman yppush_status status; 1861832Swollman}; 1871832Swollman 1881832Swollman/* 1891832Swollman * Response structure and overall result status codes. Success and failure 1901832Swollman * represent two separate response message types. 1911832Swollman */ 1921832Swollman 1931832Swollmanenum ypbind_resptype { 1941832Swollman YPBIND_SUCC_VAL = 1, 1951832Swollman YPBIND_FAIL_VAL = 2 1961832Swollman}; 1971832Swollman 1981832Swollmanstruct ypbind_binding { 1991832Swollman opaque ypbind_binding_addr[4]; /* In network order */ 2001832Swollman opaque ypbind_binding_port[2]; /* In network order */ 2011832Swollman}; 2021832Swollman 2031832Swollmanunion ypbind_resp switch (ypbind_resptype ypbind_status) { 2041832Swollmancase YPBIND_FAIL_VAL: 2051832Swollman unsigned ypbind_error; 2061832Swollmancase YPBIND_SUCC_VAL: 2071832Swollman ypbind_binding ypbind_bindinfo; 2081832Swollman}; 2091832Swollman 2101832Swollman/* Detailed failure reason codes for response field ypbind_error*/ 2111832Swollman 2121832Swollmanconst YPBIND_ERR_ERR = 1; /* Internal error */ 2131832Swollmanconst YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */ 2141832Swollmanconst YPBIND_ERR_RESC = 3; /* System resource allocation failure */ 2151832Swollman 2161832Swollman 2171832Swollman/* 2181832Swollman * Request data structure for ypbind "Set domain" procedure. 2191832Swollman */ 2201832Swollmanstruct ypbind_setdom { 2211832Swollman domainname ypsetdom_domain; 2221832Swollman ypbind_binding ypsetdom_binding; 2231832Swollman unsigned ypsetdom_vers; 2241832Swollman}; 2251832Swollman 22612677Swpaul#if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY) 2271832Swollman/* 2281832Swollman * YP access protocol 2291832Swollman */ 2301832Swollmanprogram YPPROG { 2311832Swollman version YPVERS { 2321832Swollman void 2331832Swollman YPPROC_NULL(void) = 0; 2341832Swollman 2351832Swollman bool 2361832Swollman YPPROC_DOMAIN(domainname) = 1; 2371832Swollman 2381832Swollman bool 2391832Swollman YPPROC_DOMAIN_NONACK(domainname) = 2; 2401832Swollman 2411832Swollman ypresp_val 2421832Swollman YPPROC_MATCH(ypreq_key) = 3; 2431832Swollman 2441832Swollman ypresp_key_val 2451832Swollman YPPROC_FIRST(ypreq_key) = 4; 2461832Swollman 2471832Swollman ypresp_key_val 2481832Swollman YPPROC_NEXT(ypreq_key) = 5; 2491832Swollman 2501832Swollman ypresp_xfr 2511832Swollman YPPROC_XFR(ypreq_xfr) = 6; 2521832Swollman 2531832Swollman void 2541832Swollman YPPROC_CLEAR(void) = 7; 2551832Swollman 2561832Swollman ypresp_all 2571832Swollman YPPROC_ALL(ypreq_nokey) = 8; 2581832Swollman 2591832Swollman ypresp_master 2601832Swollman YPPROC_MASTER(ypreq_nokey) = 9; 2611832Swollman 2621832Swollman ypresp_order 2631832Swollman YPPROC_ORDER(ypreq_nokey) = 10; 2641832Swollman 2651832Swollman ypresp_maplist 2661832Swollman YPPROC_MAPLIST(domainname) = 11; 2671832Swollman } = 2; 2681832Swollman} = 100004; 26912677Swpaul#endif 27012677Swpaul#if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY) 2711832Swollman/* 2721832Swollman * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR 2731832Swollman */ 2741832Swollmanprogram YPPUSH_XFRRESPPROG { 2751832Swollman version YPPUSH_XFRRESPVERS { 2761832Swollman void 2771832Swollman YPPUSHPROC_NULL(void) = 0; 2781832Swollman 2791832Swollman yppushresp_xfr 2801832Swollman YPPUSHPROC_XFRRESP(void) = 1; 2811832Swollman } = 1; 2821832Swollman} = 0x40000000; /* transient: could be anything up to 0x5fffffff */ 28312677Swpaul#endif 28412677Swpaul#if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY) 2851832Swollman/* 2861832Swollman * YP binding protocol 2871832Swollman */ 2881832Swollmanprogram YPBINDPROG { 2891832Swollman version YPBINDVERS { 2901832Swollman void 2911832Swollman YPBINDPROC_NULL(void) = 0; 2921832Swollman 2931832Swollman ypbind_resp 2941832Swollman YPBINDPROC_DOMAIN(domainname) = 1; 2951832Swollman 2961832Swollman void 2971832Swollman YPBINDPROC_SETDOM(ypbind_setdom) = 2; 2981832Swollman } = 2; 2991832Swollman} = 100007; 3001832Swollman 30112677Swpaul#endif 302