yp.x
001:
002:
003:
004:
005:
006:
007:
008:
009:
010:
011:
012:
013:
014:
015:
016:
017:
018:
019:
020:
021:
022:
023:
024:
025:
026:
027:
028:
029:
030:
031:
032:
033:
034:
035:
036:
037:
038: const YPMAXRECORD = 1024;
039: const YPMAXDOMAIN = 64;
040: const YPMAXMAP = 64;
041: const YPMAXPEER = 64;
042:
043:
044: enum ypstat {
045: YP_TRUE = 1,
046: YP_NOMORE = 2,
047: YP_FALSE = 0,
048: YP_NOMAP = -1,
049: YP_NODOM = -2,
050: YP_NOKEY = -3,
051: YP_BADOP = -4,
052: YP_BADDB = -5,
053: YP_YPERR = -6,
054: YP_BADARGS = -7,
055: YP_VERS = -8
056: };
057:
058:
059: enum ypxfrstat {
060: YPXFR_SUCC = 1,
061: YPXFR_AGE = 2,
062: YPXFR_NOMAP = -1,
063: YPXFR_NODOM = -2,
064: YPXFR_RSRC = -3,
065: YPXFR_RPC = -4,
066: YPXFR_MADDR = -5,
067: YPXFR_YPERR = -6,
068: YPXFR_BADARGS = -7,
069: YPXFR_DBM = -8,
070: YPXFR_FILE = -9,
071: YPXFR_SKEW = -10,
072: YPXFR_CLEAR = -11,
073: YPXFR_FORCE = -12,
074: YPXFR_XFRERR = -13,
075: YPXFR_REFUSED = -14
076: };
077:
078:
079: typedef string domainname<YPMAXDOMAIN>;
080: typedef string mapname<YPMAXMAP>;
081: typedef string peername<YPMAXPEER>;
082: typedef opaque keydat<YPMAXRECORD>;
083: typedef opaque valdat<YPMAXRECORD>;
084:
085:
086: struct ypmap_parms {
087: domainname domain;
088: mapname map;
089: unsigned int ordernum;
090: peername peer;
091: };
092:
093: struct ypreq_key {
094: domainname domain;
095: mapname map;
096: keydat key;
097: };
098:
099: struct ypreq_nokey {
100: domainname domain;
101: mapname map;
102: };
103:
104: struct ypreq_xfr {
105: ypmap_parms map_parms;
106: unsigned int transid;
107: unsigned int prog;
108: unsigned int port;
109: };
110:
111:
112: struct ypresp_val {
113: ypstat stat;
114: valdat val;
115: };
116:
117: struct ypresp_key_val {
118: ypstat stat;
119: #ifdef STUPID_SUN_BUG
120:
121:
122:
123:
124:
125: keydat key;
126: valdat val;
127: #else
128: valdat val;
129: keydat key;
130: #endif
131: };
132:
133:
134: struct ypresp_master {
135: ypstat stat;
136: peername peer;
137: };
138:
139: struct ypresp_order {
140: ypstat stat;
141: unsigned int ordernum;
142: };
143:
144: union ypresp_all switch (bool more) {
145: case TRUE:
146: ypresp_key_val val;
147: case FALSE:
148: void;
149: };
150:
151: struct ypresp_xfr {
152: unsigned int transid;
153: ypxfrstat xfrstat;
154: };
155:
156: struct ypmaplist {
157: mapname map;
158: ypmaplist *next;
159: };
160:
161: struct ypresp_maplist {
162: ypstat stat;
163: ypmaplist *maps;
164: };
165:
166: enum yppush_status {
167: YPPUSH_SUCC = 1,
168: YPPUSH_AGE = 2,
169: YPPUSH_NOMAP = -1,
170: YPPUSH_NODOM = -2,
171: YPPUSH_RSRC = -3,
172: YPPUSH_RPC = -4,
173: YPPUSH_MADDR = -5,
174: YPPUSH_YPERR = -6,
175: YPPUSH_BADARGS = -7,
176: YPPUSH_DBM = -8,
177: YPPUSH_FILE = -9,
178: YPPUSH_SKEW = -10,
179: YPPUSH_CLEAR = -11,
180: YPPUSH_FORCE = -12,
181: YPPUSH_XFRERR = -13,
182: YPPUSH_REFUSED = -14
183: };
184:
185: struct yppushresp_xfr {
186: unsigned transid;
187: yppush_status status;
188: };
189:
190:
191:
192:
193:
194:
195: enum ypbind_resptype {
196: YPBIND_SUCC_VAL = 1,
197: YPBIND_FAIL_VAL = 2
198: };
199:
200: struct ypbind_binding {
201: opaque ypbind_binding_addr[4];
202: opaque ypbind_binding_port[2];
203: };
204:
205: union ypbind_resp switch (ypbind_resptype ypbind_status) {
206: case YPBIND_FAIL_VAL:
207: unsigned ypbind_error;
208: case YPBIND_SUCC_VAL:
209: ypbind_binding ypbind_bindinfo;
210: };
211:
212:
213:
214: const YPBIND_ERR_ERR = 1;
215: const YPBIND_ERR_NOSERV = 2;
216: const YPBIND_ERR_RESC = 3;
217:
218:
219:
220:
221:
222: struct ypbind_setdom {
223: domainname ypsetdom_domain;
224: ypbind_binding ypsetdom_binding;
225: unsigned ypsetdom_vers;
226: };
227:
228:
229:
230:
231:
232: program YPPROG {
233: version YPVERS {
234: void
235: YPPROC_NULL(void) = 0;
236:
237: bool
238: YPPROC_DOMAIN(domainname) = 1;
239:
240: bool
241: YPPROC_DOMAIN_NONACK(domainname) = 2;
242:
243: ypresp_val
244: YPPROC_MATCH(ypreq_key) = 3;
245:
246: ypresp_key_val
247: YPPROC_FIRST(ypreq_key) = 4;
248:
249: ypresp_key_val
250: YPPROC_NEXT(ypreq_key) = 5;
251:
252: ypresp_xfr
253: YPPROC_XFR(ypreq_xfr) = 6;
254:
255: void
256: YPPROC_CLEAR(void) = 7;
257:
258: ypresp_all
259: YPPROC_ALL(ypreq_nokey) = 8;
260:
261: ypresp_master
262: YPPROC_MASTER(ypreq_nokey) = 9;
263:
264: ypresp_order
265: YPPROC_ORDER(ypreq_nokey) = 10;
266:
267: ypresp_maplist
268: YPPROC_MAPLIST(domainname) = 11;
269: } = 2;
270: } = 100004;
271:
272:
273:
274:
275:
276: program YPPUSH_XFRRESPPROG {
277: version YPPUSH_XFRRESPVERS {
278: void
279: YPPUSHPROC_NULL(void) = 0;
280:
281: #ifdef STUPID_SUN_BUG
282:
283:
284:
285:
286:
287:
288: yppushresp_xfr
289: YPPUSHPROC_XFRRESP(void) = 1;
290: #else
291: void
292: YPPUSHPROC_XFRRESP(yppushresp_xfr) = 1;
293: #endif
294: } = 1;
295: } = 0x40000000;
296:
297:
298:
299:
300: program YPBINDPROG {
301: version YPBINDVERS {
302: void
303: YPBINDPROC_NULL(void) = 0;
304:
305: ypbind_resp
306: YPBINDPROC_DOMAIN(domainname) = 1;
307:
308: void
309: YPBINDPROC_SETDOM(ypbind_setdom) = 2;
310: } = 2;
311: } = 100007;
312:
© Andrew Scott 2006 -
2025,
All Rights Reserved