yp.x revision 12957
1296853Sdes/* 276259Sgreen * Sun RPC is a product of Sun Microsystems, Inc. and is provided for 3126274Sdes * unrestricted use provided that this legend is included on all tape 476259Sgreen * media and as a part of the software program in whole or part. Users 5126274Sdes * may copy or modify Sun RPC without charge, but are not authorized 6126274Sdes * to license or distribute it to anyone else except as part of a product or 7126274Sdes * program developed by the user. 876259Sgreen * 9126274Sdes * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE 10126274Sdes * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR 11126274Sdes * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE. 12126274Sdes * 13126274Sdes * Sun RPC is provided with no support and without any obligation on the 14126274Sdes * part of Sun Microsystems, Inc. to assist in its use, correction, 15126274Sdes * modification or enhancement. 1676259Sgreen * 1776259Sgreen * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE 1876259Sgreen * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC 1976259Sgreen * OR ANY PART THEREOF. 2092555Sdes * 2176259Sgreen * In no event will Sun Microsystems, Inc. be liable for any lost revenue 2276259Sgreen * or profits or other special, indirect and consequential damages, even if 2376259Sgreen * Sun has been advised of the possibility of such damages. 2476259Sgreen * 25295367Sdes * Sun Microsystems, Inc. 26162852Sdes * 2550 Garcia Avenue 27181111Sdes * Mountain View, California 94043 28181111Sdes */ 29181111Sdes 30106121Sdes/* 31162852Sdes * Protocol description file for the Yellow Pages Service 32162852Sdes */ 33162852Sdes 34162852Sdes#ifndef RPC_HDR 35162852Sdes%#ifndef lint 36162852Sdes%/*static char sccsid[] = "from: @(#)yp.x 2.1 88/08/01 4.0 RPCSRC";*/ 37162852Sdes%static char rcsid[] = "$Id: yp.x,v 1.3 1995/12/09 08:34:04 wpaul Exp $"; 3892555Sdes%#endif /* not lint */ 39204917Sdes#endif 40162852Sdes 41162852Sdesconst YPMAXRECORD = 1024; 42162852Sdesconst YPMAXDOMAIN = 64; 43162852Sdesconst YPMAXMAP = 64; 44162852Sdesconst YPMAXPEER = 64; 45262566Sdes 46162852Sdes 47162852Sdesenum ypstat { 48162852Sdes YP_TRUE = 1, 49162852Sdes YP_NOMORE = 2, 50295367Sdes YP_FALSE = 0, 51295367Sdes YP_NOMAP = -1, 5276259Sgreen YP_NODOM = -2, 5376259Sgreen YP_NOKEY = -3, 54113908Sdes YP_BADOP = -4, 55162852Sdes YP_BADDB = -5, 5676259Sgreen YP_YPERR = -6, 5776259Sgreen YP_BADARGS = -7, 5876259Sgreen YP_VERS = -8 5976259Sgreen}; 6076259Sgreen 61137015Sdes 62113908Sdesenum ypxfrstat { 63113908Sdes YPXFR_SUCC = 1, 64162852Sdes YPXFR_AGE = 2, 6592555Sdes YPXFR_NOMAP = -1, 6676259Sgreen YPXFR_NODOM = -2, 67204917Sdes YPXFR_RSRC = -3, 68204917Sdes YPXFR_RPC = -4, 69204917Sdes YPXFR_MADDR = -5, 7092555Sdes YPXFR_YPERR = -6, 7192555Sdes YPXFR_BADARGS = -7, 7292555Sdes YPXFR_DBM = -8, 7392555Sdes YPXFR_FILE = -9, 7492555Sdes YPXFR_SKEW = -10, 7592555Sdes YPXFR_CLEAR = -11, 7692555Sdes YPXFR_FORCE = -12, 77181111Sdes YPXFR_XFRERR = -13, 78181111Sdes YPXFR_REFUSED = -14 79181111Sdes}; 80221420Sdes 81262566Sdes 82181111Sdestypedef string domainname<YPMAXDOMAIN>; 83221420Sdestypedef string mapname<YPMAXMAP>; 84221420Sdestypedef string peername<YPMAXPEER>; 8592555Sdestypedef opaque keydat<YPMAXRECORD>; 8676259Sgreentypedef opaque valdat<YPMAXRECORD>; 87295367Sdes 88295367Sdes 89221420Sdesstruct ypmap_parms { 90204917Sdes domainname domain; 91221420Sdes mapname map; 92221420Sdes unsigned int ordernum; 93221420Sdes peername peer; 94221420Sdes}; 95221420Sdes 96221420Sdesstruct ypreq_key { 97221420Sdes domainname domain; 98221420Sdes mapname map; 99221420Sdes keydat key; 100221420Sdes}; 10192555Sdes 102295367Sdesstruct ypreq_nokey { 10376259Sgreen domainname domain; 104113908Sdes mapname map; 105162852Sdes}; 10676259Sgreen 107295367Sdesstruct ypreq_xfr { 108295367Sdes ypmap_parms map_parms; 10976259Sgreen unsigned int transid; 110113908Sdes unsigned int prog; 111295367Sdes unsigned int port; 112162852Sdes}; 113162852Sdes 114295367Sdes 115295367Sdesstruct ypresp_val { 11676259Sgreen ypstat stat; 117221420Sdes valdat val; 118255767Sdes}; 119295367Sdes 120113908Sdesstruct ypresp_key_val { 121113908Sdes ypstat stat; 122295367Sdes#ifdef STUPID_SUN_BUG /* These are backwards */ 12376259Sgreen keydat key; 12476259Sgreen valdat val; 12592555Sdes#else 126295367Sdes valdat val; 12776259Sgreen keydat key; 128113908Sdes#endif 129295367Sdes}; 130295367Sdes 13176259Sgreen 132295367Sdesstruct ypresp_master { 133295367Sdes ypstat stat; 134295367Sdes peername peer; 135221420Sdes}; 136149749Sdes 137149749Sdesstruct ypresp_order { 138149749Sdes ypstat stat; 139149749Sdes unsigned int ordernum; 140149749Sdes}; 14176259Sgreen 142295367Sdesunion ypresp_all switch (bool more) { 143295367Sdescase TRUE: 144157016Sdes ypresp_key_val val; 14599060Sdescase FALSE: 14676259Sgreen void; 147295367Sdes}; 148295367Sdes 149295367Sdesstruct ypresp_xfr { 150221420Sdes unsigned int transid; 151221420Sdes ypxfrstat xfrstat; 152149749Sdes}; 153149749Sdes 154149749Sdesstruct ypmaplist { 155149749Sdes mapname map; 156149749Sdes ypmaplist *next; 15776259Sgreen}; 15876259Sgreen 15992555Sdesstruct ypresp_maplist { 160295367Sdes ypstat stat; 16176259Sgreen ypmaplist *maps; 16276259Sgreen}; 163295367Sdes 164295367Sdesenum yppush_status { 16576259Sgreen YPPUSH_SUCC = 1, /* Success */ 166295367Sdes YPPUSH_AGE = 2, /* Master's version not newer */ 167295367Sdes YPPUSH_NOMAP = -1, /* Can't find server for map */ 168295367Sdes YPPUSH_NODOM = -2, /* Domain not supported */ 169295367Sdes YPPUSH_RSRC = -3, /* Local resource alloc failure */ 170295367Sdes YPPUSH_RPC = -4, /* RPC failure talking to server */ 171295367Sdes YPPUSH_MADDR = -5, /* Can't get master address */ 172295367Sdes YPPUSH_YPERR = -6, /* YP server/map db error */ 173221420Sdes YPPUSH_BADARGS = -7, /* Request arguments bad */ 174295367Sdes YPPUSH_DBM = -8, /* Local dbm operation failed */ 17576259Sgreen YPPUSH_FILE = -9, /* Local file I/O operation failed */ 17676259Sgreen YPPUSH_SKEW = -10, /* Map version skew during transfer */ 17792555Sdes YPPUSH_CLEAR = -11, /* Can't send "Clear" req to local ypserv */ 178221420Sdes YPPUSH_FORCE = -12, /* No local order number in map use -f flag. */ 179295367Sdes YPPUSH_XFRERR = -13, /* ypxfr error */ 18076259Sgreen YPPUSH_REFUSED = -14 /* Transfer request refused by ypserv */ 181295367Sdes}; 182295367Sdes 18376259Sgreenstruct yppushresp_xfr { 184295367Sdes unsigned transid; 185295367Sdes yppush_status status; 186295367Sdes}; 187295367Sdes 188295367Sdes/* 189295367Sdes * Response structure and overall result status codes. Success and failure 190295367Sdes * represent two separate response message types. 191295367Sdes */ 192221420Sdes 193295367Sdesenum ypbind_resptype { 19476259Sgreen YPBIND_SUCC_VAL = 1, 19576259Sgreen YPBIND_FAIL_VAL = 2 19692555Sdes}; 197221420Sdes 19876259Sgreenstruct ypbind_binding { 199295367Sdes opaque ypbind_binding_addr[4]; /* In network order */ 200295367Sdes opaque ypbind_binding_port[2]; /* In network order */ 201295367Sdes}; 202295367Sdes 20376259Sgreenunion ypbind_resp switch (ypbind_resptype ypbind_status) { 204295367Sdescase YPBIND_FAIL_VAL: 205295367Sdes unsigned ypbind_error; 206295367Sdescase YPBIND_SUCC_VAL: 207295367Sdes ypbind_binding ypbind_bindinfo; 208295367Sdes}; 209295367Sdes 21076259Sgreen/* Detailed failure reason codes for response field ypbind_error*/ 21176259Sgreen 21299060Sdesconst YPBIND_ERR_ERR = 1; /* Internal error */ 21376259Sgreenconst YPBIND_ERR_NOSERV = 2; /* No bound server for passed domain */ 21499060Sdesconst YPBIND_ERR_RESC = 3; /* System resource allocation failure */ 21576259Sgreen 21676259Sgreen 217295367Sdes/* 218295367Sdes * Request data structure for ypbind "Set domain" procedure. 219295367Sdes */ 22076259Sgreenstruct ypbind_setdom { 22199060Sdes domainname ypsetdom_domain; 22276259Sgreen ypbind_binding ypsetdom_binding; 223221420Sdes unsigned ypsetdom_vers; 22476259Sgreen}; 22576259Sgreen 226295367Sdes#if !defined(YPBIND_ONLY) && !defined(YPPUSH_ONLY) 227295367Sdes/* 228221420Sdes * YP access protocol 22976259Sgreen */ 230295367Sdesprogram YPPROG { 231295367Sdes version YPVERS { 232295367Sdes void 233295367Sdes YPPROC_NULL(void) = 0; 234295367Sdes 235204917Sdes bool 236295367Sdes YPPROC_DOMAIN(domainname) = 1; 23776259Sgreen 238204917Sdes bool 239204917Sdes YPPROC_DOMAIN_NONACK(domainname) = 2; 240204917Sdes 241204917Sdes ypresp_val 242204917Sdes YPPROC_MATCH(ypreq_key) = 3; 243295367Sdes 244295367Sdes ypresp_key_val 245295367Sdes#ifdef STUPID_SUN_BUG /* should be ypreq_nokey */ 246295367Sdes YPPROC_FIRST(ypreq_key) = 4; 247295367Sdes#else 248295367Sdes YPPROC_FIRST(ypreq_nokey) = 4; 24976259Sgreen#endif 25076259Sgreen ypresp_key_val 251204917Sdes YPPROC_NEXT(ypreq_key) = 5; 252204917Sdes 25376259Sgreen ypresp_xfr 254295367Sdes YPPROC_XFR(ypreq_xfr) = 6; 255295367Sdes 256204917Sdes void 257204917Sdes YPPROC_CLEAR(void) = 7; 258295367Sdes 25976259Sgreen ypresp_all 26076259Sgreen YPPROC_ALL(ypreq_nokey) = 8; 261204917Sdes 262204917Sdes ypresp_master 26376259Sgreen YPPROC_MASTER(ypreq_nokey) = 9; 264295367Sdes 265295367Sdes ypresp_order 266295367Sdes YPPROC_ORDER(ypreq_nokey) = 10; 26776259Sgreen 268295367Sdes ypresp_maplist 26976259Sgreen YPPROC_MAPLIST(domainname) = 11; 27076259Sgreen } = 2; 27192555Sdes} = 100004; 272221420Sdes#endif 27376259Sgreen#if !defined(YPSERV_ONLY) && !defined(YPBIND_ONLY) 274295367Sdes/* 275295367Sdes * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR 276295367Sdes */ 277295367Sdesprogram YPPUSH_XFRRESPPROG { 278295367Sdes version YPPUSH_XFRRESPVERS { 27976259Sgreen void 280295367Sdes YPPUSHPROC_NULL(void) = 0; 281295367Sdes#ifdef STUPID_SUN_BUG /* argument and return value are backwards */ 282295367Sdes yppushresp_xfr 28376259Sgreen YPPUSHPROC_XFRRESP(void) = 1; 284295367Sdes#else 285295367Sdes void 286295367Sdes YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1; 28776259Sgreen#endif 28899060Sdes } = 1; 28976259Sgreen} = 0x40000000; /* transient: could be anything up to 0x5fffffff */ 29099060Sdes#endif 29176259Sgreen#if !defined(YPSERV_ONLY) && !defined(YPPUSH_ONLY) 292295367Sdes/* 29376259Sgreen * YP binding protocol 294295367Sdes */ 295295367Sdesprogram YPBINDPROG { 29676259Sgreen version YPBINDVERS { 29776259Sgreen void 29876259Sgreen YPBINDPROC_NULL(void) = 0; 29976259Sgreen 300295367Sdes ypbind_resp 30176259Sgreen YPBINDPROC_DOMAIN(domainname) = 1; 30276259Sgreen 30399060Sdes void 30476259Sgreen YPBINDPROC_SETDOM(ypbind_setdom) = 2; 30576259Sgreen } = 2; 306295367Sdes} = 100007; 307295367Sdes 308295367Sdes#endif 309295367Sdes