Home | History | Annotate | Line # | Download | only in librpcsvc
yp.x revision 1.4.12.1
      1       1.1     jtc /*
      2       1.1     jtc  * Sun RPC is a product of Sun Microsystems, Inc. and is provided for
      3       1.1     jtc  * unrestricted use provided that this legend is included on all tape
      4       1.1     jtc  * media and as a part of the software program in whole or part.  Users
      5       1.1     jtc  * may copy or modify Sun RPC without charge, but are not authorized
      6       1.1     jtc  * to license or distribute it to anyone else except as part of a product or
      7       1.1     jtc  * program developed by the user.
      8       1.4  simonb  *
      9       1.1     jtc  * SUN RPC IS PROVIDED AS IS WITH NO WARRANTIES OF ANY KIND INCLUDING THE
     10       1.1     jtc  * WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS FOR A PARTICULAR
     11       1.1     jtc  * PURPOSE, OR ARISING FROM A COURSE OF DEALING, USAGE OR TRADE PRACTICE.
     12       1.4  simonb  *
     13       1.1     jtc  * Sun RPC is provided with no support and without any obligation on the
     14       1.1     jtc  * part of Sun Microsystems, Inc. to assist in its use, correction,
     15       1.1     jtc  * modification or enhancement.
     16       1.4  simonb  *
     17       1.1     jtc  * SUN MICROSYSTEMS, INC. SHALL HAVE NO LIABILITY WITH RESPECT TO THE
     18       1.1     jtc  * INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY SUN RPC
     19       1.1     jtc  * OR ANY PART THEREOF.
     20       1.4  simonb  *
     21       1.1     jtc  * In no event will Sun Microsystems, Inc. be liable for any lost revenue
     22       1.1     jtc  * or profits or other special, indirect and consequential damages, even if
     23       1.1     jtc  * Sun has been advised of the possibility of such damages.
     24       1.4  simonb  *
     25       1.1     jtc  * Sun Microsystems, Inc.
     26       1.1     jtc  * 2550 Garcia Avenue
     27       1.1     jtc  * Mountain View, California  94043
     28       1.1     jtc  */
     29       1.1     jtc 
     30       1.1     jtc /*
     31       1.1     jtc  * Protocol description file for the Yellow Pages Service
     32       1.1     jtc  */
     33       1.1     jtc 
     34       1.1     jtc #ifndef RPC_HDR
     35       1.3   lukem %#include <sys/cdefs.h>
     36  1.4.12.1      he %#ifndef __lint__
     37       1.1     jtc %/*static char sccsid[] = "from: @(#)yp.x	2.1 88/08/01 4.0 RPCSRC";*/
     38  1.4.12.1      he %__RCSID("$NetBSD: yp.x,v 1.4.12.1 2004/07/02 18:19:42 he Exp $");
     39  1.4.12.1      he %#endif /* not __lint__ */
     40       1.1     jtc #endif
     41       1.1     jtc 
     42       1.1     jtc const YPMAXRECORD = 1024;
     43       1.1     jtc const YPMAXDOMAIN = 64;
     44       1.1     jtc const YPMAXMAP = 64;
     45       1.1     jtc const YPMAXPEER = 64;
     46       1.1     jtc 
     47       1.1     jtc 
     48       1.1     jtc enum ypstat {
     49       1.1     jtc 	YP_TRUE		=  1,
     50       1.1     jtc 	YP_NOMORE	=  2,
     51       1.1     jtc 	YP_FALSE	=  0,
     52       1.1     jtc 	YP_NOMAP	= -1,
     53       1.1     jtc 	YP_NODOM	= -2,
     54       1.1     jtc 	YP_NOKEY	= -3,
     55       1.1     jtc 	YP_BADOP	= -4,
     56       1.1     jtc 	YP_BADDB	= -5,
     57       1.1     jtc 	YP_YPERR	= -6,
     58       1.1     jtc 	YP_BADARGS	= -7,
     59       1.1     jtc 	YP_VERS		= -8
     60       1.1     jtc };
     61       1.1     jtc 
     62       1.1     jtc 
     63       1.1     jtc enum ypxfrstat {
     64       1.1     jtc 	YPXFR_SUCC	=  1,
     65       1.1     jtc 	YPXFR_AGE	=  2,
     66       1.1     jtc 	YPXFR_NOMAP	= -1,
     67       1.1     jtc 	YPXFR_NODOM	= -2,
     68       1.1     jtc 	YPXFR_RSRC	= -3,
     69       1.1     jtc 	YPXFR_RPC	= -4,
     70       1.1     jtc 	YPXFR_MADDR	= -5,
     71       1.1     jtc 	YPXFR_YPERR	= -6,
     72       1.1     jtc 	YPXFR_BADARGS	= -7,
     73       1.1     jtc 	YPXFR_DBM	= -8,
     74       1.1     jtc 	YPXFR_FILE	= -9,
     75       1.1     jtc 	YPXFR_SKEW	= -10,
     76       1.1     jtc 	YPXFR_CLEAR	= -11,
     77       1.1     jtc 	YPXFR_FORCE	= -12,
     78       1.1     jtc 	YPXFR_XFRERR	= -13,
     79       1.1     jtc 	YPXFR_REFUSED	= -14
     80       1.1     jtc };
     81       1.1     jtc 
     82       1.1     jtc 
     83       1.1     jtc typedef string domainname<YPMAXDOMAIN>;
     84       1.1     jtc typedef string mapname<YPMAXMAP>;
     85       1.1     jtc typedef string peername<YPMAXPEER>;
     86       1.1     jtc typedef opaque keydat<YPMAXRECORD>;
     87       1.1     jtc typedef opaque valdat<YPMAXRECORD>;
     88       1.1     jtc 
     89       1.1     jtc 
     90       1.1     jtc struct ypmap_parms {
     91       1.4  simonb 	domainname domain;
     92       1.1     jtc 	mapname map;
     93       1.1     jtc 	unsigned int ordernum;
     94       1.1     jtc 	peername peer;
     95       1.1     jtc };
     96       1.1     jtc 
     97       1.1     jtc struct ypreq_key {
     98       1.1     jtc 	domainname domain;
     99       1.1     jtc 	mapname map;
    100       1.1     jtc 	keydat key;
    101       1.1     jtc };
    102       1.1     jtc 
    103       1.1     jtc struct ypreq_nokey {
    104       1.4  simonb 	domainname domain;
    105       1.1     jtc 	mapname map;
    106       1.1     jtc };
    107       1.4  simonb 
    108       1.1     jtc struct ypreq_xfr {
    109       1.1     jtc 	ypmap_parms map_parms;
    110       1.1     jtc 	unsigned int transid;
    111       1.1     jtc 	unsigned int prog;
    112       1.1     jtc 	unsigned int port;
    113       1.1     jtc };
    114       1.1     jtc 
    115       1.1     jtc 
    116       1.1     jtc struct ypresp_val {
    117       1.1     jtc 	ypstat stat;
    118       1.1     jtc 	valdat val;
    119       1.1     jtc };
    120       1.1     jtc 
    121       1.1     jtc struct ypresp_key_val {
    122       1.1     jtc 	ypstat stat;
    123       1.1     jtc 	keydat key;
    124       1.1     jtc 	valdat val;
    125       1.1     jtc };
    126       1.1     jtc 
    127       1.1     jtc 
    128       1.1     jtc struct ypresp_master {
    129       1.4  simonb 	ypstat stat;
    130       1.1     jtc 	peername peer;
    131       1.1     jtc };
    132       1.1     jtc 
    133       1.1     jtc struct ypresp_order {
    134       1.1     jtc 	ypstat stat;
    135       1.1     jtc 	unsigned int ordernum;
    136       1.1     jtc };
    137       1.1     jtc 
    138       1.1     jtc union ypresp_all switch (bool more) {
    139       1.1     jtc case TRUE:
    140       1.1     jtc 	ypresp_key_val val;
    141       1.1     jtc case FALSE:
    142       1.1     jtc 	void;
    143       1.1     jtc };
    144       1.1     jtc 
    145       1.1     jtc struct ypresp_xfr {
    146       1.1     jtc 	unsigned int transid;
    147       1.1     jtc 	ypxfrstat xfrstat;
    148       1.1     jtc };
    149       1.1     jtc 
    150       1.1     jtc struct ypmaplist {
    151       1.1     jtc 	mapname map;
    152       1.1     jtc 	ypmaplist *next;
    153       1.1     jtc };
    154       1.1     jtc 
    155       1.1     jtc struct ypresp_maplist {
    156       1.1     jtc 	ypstat stat;
    157       1.1     jtc 	ypmaplist *maps;
    158       1.1     jtc };
    159       1.1     jtc 
    160       1.1     jtc enum yppush_status {
    161       1.1     jtc 	YPPUSH_SUCC	=  1,	/* Success */
    162       1.1     jtc 	YPPUSH_AGE 	=  2,	/* Master's version not newer */
    163       1.1     jtc 	YPPUSH_NOMAP	= -1,	/* Can't find server for map */
    164       1.1     jtc 	YPPUSH_NODOM	= -2,	/* Domain not supported */
    165       1.1     jtc 	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */
    166       1.1     jtc 	YPPUSH_RPC	= -4,	/* RPC failure talking to server */
    167       1.1     jtc 	YPPUSH_MADDR 	= -5,	/* Can't get master address */
    168       1.1     jtc 	YPPUSH_YPERR	= -6,	/* YP server/map db error */
    169       1.1     jtc 	YPPUSH_BADARGS	= -7,	/* Request arguments bad */
    170       1.1     jtc 	YPPUSH_DBM	= -8,	/* Local dbm operation failed */
    171       1.1     jtc 	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */
    172       1.1     jtc 	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */
    173       1.1     jtc 	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */
    174       1.1     jtc 	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */
    175       1.1     jtc 	YPPUSH_XFRERR 	= -13,	/* ypxfr error */
    176       1.1     jtc 	YPPUSH_REFUSED	= -14 	/* Transfer request refused by ypserv */
    177       1.1     jtc };
    178       1.1     jtc 
    179       1.1     jtc struct yppushresp_xfr {
    180       1.1     jtc 	unsigned transid;
    181       1.1     jtc 	yppush_status status;
    182       1.1     jtc };
    183       1.1     jtc 
    184       1.1     jtc /*
    185       1.1     jtc  * Response structure and overall result status codes.  Success and failure
    186       1.1     jtc  * represent two separate response message types.
    187       1.1     jtc  */
    188       1.4  simonb 
    189       1.1     jtc enum ypbind_resptype {
    190       1.4  simonb 	YPBIND_SUCC_VAL = 1,
    191       1.1     jtc 	YPBIND_FAIL_VAL = 2
    192       1.1     jtc };
    193       1.4  simonb 
    194       1.1     jtc struct ypbind_binding {
    195       1.1     jtc     opaque ypbind_binding_addr[4]; /* In network order */
    196       1.1     jtc     opaque ypbind_binding_port[2]; /* In network order */
    197       1.4  simonb };
    198       1.1     jtc 
    199       1.1     jtc union ypbind_resp switch (ypbind_resptype ypbind_status) {
    200       1.1     jtc case YPBIND_FAIL_VAL:
    201       1.1     jtc         unsigned ypbind_error;
    202       1.1     jtc case YPBIND_SUCC_VAL:
    203       1.1     jtc         ypbind_binding ypbind_bindinfo;
    204       1.4  simonb };
    205       1.1     jtc 
    206       1.1     jtc /* Detailed failure reason codes for response field ypbind_error*/
    207       1.4  simonb 
    208       1.1     jtc const YPBIND_ERR_ERR    = 1;	/* Internal error */
    209       1.1     jtc const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
    210       1.1     jtc const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
    211       1.4  simonb 
    212       1.4  simonb 
    213       1.1     jtc /*
    214       1.1     jtc  * Request data structure for ypbind "Set domain" procedure.
    215       1.1     jtc  */
    216       1.1     jtc struct ypbind_setdom {
    217       1.1     jtc 	domainname ypsetdom_domain;
    218       1.1     jtc 	ypbind_binding ypsetdom_binding;
    219       1.1     jtc 	unsigned ypsetdom_vers;
    220       1.1     jtc };
    221       1.1     jtc 
    222       1.1     jtc 
    223       1.1     jtc /*
    224       1.1     jtc  * YP access protocol
    225       1.1     jtc  */
    226       1.1     jtc program YPPROG {
    227       1.1     jtc 	version YPVERS {
    228       1.4  simonb 		void
    229       1.1     jtc 		YPPROC_NULL(void) = 0;
    230       1.1     jtc 
    231       1.4  simonb 		bool
    232       1.4  simonb 		YPPROC_DOMAIN(domainname) = 1;
    233       1.1     jtc 
    234       1.1     jtc 		bool
    235       1.1     jtc 		YPPROC_DOMAIN_NONACK(domainname) = 2;
    236       1.1     jtc 
    237       1.1     jtc 		ypresp_val
    238       1.1     jtc 		YPPROC_MATCH(ypreq_key) = 3;
    239       1.1     jtc 
    240       1.4  simonb 		ypresp_key_val
    241       1.1     jtc 		YPPROC_FIRST(ypreq_key) = 4;
    242       1.1     jtc 
    243       1.4  simonb 		ypresp_key_val
    244       1.1     jtc 		YPPROC_NEXT(ypreq_key) = 5;
    245       1.1     jtc 
    246       1.1     jtc 		ypresp_xfr
    247       1.1     jtc 		YPPROC_XFR(ypreq_xfr) = 6;
    248       1.1     jtc 
    249       1.1     jtc 		void
    250       1.1     jtc 		YPPROC_CLEAR(void) = 7;
    251       1.1     jtc 
    252       1.1     jtc 		ypresp_all
    253       1.1     jtc 		YPPROC_ALL(ypreq_nokey) = 8;
    254       1.1     jtc 
    255       1.1     jtc 		ypresp_master
    256       1.1     jtc 		YPPROC_MASTER(ypreq_nokey) = 9;
    257       1.1     jtc 
    258       1.1     jtc 		ypresp_order
    259       1.1     jtc 		YPPROC_ORDER(ypreq_nokey) = 10;
    260       1.1     jtc 
    261       1.4  simonb 		ypresp_maplist
    262       1.1     jtc 		YPPROC_MAPLIST(domainname) = 11;
    263       1.1     jtc 	} = 2;
    264       1.1     jtc } = 100004;
    265       1.1     jtc 
    266       1.1     jtc 
    267       1.1     jtc /*
    268       1.1     jtc  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
    269       1.1     jtc  */
    270       1.1     jtc program YPPUSH_XFRRESPPROG {
    271       1.1     jtc 	version YPPUSH_XFRRESPVERS {
    272       1.1     jtc 		void
    273       1.1     jtc 		YPPUSHPROC_NULL(void) = 0;
    274       1.1     jtc 
    275       1.4  simonb 		yppushresp_xfr
    276       1.1     jtc 		YPPUSHPROC_XFRRESP(void) = 1;
    277       1.1     jtc 	} = 1;
    278       1.1     jtc } = 0x40000000;	/* transient: could be anything up to 0x5fffffff */
    279       1.1     jtc 
    280       1.1     jtc 
    281       1.1     jtc /*
    282       1.1     jtc  * YP binding protocol
    283       1.1     jtc  */
    284       1.1     jtc program YPBINDPROG {
    285       1.1     jtc 	version YPBINDVERS {
    286       1.1     jtc 		void
    287       1.1     jtc 		YPBINDPROC_NULL(void) = 0;
    288       1.4  simonb 
    289       1.1     jtc 		ypbind_resp
    290       1.1     jtc 		YPBINDPROC_DOMAIN(domainname) = 1;
    291       1.1     jtc 
    292       1.1     jtc 		void
    293       1.1     jtc 		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
    294       1.1     jtc 	} = 2;
    295       1.1     jtc } = 100007;
    296       1.1     jtc 
    297       1.1     jtc 
    298