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