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