xref: /openbsd/usr.sbin/ypserv/ypserv/ypv1.x (revision d415bd75)
1 /*
2  * Copyright (c) 2003 Mats O Jansson <moj@stacken.kth.se>
3  *
4  * Permission to use, copy, modify, and distribute this software for any
5  * purpose with or without fee is hereby granted, provided that the above
6  * copyright notice and this permission notice appear in all copies.
7  *
8  * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
9  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10  * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
11  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
14  * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15  */
16 
17 /*
18  * YP v1 access protocol
19  *
20  * Created by looking at ypv1_prot.h on AIX 5.1
21  *
22  */
23 #ifdef RPC_HDR
24 %#include <rpcsvc/yp.h>
25 #endif
26 
27 enum ypreqtype {
28         YPREQ_KEY = 1,
29         YPREQ_NOKEY = 2,
30         YPREQ_MAP_PARMS = 3
31 };
32 
33 enum ypresptype {
34 	YPRESP_VAL = 1,
35 	YPRESP_KEY_VAL = 2,
36 	YPRESP_MAP_PARMS = 3
37 };
38 
39 union yprequest switch (ypreqtype yp_reqtype) {
40 case YPREQ_KEY:
41 	ypreq_key yp_req_keytype;
42 case YPREQ_NOKEY:
43 	ypreq_nokey yp_req_nokeytype;
44 case YPREQ_MAP_PARMS:
45 	ypmap_parms yp_req_map_parmstype;
46 };
47 
48 union ypresponse switch (ypresptype yp_resptype) {
49 case YPRESP_VAL:
50 	ypresp_val yp_resp_valtype;
51 case YPRESP_KEY_VAL:
52 	ypresp_key_val yp_resp_key_valtype;
53 case YPRESP_MAP_PARMS:
54 	ypmap_parms yp_resp_map_parmstype;
55 };
56 
57 program YPPROG {
58 	version YPOLDVERS {
59 
60 		void
61 		YPOLDPROC_NULL(void) = 0;
62 
63 		bool_t
64 		YPOLDPROC_DOMAIN(domainname) = 1;
65 
66 		bool_t
67 		YPOLDPROC_DOMAIN_NONACK(domainname) = 2;
68 
69 		ypresponse
70 		YPOLDPROC_MATCH(yprequest) = 3;
71 
72 		ypresponse
73 		YPOLDPROC_FIRST(yprequest) = 4;
74 
75 		ypresponse
76 		YPOLDPROC_NEXT(yprequest) = 5;
77 
78 		ypresponse
79 		YPOLDPROC_POLL(yprequest) = 6;
80 
81 		void
82 		YPOLDPROC_PUSH(yprequest) = 7;
83 
84 		void
85 		YPOLDPROC_PULL(yprequest) = 8;
86 
87 		void
88 		YPOLDPROC_GET(yprequest) = 9;
89 	} = 1;
90 } = 100004;
91 
92 #ifdef RPC_HDR
93 %#define YPMATCH_REQTYPE YPREQ_KEY
94 %#define ypmatch_req_domain yprequest_u.yp_req_keytype.domain
95 %#define ypmatch_req_map yprequest_u.yp_req_keytype.map
96 %#define ypmatch_req_keydat yprequest_u.yp_req_keytype.key
97 %#define ypmatch_req_keyptr yprequest_u.yp_req_keytype.key.keydat_val
98 %#define ypmatch_req_keysize yprequest_u.yp_req_keytype.key.keydat_len
99 %
100 %#define YPMATCH_RESPTYPE YPRESP_VAL
101 %#define ypmatch_resp_status ypresponse_u.yp_resp_valtype.stat
102 %#define ypmatch_resp_val ypresponse_u.yp_resp_valtype
103 %#define ypmatch_resp_valdat ypresponse_u.yp_resp_valtype.val
104 %#define ypmatch_resp_valptr ypresponse_u.yp_resp_valtype.val.valdat_val
105 %#define ypmatch_resp_valsize ypresponse_u.yp_resp_valtype.val.valdat_len
106 %
107 %#define YPFIRST_REQTYPE YPREQ_NOKEY
108 %#define ypfirst_req_domain yprequest_u.yp_req_nokeytype.domain
109 %#define ypfirst_req_map yprequest_u.yp_req_nokeytype.map
110 %
111 %#define YPFIRST_RESPTYPE YPRESP_KEY_VAL
112 %#define ypfirst_resp_status ypresponse_u.yp_resp_key_valtype.stat
113 %#define ypfirst_resp_keydat ypresponse_u.yp_resp_key_valtype.key
114 %#define ypfirst_resp_keyptr ypresponse_u.yp_resp_key_valtype.key.keydat_val
115 %#define ypfirst_resp_keysize ypresponse_u.yp_resp_key_valtype.key.keydat_len
116 %#define ypfirst_resp_val ypresponse_u.yp_resp_key_valtype
117 %#define ypfirst_resp_valdat ypresponse_u.yp_resp_key_valtype.val
118 %#define ypfirst_resp_valptr ypresponse_u.yp_resp_key_valtype.val.valdat_val
119 %#define ypfirst_resp_valsize ypresponse_u.yp_resp_key_valtype.val.valdat_len
120 %
121 %#define YPNEXT_REQTYPE YPREQ_KEY
122 %#define ypnext_req_domain yprequest_u.yp_req_keytype.domain
123 %#define ypnext_req_map yprequest_u.yp_req_keytype.map
124 %#define ypnext_req_keydat yprequest_u.yp_req_keytype.key
125 %#define ypnext_req_keyptr yprequest_u.yp_req_keytype.key.keydat_val
126 %#define ypnext_req_keysize yprequest_u.yp_req_keytype.key.keydat_len
127 %
128 %#define YPNEXT_RESPTYPE YPRESP_KEY_VAL
129 %#define ypnext_resp_status ypresponse_u.yp_resp_key_valtype.stat
130 %#define ypnext_resp_keydat ypresponse_u.yp_resp_key_valtype.key
131 %#define ypnext_resp_keyptr ypresponse_u.yp_resp_key_valtype.key.keydat_val
132 %#define ypnext_resp_keysize ypresponse_u.yp_resp_key_valtype.key.keydat_len
133 %#define ypnext_resp_val ypresponse_u.yp_resp_key_valtype
134 %#define ypnext_resp_valdat ypresponse_u.yp_resp_key_valtype.val
135 %#define ypnext_resp_valptr ypresponse_u.yp_resp_key_valtype.val.valdat_val
136 %#define ypnext_resp_valsize ypresponse_u.yp_resp_key_valtype.val.valdat_len
137 %
138 %#define YPPUSH_REQTYPE YPREQ_NOKEY
139 %#define yppush_req_domain yprequest_u.yp_req_nokeytype.domain
140 %#define yppush_req_map yprequest_u.yp_req_nokeytype.map
141 %
142 %#define YPPULL_REQTYPE YPREQ_NOKEY
143 %#define yppull_req_domain yprequest_u.yp_req_nokeytype.domain
144 %#define yppull_req_map yprequest_u.yp_req_nokeytype.map
145 %
146 %#define YPPOLL_REQTYPE YPREQ_NOKEY
147 %#define yppoll_req_domain yprequest_u.yp_req_nokeytype.domain
148 %#define yppoll_req_map yprequest_u.yp_req_nokeytype.map
149 %
150 %#define YPPOLL_RESPTYPE YPRESP_MAP_PARMS
151 %#define yppoll_resp_domain ypresponse_u.yp_resp_map_parmstype.domain
152 %#define yppoll_resp_map ypresponse_u.yp_resp_map_parmstype.map
153 %#define yppoll_resp_ordernum ypresponse_u.yp_resp_map_parmstype.ordernum
154 %#define yppoll_resp_owner ypresponse_u.yp_resp_map_parmstype.peer
155 %
156 %#define YPGET_REQTYPE YPREQ_MAP_PARMS
157 %#define ypget_req_domain yprequest_u.yp_req_map_parmstype.domain
158 %#define ypget_req_map yprequest_u.yp_req_map_parmstype.map
159 %#define ypget_req_ordernum yprequest_u.yp_req_map_parmstype.ordernum
160 %#define ypget_req_owner yprequest_u.yp_req_map_parmstype.peer
161 #endif
162