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