yp_prot.h revision 1.1 1 1.1 deraadt /* @(#)yp_prot.h 1.15 90/01/03 Copyr 1990 Sun Microsystems, Inc */
2 1.1 deraadt
3 1.1 deraadt /*
4 1.1 deraadt * This file contains symbols and structures defining the rpc protocol
5 1.1 deraadt * between the NIS clients and the NIS servers. The servers
6 1.1 deraadt * are the NIS database servers, and the NIS binders.
7 1.1 deraadt */
8 1.1 deraadt
9 1.1 deraadt /*
10 1.1 deraadt * The following procedures are supported by the protocol:
11 1.1 deraadt *
12 1.1 deraadt * YPPROC_NULL() returns () takes nothing, returns nothing. This indicates
13 1.1 deraadt * that the NIS server is alive.
14 1.1 deraadt *
15 1.1 deraadt * YPPROC_DOMAIN (char *) returns (bool_t) TRUE. Indicates that the
16 1.1 deraadt * responding NIS server does serve the named domain; FALSE indicates no
17 1.1 deraadt * support.
18 1.1 deraadt *
19 1.1 deraadt * YPPROC_DOMAIN_NONACK (char *) returns (TRUE) if the NIS server does serve
20 1.1 deraadt * the named domain, otherwise does not return. Used in the broadcast case.
21 1.1 deraadt *
22 1.1 deraadt * YPPROC_MATCH (struct ypreq_key) returns (struct ypresp_val). Returns the
23 1.1 deraadt * right-hand value for a passed left-hand key, within a named map and
24 1.1 deraadt * domain.
25 1.1 deraadt *
26 1.1 deraadt * YPPROC_FIRST (struct ypreq_nokey) returns (struct ypresp_key_val).
27 1.1 deraadt * Returns the first key-value pair from a named domain and map.
28 1.1 deraadt *
29 1.1 deraadt * YPPROC_NEXT (struct ypreq_key) returns (struct ypresp_key_val). Returns
30 1.1 deraadt * the key-value pair following a passed key-value pair within a named
31 1.1 deraadt * domain and map.
32 1.1 deraadt *
33 1.1 deraadt * YPPROC_XFR (struct ypreq_xfr) returns nothing. Indicates to a server that
34 1.1 deraadt * a map should be updated.
35 1.1 deraadt *
36 1.1 deraadt * YPPROC_CLEAR takes nothing, returns nothing. Instructs a NIS server to
37 1.1 deraadt * close the current map, so that old versions of the disk file don't get
38 1.1 deraadt * held open.
39 1.1 deraadt *
40 1.1 deraadt * YPPROC_ALL (struct ypreq_nokey), returns
41 1.1 deraadt * union switch (bool_t more) {
42 1.1 deraadt * TRUE: (struct ypresp_key_val);
43 1.1 deraadt * FALSE: (struct) {};
44 1.1 deraadt * }
45 1.1 deraadt *
46 1.1 deraadt * YPPROC_MASTER (struct ypreq_nokey), returns (ypresp_master)
47 1.1 deraadt *
48 1.1 deraadt * YPPROC_ORDER (struct ypreq_nokey), returns (ypresp_order)
49 1.1 deraadt *
50 1.1 deraadt * YPPROC_MAPLIST (char *), returns (struct ypmaplist *)
51 1.1 deraadt */
52 1.1 deraadt #ifndef BOOL_DEFINED
53 1.1 deraadt typedef unsigned int bool;
54 1.1 deraadt #define BOOL_DEFINED
55 1.1 deraadt #endif
56 1.1 deraadt
57 1.1 deraadt extern bool_t xdr_datum();
58 1.1 deraadt extern bool_t xdr_ypdomain_wrap_string();
59 1.1 deraadt extern bool_t xdr_ypmap_wrap_string();
60 1.1 deraadt extern bool_t xdr_ypreq_key();
61 1.1 deraadt extern bool_t xdr_ypreq_nokey();
62 1.1 deraadt extern bool_t xdr_ypreq_xfr();
63 1.1 deraadt extern bool_t xdr_ypresp_val();
64 1.1 deraadt extern bool_t xdr_ypresp_key_val();
65 1.1 deraadt extern bool_t xdr_ypbind_resp();
66 1.1 deraadt extern bool_t xdr_ypbind_setdom();
67 1.1 deraadt extern bool_t xdr_yp_inaddr();
68 1.1 deraadt extern bool_t xdr_ypmap_parms();
69 1.1 deraadt extern bool_t xdr_ypowner_wrap_string();
70 1.1 deraadt extern bool_t xdr_yppushresp_xfr();
71 1.1 deraadt extern bool_t xdr_ypresp_order();
72 1.1 deraadt extern bool_t xdr_ypresp_master();
73 1.1 deraadt extern bool_t xdr_ypall();
74 1.1 deraadt extern bool_t xdr_ypresp_maplist();
75 1.1 deraadt
76 1.1 deraadt /* Program and version symbols, magic numbers */
77 1.1 deraadt
78 1.1 deraadt #define YPPROG ((u_long)100004)
79 1.1 deraadt #define YPVERS ((u_long)2)
80 1.1 deraadt #define YPVERS_ORIG ((u_long)1)
81 1.1 deraadt #define YPMAXRECORD ((u_long)1024)
82 1.1 deraadt #define YPMAXDOMAIN ((u_long)64)
83 1.1 deraadt #define YPMAXMAP ((u_long)64)
84 1.1 deraadt #define YPMAXPEER ((u_long)256)
85 1.1 deraadt
86 1.1 deraadt /* byte size of a large NIS packet */
87 1.1 deraadt #define YPMSGSZ 1600
88 1.1 deraadt
89 1.1 deraadt #ifndef DATUM
90 1.1 deraadt typedef struct {
91 1.1 deraadt char *dptr;
92 1.1 deraadt int dsize;
93 1.1 deraadt } datum;
94 1.1 deraadt #define DATUM
95 1.1 deraadt #endif
96 1.1 deraadt
97 1.1 deraadt struct ypmap_parms {
98 1.1 deraadt char *domain; /* Null string means not available */
99 1.1 deraadt char *map; /* Null string means not available */
100 1.1 deraadt unsigned long int ordernum; /* 0 means not available */
101 1.1 deraadt char *owner; /* Null string means not available */
102 1.1 deraadt };
103 1.1 deraadt
104 1.1 deraadt /*
105 1.1 deraadt * Request parameter structures
106 1.1 deraadt */
107 1.1 deraadt
108 1.1 deraadt struct ypreq_key {
109 1.1 deraadt char *domain;
110 1.1 deraadt char *map;
111 1.1 deraadt datum keydat;
112 1.1 deraadt };
113 1.1 deraadt
114 1.1 deraadt struct ypreq_nokey {
115 1.1 deraadt char *domain;
116 1.1 deraadt char *map;
117 1.1 deraadt };
118 1.1 deraadt
119 1.1 deraadt struct ypreq_xfr {
120 1.1 deraadt struct ypmap_parms map_parms;
121 1.1 deraadt unsigned long transid;
122 1.1 deraadt unsigned long proto;
123 1.1 deraadt unsigned short port;
124 1.1 deraadt };
125 1.1 deraadt #define ypxfr_domain map_parms.domain
126 1.1 deraadt #define ypxfr_map map_parms.map
127 1.1 deraadt #define ypxfr_ordernum map_parms.ordernum
128 1.1 deraadt #define ypxfr_owner map_parms.owner
129 1.1 deraadt
130 1.1 deraadt /*
131 1.1 deraadt * Response parameter structures
132 1.1 deraadt */
133 1.1 deraadt
134 1.1 deraadt struct ypresp_val {
135 1.1 deraadt long unsigned status;
136 1.1 deraadt datum valdat;
137 1.1 deraadt };
138 1.1 deraadt
139 1.1 deraadt struct ypresp_key_val {
140 1.1 deraadt long unsigned status;
141 1.1 deraadt datum keydat;
142 1.1 deraadt datum valdat;
143 1.1 deraadt };
144 1.1 deraadt
145 1.1 deraadt struct ypresp_master {
146 1.1 deraadt long unsigned status;
147 1.1 deraadt char *master;
148 1.1 deraadt };
149 1.1 deraadt
150 1.1 deraadt struct ypresp_order {
151 1.1 deraadt long unsigned status;
152 1.1 deraadt unsigned long int ordernum;
153 1.1 deraadt };
154 1.1 deraadt
155 1.1 deraadt struct ypmaplist {
156 1.1 deraadt char ypml_name[YPMAXMAP + 1];
157 1.1 deraadt struct ypmaplist *ypml_next;
158 1.1 deraadt };
159 1.1 deraadt
160 1.1 deraadt struct ypresp_maplist {
161 1.1 deraadt long unsigned status;
162 1.1 deraadt struct ypmaplist *list;
163 1.1 deraadt };
164 1.1 deraadt
165 1.1 deraadt /*
166 1.1 deraadt * Procedure symbols. YPPROC_NULL, YPPROC_DOMAIN, and YPPROC_DOMAIN_NONACK
167 1.1 deraadt * must keep the same values (0, 1, and 2) that they had in the first version
168 1.1 deraadt * of the protocol.
169 1.1 deraadt */
170 1.1 deraadt
171 1.1 deraadt #define YPPROC_NULL ((u_long)0)
172 1.1 deraadt #define YPPROC_DOMAIN ((u_long)1)
173 1.1 deraadt #define YPPROC_DOMAIN_NONACK ((u_long)2)
174 1.1 deraadt #define YPPROC_MATCH ((u_long)3)
175 1.1 deraadt #define YPPROC_FIRST ((u_long)4)
176 1.1 deraadt #define YPPROC_NEXT ((u_long)5)
177 1.1 deraadt #define YPPROC_XFR ((u_long)6)
178 1.1 deraadt #define YPPROC_CLEAR ((u_long)7)
179 1.1 deraadt #define YPPROC_ALL ((u_long)8)
180 1.1 deraadt #define YPPROC_MASTER ((u_long)9)
181 1.1 deraadt #define YPPROC_ORDER ((u_long)10)
182 1.1 deraadt #define YPPROC_MAPLIST ((u_long)11)
183 1.1 deraadt
184 1.1 deraadt /* Return status values */
185 1.1 deraadt
186 1.1 deraadt #define YP_TRUE ((long)1) /* General purpose success code */
187 1.1 deraadt #define YP_NOMORE ((long)2) /* No more entries in map */
188 1.1 deraadt #define YP_FALSE ((long)0) /* General purpose failure code */
189 1.1 deraadt #define YP_NOMAP ((long)-1) /* No such map in domain */
190 1.1 deraadt #define YP_NODOM ((long)-2) /* Domain not supported */
191 1.1 deraadt #define YP_NOKEY ((long)-3) /* No such key in map */
192 1.1 deraadt #define YP_BADOP ((long)-4) /* Invalid operation */
193 1.1 deraadt #define YP_BADDB ((long)-5) /* Server data base is bad */
194 1.1 deraadt #define YP_YPERR ((long)-6) /* NIS server error */
195 1.1 deraadt #define YP_BADARGS ((long)-7) /* Request arguments bad */
196 1.1 deraadt #define YP_VERS ((long)-8) /* NIS server version mismatch - server
197 1.1 deraadt * can't supply requested service. */
198 1.1 deraadt
199 1.1 deraadt /*
200 1.1 deraadt * Domain binding data structure, used by ypclnt package and ypserv modules.
201 1.1 deraadt * Users of the ypclnt package (or of this protocol) don't HAVE to know about
202 1.1 deraadt * it, but it must be available to users because _yp_dobind is a public
203 1.1 deraadt * interface.
204 1.1 deraadt */
205 1.1 deraadt
206 1.1 deraadt struct dom_binding {
207 1.1 deraadt struct dom_binding *dom_pnext;
208 1.1 deraadt char dom_domain[YPMAXDOMAIN + 1];
209 1.1 deraadt struct sockaddr_in dom_server_addr;
210 1.1 deraadt unsigned short int dom_server_port;
211 1.1 deraadt int dom_socket;
212 1.1 deraadt CLIENT *dom_client;
213 1.1 deraadt unsigned short int dom_local_port;
214 1.1 deraadt long int dom_vers;
215 1.1 deraadt };
216 1.1 deraadt
217 1.1 deraadt
218 1.1 deraadt /*
219 1.1 deraadt * Protocol between clients and NIS binder servers
220 1.1 deraadt */
221 1.1 deraadt
222 1.1 deraadt /*
223 1.1 deraadt * The following procedures are supported by the protocol:
224 1.1 deraadt *
225 1.1 deraadt * YPBINDPROC_NULL() returns ()
226 1.1 deraadt * takes nothing, returns nothing
227 1.1 deraadt *
228 1.1 deraadt * YPBINDPROC_DOMAIN takes (char *) returns (struct ypbind_resp)
229 1.1 deraadt *
230 1.1 deraadt * YPBINDPROC_SETDOM takes (struct ypbind_setdom) returns nothing
231 1.1 deraadt */
232 1.1 deraadt
233 1.1 deraadt /* Program and version symbols, magic numbers */
234 1.1 deraadt
235 1.1 deraadt #define YPBINDPROG ((u_long)100007)
236 1.1 deraadt #define YPBINDVERS ((u_long)2)
237 1.1 deraadt #define YPBINDVERS_ORIG ((u_long)1)
238 1.1 deraadt
239 1.1 deraadt /* Procedure symbols */
240 1.1 deraadt
241 1.1 deraadt #define YPBINDPROC_NULL ((u_long)0)
242 1.1 deraadt #define YPBINDPROC_DOMAIN ((u_long)1)
243 1.1 deraadt #define YPBINDPROC_SETDOM ((u_long)2)
244 1.1 deraadt /*
245 1.1 deraadt * Response structure and overall result status codes. Success and failure
246 1.1 deraadt * represent two separate response message types.
247 1.1 deraadt */
248 1.1 deraadt
249 1.1 deraadt enum ypbind_resptype {YPBIND_SUCC_VAL = 1, YPBIND_FAIL_VAL = 2};
250 1.1 deraadt
251 1.1 deraadt struct ypbind_binding {
252 1.1 deraadt struct in_addr ypbind_binding_addr; /* In network order */
253 1.1 deraadt unsigned short int ypbind_binding_port; /* In network order */
254 1.1 deraadt };
255 1.1 deraadt struct ypbind_resp {
256 1.1 deraadt enum ypbind_resptype ypbind_status;
257 1.1 deraadt union {
258 1.1 deraadt unsigned long ypbind_error;
259 1.1 deraadt struct ypbind_binding ypbind_bindinfo;
260 1.1 deraadt } ypbind_respbody;
261 1.1 deraadt };
262 1.1 deraadt
263 1.1 deraadt
264 1.1 deraadt /* Detailed failure reason codes for response field ypbind_error*/
265 1.1 deraadt
266 1.1 deraadt #define YPBIND_ERR_ERR 1 /* Internal error */
267 1.1 deraadt #define YPBIND_ERR_NOSERV 2 /* No bound server for passed domain */
268 1.1 deraadt #define YPBIND_ERR_RESC 3 /* System resource allocation failure */
269 1.1 deraadt
270 1.1 deraadt /*
271 1.1 deraadt * Request data structure for ypbind "Set domain" procedure.
272 1.1 deraadt */
273 1.1 deraadt struct ypbind_setdom {
274 1.1 deraadt char ypsetdom_domain[YPMAXDOMAIN + 1];
275 1.1 deraadt struct ypbind_binding ypsetdom_binding;
276 1.1 deraadt unsigned short ypsetdom_vers;
277 1.1 deraadt };
278 1.1 deraadt #define ypsetdom_addr ypsetdom_binding.ypbind_binding_addr
279 1.1 deraadt #define ypsetdom_port ypsetdom_binding.ypbind_binding_port
280 1.1 deraadt
281 1.1 deraadt /*
282 1.1 deraadt * Protocol between clients (ypxfr, only) and yppush
283 1.1 deraadt * yppush speaks a protocol in the transient range, which
284 1.1 deraadt * is supplied to ypxfr as a command-line parameter when it
285 1.1 deraadt * is activated by ypserv.
286 1.1 deraadt */
287 1.1 deraadt #define YPPUSHVERS ((u_long) 1)
288 1.1 deraadt #define YPPUSHVERS_ORIG ((u_long)1)
289 1.1 deraadt
290 1.1 deraadt /* Procedure symbols */
291 1.1 deraadt
292 1.1 deraadt #define YPPUSHPROC_NULL ((u_long)0)
293 1.1 deraadt #define YPPUSHPROC_XFRRESP ((u_long)1)
294 1.1 deraadt
295 1.1 deraadt struct yppushresp_xfr {
296 1.1 deraadt unsigned long transid;
297 1.1 deraadt unsigned long status;
298 1.1 deraadt };
299 1.1 deraadt
300 1.1 deraadt /* Status values for yppushresp_xfr.status */
301 1.1 deraadt
302 1.1 deraadt #define YPPUSH_SUCC ((long)1) /* Success */
303 1.1 deraadt #define YPPUSH_AGE ((long)2) /* Master's version not newer */
304 1.1 deraadt #define YPPUSH_NOMAP ((long)-1) /* Can't find server for map */
305 1.1 deraadt #define YPPUSH_NODOM ((long)-2) /* Domain not supported */
306 1.1 deraadt #define YPPUSH_RSRC ((long)-3) /* Local resouce alloc failure */
307 1.1 deraadt #define YPPUSH_RPC ((long)-4) /* RPC failure talking to server */
308 1.1 deraadt #define YPPUSH_MADDR ((long)-5) /* Can't get master address */
309 1.1 deraadt #define YPPUSH_YPERR ((long)-6) /* NIS server/map db error */
310 1.1 deraadt #define YPPUSH_BADARGS ((long)-7) /* Request arguments bad */
311 1.1 deraadt #define YPPUSH_DBM ((long)-8) /* Local dbm operation failed */
312 1.1 deraadt #define YPPUSH_FILE ((long)-9) /* Local file I/O operation failed */
313 1.1 deraadt #define YPPUSH_SKEW ((long)-10) /* Map version skew during transfer */
314 1.1 deraadt #define YPPUSH_CLEAR ((long)-11) /* Can't send "Clear" req to local
315 1.1 deraadt * ypserv */
316 1.1 deraadt #define YPPUSH_FORCE ((long)-12) /* No local order number in map -
317 1.1 deraadt * use -f flag. */
318 1.1 deraadt #define YPPUSH_XFRERR ((long)-13) /* ypxfr error */
319 1.1 deraadt #define YPPUSH_REFUSED ((long)-14) /* Transfer request refused by ypserv */
320 1.1 deraadt
321 1.1 deraadt
322