131387Scharnier/* @(#)yp.x 2.1 88/08/01 4.0 RPCSRC */ 231387Scharnier 31832Swollman/* 41832Swollman * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 51832Swollman * unrestricted use provided that this legend is included on all tape 61832Swollman * media and as a part of the software program in whole or part. Users 71832Swollman * may copy or modify Sun RPC without charge, but are not authorized 81832Swollman * to license or distribute it to anyone else except as part of a product or 91832Swollman * program developed by the user. 101832Swollman * 111832Swollman * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 121832Swollman * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 131832Swollman * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 141832Swollman * 151832Swollman * Sun RPC is provided with no support and without any obligation on the 161832Swollman * part of Sun Microsystems, Inc. to assist in its use, correction, 171832Swollman * modification or enhancement. 181832Swollman * 191832Swollman * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 201832Swollman * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 211832Swollman * OR ANY PART THEREOF. 221832Swollman * 231832Swollman * In no event will Sun Microsystems, Inc. be liable for any lost revenue 241832Swollman * or profits or other special, indirect and consequential damages, even if 251832Swollman * Sun has been advised of the possibility of such damages. 261832Swollman * 271832Swollman * Sun Microsystems, Inc. 281832Swollman * 2550 Garcia Avenue 291832Swollman * Mountain View, California 94043 301832Swollman */ 311832Swollman 321832Swollman/* 331832Swollman * Protocol description file for the Yellow Pages Service 341832Swollman */ 351832Swollman 361832Swollman#ifndef RPC_HDR 37114629Sobrien%#include <sys/cdefs.h> 38114629Sobrien%__FBSDID("$FreeBSD$"); 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 22614261Swpaul 22714261Swpaul/* 22814261Swpaul * NIS v1 support for backwards compatibility 22914261Swpaul */ 23014261Swpaulenum ypreqtype { 23114261Swpaul YPREQ_KEY = 1, 23214261Swpaul YPREQ_NOKEY = 2, 23314261Swpaul YPREQ_MAP_PARMS = 3 23414261Swpaul}; 23514261Swpaul 23614261Swpaulenum ypresptype { 23714261Swpaul YPRESP_VAL = 1, 23814261Swpaul YPRESP_KEY_VAL = 2, 23914261Swpaul YPRESP_MAP_PARMS = 3 24014261Swpaul}; 24114261Swpaul 24214261Swpaulunion yprequest switch (ypreqtype yp_reqtype) { 24314261Swpaulcase YPREQ_KEY: 24414261Swpaul ypreq_key yp_req_keytype; 24514261Swpaulcase YPREQ_NOKEY: 24614261Swpaul ypreq_nokey yp_req_nokeytype; 24714261Swpaulcase YPREQ_MAP_PARMS: 24814261Swpaul ypmap_parms yp_req_map_parmstype; 24914261Swpaul}; 25014261Swpaul 25114261Swpaulunion ypresponse switch (ypresptype yp_resptype) { 25214261Swpaulcase YPRESP_VAL: 25314261Swpaul ypresp_val yp_resp_valtype; 25414261Swpaulcase YPRESP_KEY_VAL: 25514261Swpaul ypresp_key_val yp_resp_key_valtype; 25614261Swpaulcase YPRESP_MAP_PARMS: 25714261Swpaul ypmap_parms yp_resp_map_parmstype; 25814261Swpaul}; 25914261Swpaul 26012677Swpaul#if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY) 2611832Swollman/* 2621832Swollman * YP access protocol 2631832Swollman */ 2641832Swollmanprogram YPPROG { 26514261Swpaul/* 26614261Swpaul * NIS v1 support for backwards compatibility 26714261Swpaul */ 26814261Swpaul version YPOLDVERS { 26914261Swpaul void 27014261Swpaul YPOLDPROC_NULL(void) = 0; 27114261Swpaul 27214261Swpaul bool 27314261Swpaul YPOLDPROC_DOMAIN(domainname) = 1; 27414261Swpaul 27514261Swpaul bool 27614261Swpaul YPOLDPROC_DOMAIN_NONACK(domainname) = 2; 27714261Swpaul 27814261Swpaul ypresponse 27914261Swpaul YPOLDPROC_MATCH(yprequest) = 3; 28014261Swpaul 28114261Swpaul ypresponse 28214261Swpaul YPOLDPROC_FIRST(yprequest) = 4; 28314261Swpaul 28414261Swpaul ypresponse 28514261Swpaul YPOLDPROC_NEXT(yprequest) = 5; 28614261Swpaul 28714261Swpaul ypresponse 28814261Swpaul YPOLDPROC_POLL(yprequest) = 6; 28914261Swpaul 29014261Swpaul ypresponse 29114261Swpaul YPOLDPROC_PUSH(yprequest) = 7; 29214261Swpaul 29314261Swpaul ypresponse 29414261Swpaul YPOLDPROC_PULL(yprequest) = 8; 29514261Swpaul 29614261Swpaul ypresponse 29714261Swpaul YPOLDPROC_GET(yprequest) = 9; 29814261Swpaul } = 1; 29914261Swpaul 3001832Swollman version YPVERS { 3011832Swollman void 3021832Swollman YPPROC_NULL(void) = 0; 3031832Swollman 3041832Swollman bool 3051832Swollman YPPROC_DOMAIN(domainname) = 1; 3061832Swollman 3071832Swollman bool 3081832Swollman YPPROC_DOMAIN_NONACK(domainname) = 2; 3091832Swollman 3101832Swollman ypresp_val 3111832Swollman YPPROC_MATCH(ypreq_key) = 3; 3121832Swollman 3131832Swollman ypresp_key_val 31412690Swpaul#ifdef STUPID_SUN_BUG /* should be ypreq_nokey */ 3151832Swollman YPPROC_FIRST(ypreq_key) = 4; 31612690Swpaul#else 31712690Swpaul YPPROC_FIRST(ypreq_nokey) = 4; 31812690Swpaul#endif 3191832Swollman ypresp_key_val 3201832Swollman YPPROC_NEXT(ypreq_key) = 5; 3211832Swollman 3221832Swollman ypresp_xfr 3231832Swollman YPPROC_XFR(ypreq_xfr) = 6; 3241832Swollman 3251832Swollman void 3261832Swollman YPPROC_CLEAR(void) = 7; 3271832Swollman 3281832Swollman ypresp_all 3291832Swollman YPPROC_ALL(ypreq_nokey) = 8; 3301832Swollman 3311832Swollman ypresp_master 3321832Swollman YPPROC_MASTER(ypreq_nokey) = 9; 3331832Swollman 3341832Swollman ypresp_order 3351832Swollman YPPROC_ORDER(ypreq_nokey) = 10; 3361832Swollman 3371832Swollman ypresp_maplist 3381832Swollman YPPROC_MAPLIST(domainname) = 11; 3391832Swollman } = 2; 3401832Swollman} = 100004; 34112677Swpaul#endif 34212677Swpaul#if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY) 3431832Swollman/* 3441832Swollman * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR 3451832Swollman */ 3461832Swollmanprogram YPPUSH_XFRRESPPROG { 3471832Swollman version YPPUSH_XFRRESPVERS { 3481832Swollman void 3491832Swollman YPPUSHPROC_NULL(void) = 0; 35012957Swpaul#ifdef STUPID_SUN_BUG /* argument and return value are backwards */ 3511832Swollman yppushresp_xfr 3521832Swollman YPPUSHPROC_XFRRESP(void) = 1; 35312957Swpaul#else 35414261Swpaul void 35512957Swpaul YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1; 35612957Swpaul#endif 3571832Swollman } = 1; 3581832Swollman} = 0x40000000; /* transient: could be anything up to 0x5fffffff */ 35912677Swpaul#endif 36012677Swpaul#if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY) 3611832Swollman/* 3621832Swollman * YP binding protocol 3631832Swollman */ 3641832Swollmanprogram YPBINDPROG { 3651832Swollman version YPBINDVERS { 3661832Swollman void 3671832Swollman YPBINDPROC_NULL(void) = 0; 3681832Swollman 3691832Swollman ypbind_resp 3701832Swollman YPBINDPROC_DOMAIN(domainname) = 1; 3711832Swollman 3721832Swollman void 3731832Swollman YPBINDPROC_SETDOM(ypbind_setdom) = 2; 3741832Swollman } = 2; 3751832Swollman} = 100007; 3761832Swollman 37712677Swpaul#endif 378