Home | History | Annotate | Download | only in rpcsvc
      1 /*
      2  * CDDL HEADER START
      3  *
      4  * The contents of this file are subject to the terms of the
      5  * Common Development and Distribution License, Version 1.0 only
      6  * (the "License").  You may not use this file except in compliance
      7  * with the License.
      8  *
      9  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
     10  * or http://www.opensolaris.org/os/licensing.
     11  * See the License for the specific language governing permissions
     12  * and limitations under the License.
     13  *
     14  * When distributing Covered Code, include this CDDL HEADER in each
     15  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
     16  * If applicable, add the following below this CDDL HEADER, with the
     17  * fields enclosed by brackets "[]" replaced with your own identifying
     18  * information: Portions Copyright [yyyy] [name of copyright owner]
     19  *
     20  * CDDL HEADER END
     21  */
     22 /*
     23  *	yp.x
     24  *
     25  *	Copyright (c) 1988-1992 Sun Microsystems Inc
     26  *	All Rights Reserved.
     27  */
     28 
     29 %#pragma ident	"%Z%%M%	%I%	%E% SMI"
     30 
     31 /*
     32  * Protocol description file for the Network Information Services
     33  */
     34 
     35 const YPMAXRECORD = 1024;
     36 const YPMAXDOMAIN = 256;
     37 const YPMAXMAP = 64;
     38 const YPMAXPEER = 64;
     39 
     40 
     41 enum ypstat {
     42 	YP_TRUE		=  1,
     43 	YP_NOMORE	=  2,
     44 	YP_FALSE	=  0,
     45 	YP_NOMAP	= -1,
     46 	YP_NODOM	= -2,
     47 	YP_NOKEY	= -3,
     48 	YP_BADOP	= -4,
     49 	YP_BADDB	= -5,
     50 	YP_YPERR	= -6,
     51 	YP_BADARGS	= -7,
     52 	YP_VERS		= -8
     53 };
     54 
     55 
     56 enum ypxfrstat {
     57 	YPXFR_SUCC	=  1,
     58 	YPXFR_AGE	=  2,
     59 	YPXFR_NOMAP	= -1,
     60 	YPXFR_NODOM	= -2,
     61 	YPXFR_RSRC	= -3,
     62 	YPXFR_RPC	= -4,
     63 	YPXFR_MADDR	= -5,
     64 	YPXFR_YPERR	= -6,
     65 	YPXFR_BADARGS	= -7,
     66 	YPXFR_DBM	= -8,
     67 	YPXFR_FILE	= -9,
     68 	YPXFR_SKEW	= -10,
     69 	YPXFR_CLEAR	= -11,
     70 	YPXFR_FORCE	= -12,
     71 	YPXFR_XFRERR	= -13,
     72 	YPXFR_REFUSED	= -14
     73 };
     74 
     75 
     76 typedef string domainname<YPMAXDOMAIN>;
     77 typedef string mapname<YPMAXMAP>;
     78 typedef string peername<YPMAXPEER>;
     79 typedef opaque keydat<YPMAXRECORD>;
     80 typedef opaque valdat<YPMAXRECORD>;
     81 
     82 
     83 struct ypmap_parms {
     84 	domainname domain;
     85 	mapname map;
     86 	unsigned int ordernum;
     87 	peername peer;
     88 };
     89 
     90 struct ypreq_key {
     91 	domainname domain;
     92 	mapname map;
     93 	keydat key;
     94 };
     95 
     96 struct ypreq_nokey {
     97 	domainname domain;
     98 	mapname map;
     99 };
    100 
    101 struct ypreq_xfr {
    102 	ypmap_parms map_parms;
    103 	unsigned int transid;
    104 	unsigned int prog;
    105 	unsigned int port;
    106 };
    107 
    108 
    109 struct ypresp_val {
    110 	ypstat stat;
    111 	valdat val;
    112 };
    113 
    114 struct ypresp_key_val {
    115 	ypstat stat;
    116 	valdat val;
    117 	keydat key;
    118 };
    119 
    120 
    121 struct ypresp_master {
    122 	ypstat stat;
    123 	peername peer;
    124 };
    125 
    126 struct ypresp_order {
    127 	ypstat stat;
    128 	unsigned int ordernum;
    129 };
    130 
    131 union ypresp_all switch (bool more) {
    132 case TRUE:
    133 	ypresp_key_val val;
    134 case FALSE:
    135 	void;
    136 };
    137 
    138 struct ypresp_xfr {
    139 	unsigned int transid;
    140 	ypxfrstat xfrstat;
    141 };
    142 
    143 struct ypmaplist {
    144 	mapname map;
    145 	ypmaplist *next;
    146 };
    147 
    148 struct ypresp_maplist {
    149 	ypstat stat;
    150 	ypmaplist *maps;
    151 };
    152 
    153 enum yppush_status {
    154 	YPPUSH_SUCC	=  1,	/* Success */
    155 	YPPUSH_AGE 	=  2,	/* Master's version not newer */
    156 	YPPUSH_NOMAP	= -1,	/* Can't find server for map */
    157 	YPPUSH_NODOM	= -2,	/* Domain not supported */
    158 	YPPUSH_RSRC	= -3,	/* Local resource alloc failure */
    159 	YPPUSH_RPC	= -4,	/* RPC failure talking to server */
    160 	YPPUSH_MADDR 	= -5,	/* Can't get master address */
    161 	YPPUSH_YPERR	= -6,	/* NIS server/map db error */
    162 	YPPUSH_BADARGS	= -7,	/* Request arguments bad */
    163 	YPPUSH_DBM	= -8,	/* Local dbm operation failed */
    164 	YPPUSH_FILE	= -9,	/* Local file I/O operation failed */
    165 	YPPUSH_SKEW	= -10,	/* Map version skew during transfer */
    166 	YPPUSH_CLEAR	= -11,	/* Can't send "Clear" req to local ypserv */
    167 	YPPUSH_FORCE	= -12,	/* No local order number in map  use -f flag. */
    168 	YPPUSH_XFRERR 	= -13,	/* ypxfr error */
    169 	YPPUSH_REFUSED	= -14 	/* Transfer request refused by ypserv */
    170 };
    171 
    172 struct yppushresp_xfr {
    173 	unsigned transid;
    174 	yppush_status status;
    175 };
    176 
    177 /*
    178  * Response structure and overall result status codes.  Success and failure
    179  * represent two separate response message types.
    180  */
    181 
    182 enum ypbind_resptype {
    183 	YPBIND_SUCC_VAL = 1,
    184 	YPBIND_FAIL_VAL = 2
    185 };
    186 
    187 struct ypbind_binding {
    188     opaque ypbind_binding_addr[4]; /* In network order */
    189     opaque ypbind_binding_port[2]; /* In network order */
    190 };
    191 
    192 union ypbind_resp switch (ypbind_resptype ypbind_status) {
    193 case YPBIND_FAIL_VAL:
    194         unsigned ypbind_error;
    195 case YPBIND_SUCC_VAL:
    196         ypbind_binding ypbind_bindinfo;
    197 };
    198 
    199 /* Detailed failure reason codes for response field ypbind_error*/
    200 
    201 const YPBIND_ERR_ERR    = 1;	/* Internal error */
    202 const YPBIND_ERR_NOSERV = 2;	/* No bound server for passed domain */
    203 const YPBIND_ERR_RESC   = 3;	/* System resource allocation failure */
    204 
    205 
    206 /*
    207  * Request data structure for ypbind "Set domain" procedure.
    208  */
    209 struct ypbind_setdom {
    210 	domainname ypsetdom_domain;
    211 	ypbind_binding ypsetdom_binding;
    212 	unsigned ypsetdom_vers;
    213 };
    214 
    215 
    216 /*
    217  * NIS access protocol
    218  */
    219 program YPPROG {
    220 	version YPVERS {
    221 		void
    222 		YPPROC_NULL(void) = 0;
    223 
    224 		bool
    225 		YPPROC_DOMAIN(domainname) = 1;
    226 
    227 		bool
    228 		YPPROC_DOMAIN_NONACK(domainname) = 2;
    229 
    230 		ypresp_val
    231 		YPPROC_MATCH(ypreq_key) = 3;
    232 
    233 		ypresp_key_val
    234 		YPPROC_FIRST(ypreq_key) = 4;
    235 
    236 		ypresp_key_val
    237 		YPPROC_NEXT(ypreq_key) = 5;
    238 
    239 		ypresp_xfr
    240 		YPPROC_XFR(ypreq_xfr) = 6;
    241 
    242 		void
    243 		YPPROC_CLEAR(void) = 7;
    244 
    245 		ypresp_all
    246 		YPPROC_ALL(ypreq_nokey) = 8;
    247 
    248 		ypresp_master
    249 		YPPROC_MASTER(ypreq_nokey) = 9;
    250 
    251 		ypresp_order
    252 		YPPROC_ORDER(ypreq_nokey) = 10;
    253 
    254 		ypresp_maplist
    255 		YPPROC_MAPLIST(domainname) = 11;
    256 	} = 2;
    257 } = 100004;
    258 
    259 
    260 /*
    261  * YPPUSHPROC_XFRRESP is the callback routine for result of YPPROC_XFR
    262  */
    263 program YPPUSH_XFRRESPPROG {
    264 	version YPPUSH_XFRRESPVERS {
    265 		void
    266 		YPPUSHPROC_NULL(void) = 0;
    267 
    268 		yppushresp_xfr
    269 		YPPUSHPROC_XFRRESP(void) = 1;
    270 	} = 1;
    271 } = 0x40000000;	/* transient: could be anything up to 0x5fffffff */
    272 
    273 
    274 /*
    275  * NIS binding protocol
    276  */
    277 program YPBINDPROG {
    278 	version YPBINDVERS {
    279 		void
    280 		YPBINDPROC_NULL(void) = 0;
    281 
    282 		ypbind_resp
    283 		YPBINDPROC_DOMAIN(domainname) = 1;
    284 
    285 		void
    286 		YPBINDPROC_SETDOM(ypbind_setdom) = 2;
    287 	} = 2;
    288 } = 100007;
    289 
    290 
    291