Blame nis/rpcsvc/yp.x

Packit 6c4009
/* @(#)yp.x	2.1 88/08/01 4.0 RPCSRC */
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Copyright (c) 2010, Oracle America, Inc.
Packit 6c4009
 *
Packit 6c4009
 * Redistribution and use in source and binary forms, with or without
Packit 6c4009
 * modification, are permitted provided that the following conditions are
Packit 6c4009
 * met:
Packit 6c4009
 *
Packit 6c4009
 *     * Redistributions of source code must retain the above copyright
Packit 6c4009
 *       notice, this list of conditions and the following disclaimer.
Packit 6c4009
 *     * Redistributions in binary form must reproduce the above
Packit 6c4009
 *       copyright notice, this list of conditions and the following
Packit 6c4009
 *       disclaimer in the documentation and/or other materials
Packit 6c4009
 *       provided with the distribution.
Packit 6c4009
 *     * Neither the name of the "Oracle America, Inc." nor the names of its
Packit 6c4009
 *       contributors may be used to endorse or promote products derived
Packit 6c4009
 *       from this software without specific prior written permission.
Packit 6c4009
 *
Packit 6c4009
 *   THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
Packit 6c4009
 *   "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
Packit 6c4009
 *   LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
Packit 6c4009
 *   FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
Packit 6c4009
 *   COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
Packit 6c4009
 *   INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
Packit 6c4009
 *   DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
Packit 6c4009
 *   GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
Packit 6c4009
 *   INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
Packit 6c4009
 *   WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
Packit 6c4009
 *   NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
Packit 6c4009
 *   OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Protocol description file for the Yellow Pages Service
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
const YPMAXRECORD = 1024;
Packit 6c4009
const YPMAXDOMAIN = 64;
Packit 6c4009
const YPMAXMAP = 64;
Packit 6c4009
const YPMAXPEER = 64;
Packit 6c4009
Packit 6c4009
Packit 6c4009
enum ypstat {
Packit 6c4009
	YP_TRUE		=  1,
Packit 6c4009
	YP_NOMORE	=  2,
Packit 6c4009
	YP_FALSE	=  0,
Packit 6c4009
	YP_NOMAP	= -1,
Packit 6c4009
	YP_NODOM	= -2,
Packit 6c4009
	YP_NOKEY	= -3,
Packit 6c4009
	YP_BADOP	= -4,
Packit 6c4009
	YP_BADDB	= -5,
Packit 6c4009
	YP_YPERR	= -6,
Packit 6c4009
	YP_BADARGS	= -7,
Packit 6c4009
	YP_VERS		= -8
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
enum ypxfrstat {
Packit 6c4009
	YPXFR_SUCC	=  1,
Packit 6c4009
	YPXFR_AGE	=  2,
Packit 6c4009
	YPXFR_NOMAP	= -1,
Packit 6c4009
	YPXFR_NODOM	= -2,
Packit 6c4009
	YPXFR_RSRC	= -3,
Packit 6c4009
	YPXFR_RPC	= -4,
Packit 6c4009
	YPXFR_MADDR	= -5,
Packit 6c4009
	YPXFR_YPERR	= -6,
Packit 6c4009
	YPXFR_BADARGS	= -7,
Packit 6c4009
	YPXFR_DBM	= -8,
Packit 6c4009
	YPXFR_FILE	= -9,
Packit 6c4009
	YPXFR_SKEW	= -10,
Packit 6c4009
	YPXFR_CLEAR	= -11,
Packit 6c4009
	YPXFR_FORCE	= -12,
Packit 6c4009
	YPXFR_XFRERR	= -13,
Packit 6c4009
	YPXFR_REFUSED	= -14
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
typedef string domainname<YPMAXDOMAIN>;
Packit 6c4009
typedef string mapname<YPMAXMAP>;
Packit 6c4009
typedef string peername<YPMAXPEER>;
Packit 6c4009
typedef opaque keydat<YPMAXRECORD>;
Packit 6c4009
typedef opaque valdat<YPMAXRECORD>;
Packit 6c4009
Packit 6c4009
Packit 6c4009
struct ypmap_parms {
Packit 6c4009
	domainname domain;
Packit 6c4009
	mapname map;
Packit 6c4009
	unsigned int ordernum;
Packit 6c4009
	peername peer;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypreq_key {
Packit 6c4009
	domainname domain;
Packit 6c4009
	mapname map;
Packit 6c4009
	keydat key;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypreq_nokey {
Packit 6c4009
	domainname domain;
Packit 6c4009
	mapname map;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypreq_xfr {
Packit 6c4009
	ypmap_parms map_parms;
Packit 6c4009
	unsigned int transid;
Packit 6c4009
	unsigned int prog;
Packit 6c4009
	unsigned int port;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
struct ypresp_val {
Packit 6c4009
	ypstat stat;
Packit 6c4009
	valdat val;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypresp_key_val {
Packit 6c4009
	ypstat stat;
Packit 6c4009
#ifdef STUPID_SUN_BUG
Packit 6c4009
	/* This is the form as distributed by Sun.  But even the Sun NIS
Packit 6c4009
	   servers expect the values in the other order.  So their
Packit 6c4009
	   implementation somehow must change the order internally.  We
Packit 6c4009
	   don't want to follow this bad example since the user should be
Packit 6c4009
	   able to use rpcgen on this file.  */
Packit 6c4009
	keydat key;
Packit 6c4009
	valdat val;
Packit 6c4009
#else
Packit 6c4009
	valdat val;
Packit 6c4009
	keydat key;
Packit 6c4009
#endif
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
struct ypresp_master {
Packit 6c4009
	ypstat stat;
Packit 6c4009
	peername peer;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypresp_order {
Packit 6c4009
	ypstat stat;
Packit 6c4009
	unsigned int ordernum;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
union ypresp_all switch (bool more) {
Packit 6c4009
case TRUE:
Packit 6c4009
	ypresp_key_val val;
Packit 6c4009
case FALSE:
Packit 6c4009
	void;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypresp_xfr {
Packit 6c4009
	unsigned int transid;
Packit 6c4009
	ypxfrstat xfrstat;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypmaplist {
Packit 6c4009
	mapname map;
Packit 6c4009
	ypmaplist *next;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypresp_maplist {
Packit 6c4009
	ypstat stat;
Packit 6c4009
	ypmaplist *maps;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
enum yppush_status {
Packit 6c4009
	YPPUSH_SUCC	=  1,	/* Success */
Packit 6c4009
	YPPUSH_AGE	=  2,	/* Master's version not newer */
Packit 6c4009
	YPPUSH_NOMAP	= -1,	/* Can't find server for map */
Packit 6c4009
	YPPUSH_NODOM	= -2,	/* Domain not supported */
Packit 6c4009
	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */
Packit 6c4009
	YPPUSH_RPC	= -4,	/* RPC failure talking to server */
Packit 6c4009
	YPPUSH_MADDR	= -5,	/* Can't get master address */
Packit 6c4009
	YPPUSH_YPERR	= -6,	/* YP server/map db error */
Packit 6c4009
	YPPUSH_BADARGS	= -7,	/* Request arguments bad */
Packit 6c4009
	YPPUSH_DBM	= -8,	/* Local dbm operation failed */
Packit 6c4009
	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */
Packit 6c4009
	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */
Packit 6c4009
	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */
Packit 6c4009
	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */
Packit 6c4009
	YPPUSH_XFRERR	= -13,	/* ypxfr error */
Packit 6c4009
	YPPUSH_REFUSED	= -14	/* Transfer request refused by ypserv */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct yppushresp_xfr {
Packit 6c4009
	unsigned transid;
Packit 6c4009
	yppush_status status;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Response structure and overall result status codes.  Success and failure
Packit 6c4009
 * represent two separate response message types.
Packit 6c4009
 */
Packit 6c4009
Packit 6c4009
enum ypbind_resptype {
Packit 6c4009
	YPBIND_SUCC_VAL = 1,
Packit 6c4009
	YPBIND_FAIL_VAL = 2
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
struct ypbind_binding {
Packit 6c4009
    opaque ypbind_binding_addr[4]; /* In network order */
Packit 6c4009
    opaque ypbind_binding_port[2]; /* In network order */
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
union ypbind_resp switch (ypbind_resptype ypbind_status) {
Packit 6c4009
case YPBIND_FAIL_VAL:
Packit 6c4009
	unsigned ypbind_error;
Packit 6c4009
case YPBIND_SUCC_VAL:
Packit 6c4009
	ypbind_binding ypbind_bindinfo;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
/* Detailed failure reason codes for response field ypbind_error*/
Packit 6c4009
Packit 6c4009
const YPBIND_ERR_ERR    = 1;	/* Internal error */
Packit 6c4009
const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
Packit 6c4009
const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
Packit 6c4009
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * Request data structure for ypbind "Set domain" procedure.
Packit 6c4009
 */
Packit 6c4009
struct ypbind_setdom {
Packit 6c4009
	domainname ypsetdom_domain;
Packit 6c4009
	ypbind_binding ypsetdom_binding;
Packit 6c4009
	unsigned ypsetdom_vers;
Packit 6c4009
};
Packit 6c4009
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * YP access protocol
Packit 6c4009
 */
Packit 6c4009
program YPPROG {
Packit 6c4009
	version YPVERS {
Packit 6c4009
		void
Packit 6c4009
		YPPROC_NULL(void) = 0;
Packit 6c4009
Packit 6c4009
		bool
Packit 6c4009
		YPPROC_DOMAIN(domainname) = 1;
Packit 6c4009
Packit 6c4009
		bool
Packit 6c4009
		YPPROC_DOMAIN_NONACK(domainname) = 2;
Packit 6c4009
Packit 6c4009
		ypresp_val
Packit 6c4009
		YPPROC_MATCH(ypreq_key) = 3;
Packit 6c4009
Packit 6c4009
		ypresp_key_val
Packit 6c4009
		YPPROC_FIRST(ypreq_key) = 4;
Packit 6c4009
Packit 6c4009
		ypresp_key_val
Packit 6c4009
		YPPROC_NEXT(ypreq_key) = 5;
Packit 6c4009
Packit 6c4009
		ypresp_xfr
Packit 6c4009
		YPPROC_XFR(ypreq_xfr) = 6;
Packit 6c4009
Packit 6c4009
		void
Packit 6c4009
		YPPROC_CLEAR(void) = 7;
Packit 6c4009
Packit 6c4009
		ypresp_all
Packit 6c4009
		YPPROC_ALL(ypreq_nokey) = 8;
Packit 6c4009
Packit 6c4009
		ypresp_master
Packit 6c4009
		YPPROC_MASTER(ypreq_nokey) = 9;
Packit 6c4009
Packit 6c4009
		ypresp_order
Packit 6c4009
		YPPROC_ORDER(ypreq_nokey) = 10;
Packit 6c4009
Packit 6c4009
		ypresp_maplist
Packit 6c4009
		YPPROC_MAPLIST(domainname) = 11;
Packit 6c4009
	} = 2;
Packit 6c4009
} = 100004;
Packit 6c4009
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
Packit 6c4009
 */
Packit 6c4009
program YPPUSH_XFRRESPPROG {
Packit 6c4009
	version YPPUSH_XFRRESPVERS {
Packit 6c4009
		void
Packit 6c4009
		YPPUSHPROC_NULL(void) = 0;
Packit 6c4009
Packit 6c4009
#ifdef STUPID_SUN_BUG
Packit 6c4009
		/* This is the form as distributed by Sun.  But even
Packit 6c4009
		   the Sun NIS servers expect the values in the other
Packit 6c4009
		   order.  So their implementation somehow must change
Packit 6c4009
		   the order internally.  We don't want to follow this
Packit 6c4009
		   bad example since the user should be able to use
Packit 6c4009
		   rpcgen on this file.  */
Packit 6c4009
		yppushresp_xfr
Packit 6c4009
		YPPUSHPROC_XFRRESP(void) = 1;
Packit 6c4009
#else
Packit 6c4009
		void
Packit 6c4009
		YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
Packit 6c4009
#endif
Packit 6c4009
	} = 1;
Packit 6c4009
} = 0x40000000;	/* transient: could be anything up to 0x5fffffff */
Packit 6c4009
Packit 6c4009
/*
Packit 6c4009
 * YP binding protocol
Packit 6c4009
 */
Packit 6c4009
program YPBINDPROG {
Packit 6c4009
	version YPBINDVERS {
Packit 6c4009
		void
Packit 6c4009
		YPBINDPROC_NULL(void) = 0;
Packit 6c4009
Packit 6c4009
		ypbind_resp
Packit 6c4009
		YPBINDPROC_DOMAIN(domainname) = 1;
Packit 6c4009
Packit 6c4009
		void
Packit 6c4009
		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
Packit 6c4009
	} = 2;
Packit 6c4009
} = 100007;