yp.x revision 1832
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";*/
371832Swollman%static char rcsid[] = "$Id: yp.x,v 1.1 1993/09/14 17:42:53 jtc Exp $";
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;
1221832Swollman	keydat key;
1231832Swollman	valdat val;
1241832Swollman};
1251832Swollman
1261832Swollman
1271832Swollmanstruct ypresp_master {
1281832Swollman	ypstat stat;
1291832Swollman	peername peer;
1301832Swollman};
1311832Swollman
1321832Swollmanstruct ypresp_order {
1331832Swollman	ypstat stat;
1341832Swollman	unsigned int ordernum;
1351832Swollman};
1361832Swollman
1371832Swollmanunion ypresp_all switch (bool more) {
1381832Swollmancase TRUE:
1391832Swollman	ypresp_key_val val;
1401832Swollmancase FALSE:
1411832Swollman	void;
1421832Swollman};
1431832Swollman
1441832Swollmanstruct ypresp_xfr {
1451832Swollman	unsigned int transid;
1461832Swollman	ypxfrstat xfrstat;
1471832Swollman};
1481832Swollman
1491832Swollmanstruct ypmaplist {
1501832Swollman	mapname map;
1511832Swollman	ypmaplist *next;
1521832Swollman};
1531832Swollman
1541832Swollmanstruct ypresp_maplist {
1551832Swollman	ypstat stat;
1561832Swollman	ypmaplist *maps;
1571832Swollman};
1581832Swollman
1591832Swollmanenum yppush_status {
1601832Swollman	YPPUSH_SUCC	=  1,	/* Success */
1611832Swollman	YPPUSH_AGE 	=  2,	/* Master's version not newer */
1621832Swollman	YPPUSH_NOMAP	= -1,	/* Can't find server for map */
1631832Swollman	YPPUSH_NODOM	= -2,	/* Domain not supported */
1641832Swollman	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */
1651832Swollman	YPPUSH_RPC	= -4,	/* RPC failure talking to server */
1661832Swollman	YPPUSH_MADDR 	= -5,	/* Can't get master address */
1671832Swollman	YPPUSH_YPERR	= -6,	/* YP server/map db error */
1681832Swollman	YPPUSH_BADARGS	= -7,	/* Request arguments bad */
1691832Swollman	YPPUSH_DBM	= -8,	/* Local dbm operation failed */
1701832Swollman	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */
1711832Swollman	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */
1721832Swollman	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */
1731832Swollman	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */
1741832Swollman	YPPUSH_XFRERR 	= -13,	/* ypxfr error */
1751832Swollman	YPPUSH_REFUSED	= -14 	/* Transfer request refused by ypserv */
1761832Swollman};
1771832Swollman
1781832Swollmanstruct yppushresp_xfr {
1791832Swollman	unsigned transid;
1801832Swollman	yppush_status status;
1811832Swollman};
1821832Swollman
1831832Swollman/*
1841832Swollman * Response structure and overall result status codes.  Success and failure
1851832Swollman * represent two separate response message types.
1861832Swollman */
1871832Swollman
1881832Swollmanenum ypbind_resptype {
1891832Swollman	YPBIND_SUCC_VAL = 1,
1901832Swollman	YPBIND_FAIL_VAL = 2
1911832Swollman};
1921832Swollman
1931832Swollmanstruct ypbind_binding {
1941832Swollman    opaque ypbind_binding_addr[4]; /* In network order */
1951832Swollman    opaque ypbind_binding_port[2]; /* In network order */
1961832Swollman};
1971832Swollman
1981832Swollmanunion ypbind_resp switch (ypbind_resptype ypbind_status) {
1991832Swollmancase YPBIND_FAIL_VAL:
2001832Swollman        unsigned ypbind_error;
2011832Swollmancase YPBIND_SUCC_VAL:
2021832Swollman        ypbind_binding ypbind_bindinfo;
2031832Swollman};
2041832Swollman
2051832Swollman/* Detailed failure reason codes for response field ypbind_error*/
2061832Swollman
2071832Swollmanconst YPBIND_ERR_ERR    = 1;	/* Internal error */
2081832Swollmanconst YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
2091832Swollmanconst YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
2101832Swollman
2111832Swollman
2121832Swollman/*
2131832Swollman * Request data structure for ypbind "Set domain" procedure.
2141832Swollman */
2151832Swollmanstruct ypbind_setdom {
2161832Swollman	domainname ypsetdom_domain;
2171832Swollman	ypbind_binding ypsetdom_binding;
2181832Swollman	unsigned ypsetdom_vers;
2191832Swollman};
2201832Swollman
2211832Swollman
2221832Swollman/*
2231832Swollman * YP access protocol
2241832Swollman */
2251832Swollmanprogram YPPROG {
2261832Swollman	version YPVERS {
2271832Swollman		void
2281832Swollman		YPPROC_NULL(void) = 0;
2291832Swollman
2301832Swollman		bool
2311832Swollman		YPPROC_DOMAIN(domainname) = 1;
2321832Swollman
2331832Swollman		bool
2341832Swollman		YPPROC_DOMAIN_NONACK(domainname) = 2;
2351832Swollman
2361832Swollman		ypresp_val
2371832Swollman		YPPROC_MATCH(ypreq_key) = 3;
2381832Swollman
2391832Swollman		ypresp_key_val
2401832Swollman		YPPROC_FIRST(ypreq_key) = 4;
2411832Swollman
2421832Swollman		ypresp_key_val
2431832Swollman		YPPROC_NEXT(ypreq_key) = 5;
2441832Swollman
2451832Swollman		ypresp_xfr
2461832Swollman		YPPROC_XFR(ypreq_xfr) = 6;
2471832Swollman
2481832Swollman		void
2491832Swollman		YPPROC_CLEAR(void) = 7;
2501832Swollman
2511832Swollman		ypresp_all
2521832Swollman		YPPROC_ALL(ypreq_nokey) = 8;
2531832Swollman
2541832Swollman		ypresp_master
2551832Swollman		YPPROC_MASTER(ypreq_nokey) = 9;
2561832Swollman
2571832Swollman		ypresp_order
2581832Swollman		YPPROC_ORDER(ypreq_nokey) = 10;
2591832Swollman
2601832Swollman		ypresp_maplist
2611832Swollman		YPPROC_MAPLIST(domainname) = 11;
2621832Swollman	} = 2;
2631832Swollman} = 100004;
2641832Swollman
2651832Swollman
2661832Swollman/*
2671832Swollman * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
2681832Swollman */
2691832Swollmanprogram YPPUSH_XFRRESPPROG {
2701832Swollman	version YPPUSH_XFRRESPVERS {
2711832Swollman		void
2721832Swollman		YPPUSHPROC_NULL(void) = 0;
2731832Swollman
2741832Swollman		yppushresp_xfr
2751832Swollman		YPPUSHPROC_XFRRESP(void) = 1;
2761832Swollman	} = 1;
2771832Swollman} = 0x40000000;	/* transient: could be anything up to 0x5fffffff */
2781832Swollman
2791832Swollman
2801832Swollman/*
2811832Swollman * YP binding protocol
2821832Swollman */
2831832Swollmanprogram YPBINDPROG {
2841832Swollman	version YPBINDVERS {
2851832Swollman		void
2861832Swollman		YPBINDPROC_NULL(void) = 0;
2871832Swollman
2881832Swollman		ypbind_resp
2891832Swollman		YPBINDPROC_DOMAIN(domainname) = 1;
2901832Swollman
2911832Swollman		void
2921832Swollman		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
2931832Swollman	} = 2;
2941832Swollman} = 100007;
2951832Swollman
2961832Swollman
297