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