3 Tables of information... */
6 * Copyright (c) 1995-2002 Internet Software Consortium.
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of The Internet Software Consortium nor the names
19 * of its contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
22 * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
23 * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26 * DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * This software has been written for the Internet Software Consortium
37 * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
38 * To learn more about the Internet Software Consortium, see
39 * ``http://www.isc.org/''. To learn more about Vixie Enterprises,
40 * see ``http://www.vix.com''. To learn more about Nominum, Inc., see
41 * ``http://www.nominum.com''.
45 static char copyright[] =
46 "$Id: tables.c,v 1.51.2.6 2002/11/17 02:26:59 dhankins Exp $ Copyright (c) 1995-2002 The Internet Software Consortium. All rights reserved.\n";
51 /* XXXDPN: Moved here from hash.c, when it moved to libomapi. Not sure
52 where these really belong. */
53 HASH_FUNCTIONS (group, const char *, struct group_object, group_hash_t,
54 group_reference, group_dereference)
55 HASH_FUNCTIONS (universe, const char *, struct universe, universe_hash_t, 0, 0)
56 HASH_FUNCTIONS (option, const char *, struct option, option_hash_t, 0, 0)
58 /* DHCP Option names, formats and codes, from RFC1533.
63 l - 32-bit signed integer
64 L - 32-bit unsigned integer
65 s - 16-bit signed integer
66 S - 16-bit unsigned integer
67 b - 8-bit signed integer
68 B - 8-bit unsigned integer
70 f - flag (true or false)
71 A - array of whatever precedes (e.g., IA means array of IP addresses)
72 a - array of the preceding character (e.g., IIa means two or more IP
74 U - name of an option space (universe)
75 F - implicit flag - the presence of the option indicates that the
77 o - the preceding value is optional.
78 E - encapsulation, string or colon-seperated hex list (the latter
79 two for parsing). E is followed by a text string containing
80 the name of the option space to encapsulate, followed by a '.'.
81 If the E is immediately followed by '.', the applicable vendor
82 option space is used if one is defined.
83 e - If an encapsulation directive is not the first thing in the string,
84 the option scanner requires an efficient way to find the encapsulation.
85 This is done by placing a 'e' at the beginning of the option. The
86 'e' has no other purpose, and is not required if 'E' is the first
88 X - either an ASCII string or binary data. On output, the string is
89 scanned to see if it's printable ASCII and, if so, output as a
90 quoted string. If not, it's output as colon-seperated hex. On
91 input, the option can be specified either as a quoted string or as
92 a colon-seperated hex list.
93 N - enumeration. N is followed by a text string containing
94 the name of the set of enumeration values to parse or emit,
95 followed by a '.'. The width of the data is specified in the
96 named enumeration. Named enumerations are tracked in parse.c.
97 d - Domain name (i.e., FOO or FOO.BAR).
100 struct universe dhcp_universe;
101 struct option dhcp_options [256] = {
102 { "pad", "", &dhcp_universe, 0 },
103 { "subnet-mask", "I", &dhcp_universe, 1 },
104 { "time-offset", "l", &dhcp_universe, 2 },
105 { "routers", "IA", &dhcp_universe, 3 },
106 { "time-servers", "IA", &dhcp_universe, 4 },
107 { "ien116-name-servers", "IA", &dhcp_universe, 5 },
108 { "domain-name-servers", "IA", &dhcp_universe, 6 },
109 { "log-servers", "IA", &dhcp_universe, 7 },
110 { "cookie-servers", "IA", &dhcp_universe, 8 },
111 { "lpr-servers", "IA", &dhcp_universe, 9 },
112 { "impress-servers", "IA", &dhcp_universe, 10 },
113 { "resource-location-servers", "IA", &dhcp_universe, 11 },
114 { "host-name", "X", &dhcp_universe, 12 },
115 { "boot-size", "S", &dhcp_universe, 13 },
116 { "merit-dump", "t", &dhcp_universe, 14 },
117 { "domain-name", "t", &dhcp_universe, 15 },
118 { "swap-server", "I", &dhcp_universe, 16 },
119 { "root-path", "t", &dhcp_universe, 17 },
120 { "extensions-path", "t", &dhcp_universe, 18 },
121 { "ip-forwarding", "f", &dhcp_universe, 19 },
122 { "non-local-source-routing", "f", &dhcp_universe, 20 },
123 { "policy-filter", "IIA", &dhcp_universe, 21 },
124 { "max-dgram-reassembly", "S", &dhcp_universe, 22 },
125 { "default-ip-ttl", "B", &dhcp_universe, 23 },
126 { "path-mtu-aging-timeout", "L", &dhcp_universe, 24 },
127 { "path-mtu-plateau-table", "SA", &dhcp_universe, 25 },
128 { "interface-mtu", "S", &dhcp_universe, 26 },
129 { "all-subnets-local", "f", &dhcp_universe, 27 },
130 { "broadcast-address", "I", &dhcp_universe, 28 },
131 { "perform-mask-discovery", "f", &dhcp_universe, 29 },
132 { "mask-supplier", "f", &dhcp_universe, 30 },
133 { "router-discovery", "f", &dhcp_universe, 31 },
134 { "router-solicitation-address", "I", &dhcp_universe, 32 },
135 { "static-routes", "IIA", &dhcp_universe, 33 },
136 { "trailer-encapsulation", "f", &dhcp_universe, 34 },
137 { "arp-cache-timeout", "L", &dhcp_universe, 35 },
138 { "ieee802-3-encapsulation", "f", &dhcp_universe, 36 },
139 { "default-tcp-ttl", "B", &dhcp_universe, 37 },
140 { "tcp-keepalive-interval", "L", &dhcp_universe, 38 },
141 { "tcp-keepalive-garbage", "f", &dhcp_universe, 39 },
142 { "nis-domain", "t", &dhcp_universe, 40 },
143 { "nis-servers", "IA", &dhcp_universe, 41 },
144 { "ntp-servers", "IA", &dhcp_universe, 42 },
145 { "vendor-encapsulated-options", "E.", &dhcp_universe, 43 },
146 { "netbios-name-servers", "IA", &dhcp_universe, 44 },
147 { "netbios-dd-server", "IA", &dhcp_universe, 45 },
148 { "netbios-node-type", "B", &dhcp_universe, 46 },
149 { "netbios-scope", "t", &dhcp_universe, 47 },
150 { "font-servers", "IA", &dhcp_universe, 48 },
151 { "x-display-manager", "IA", &dhcp_universe, 49 },
152 { "dhcp-requested-address", "I", &dhcp_universe, 50 },
153 { "dhcp-lease-time", "L", &dhcp_universe, 51 },
154 { "dhcp-option-overload", "B", &dhcp_universe, 52 },
155 { "dhcp-message-type", "B", &dhcp_universe, 53 },
156 { "dhcp-server-identifier", "I", &dhcp_universe, 54 },
157 { "dhcp-parameter-request-list", "BA", &dhcp_universe, 55 },
158 { "dhcp-message", "t", &dhcp_universe, 56 },
159 { "dhcp-max-message-size", "S", &dhcp_universe, 57 },
160 { "dhcp-renewal-time", "L", &dhcp_universe, 58 },
161 { "dhcp-rebinding-time", "L", &dhcp_universe, 59 },
162 { "vendor-class-identifier", "X", &dhcp_universe, 60 },
163 { "dhcp-client-identifier", "X", &dhcp_universe, 61 },
164 { "nwip-domain", "X", &dhcp_universe, 62 },
165 { "nwip-suboptions", "Enwip.", &dhcp_universe, 63 },
166 { "nisplus-domain", "t", &dhcp_universe, 64 },
167 { "nisplus-servers", "IA", &dhcp_universe, 65 },
168 { "tftp-server-name", "t", &dhcp_universe, 66 },
169 { "bootfile-name", "t", &dhcp_universe, 67 },
170 { "mobile-ip-home-agent", "IA", &dhcp_universe, 68 },
171 { "smtp-server", "IA", &dhcp_universe, 69 },
172 { "pop-server", "IA", &dhcp_universe, 70 },
173 { "nntp-server", "IA", &dhcp_universe, 71 },
174 { "www-server", "IA", &dhcp_universe, 72 },
175 { "finger-server", "IA", &dhcp_universe, 73 },
176 { "irc-server", "IA", &dhcp_universe, 74 },
177 { "streettalk-server", "IA", &dhcp_universe, 75 },
178 { "streettalk-directory-assistance-server", "IA", &dhcp_universe, 76 },
179 { "user-class", "t", &dhcp_universe, 77 },
180 { "slp-directory-agent", "fIa", &dhcp_universe, 78 },
181 { "slp-service-scope", "fto", &dhcp_universe, 79 },
182 { "#80", "X", &dhcp_universe, 80 },
183 { "fqdn", "Efqdn.", &dhcp_universe, 81 },
184 { "relay-agent-information", "Eagent.", &dhcp_universe, 82 },
185 { "#83", "X", &dhcp_universe, 83 },
186 { "#84", "X", &dhcp_universe, 84 },
187 { "nds-servers", "IA", &dhcp_universe, 85 },
188 { "nds-tree-name", "X", &dhcp_universe, 86 },
189 { "nds-context", "X", &dhcp_universe, 87 },
190 { "#88", "X", &dhcp_universe, 88 },
191 { "#89", "X", &dhcp_universe, 89 },
192 { "#90", "X", &dhcp_universe, 90 },
193 { "#91", "X", &dhcp_universe, 91 },
194 { "#92", "X", &dhcp_universe, 92 },
195 { "#93", "X", &dhcp_universe, 93 },
196 { "#94", "X", &dhcp_universe, 94 },
197 { "#95", "X", &dhcp_universe, 95 },
198 { "#96", "X", &dhcp_universe, 96 },
199 { "#97", "X", &dhcp_universe, 97 },
200 { "uap-servers", "t", &dhcp_universe, 98 },
201 { "#99", "X", &dhcp_universe, 99 },
202 { "#100", "X", &dhcp_universe, 100 },
203 { "#101", "X", &dhcp_universe, 101 },
204 { "#102", "X", &dhcp_universe, 102 },
205 { "#103", "X", &dhcp_universe, 103 },
206 { "#104", "X", &dhcp_universe, 104 },
207 { "#105", "X", &dhcp_universe, 105 },
208 { "#106", "X", &dhcp_universe, 106 },
209 { "#107", "X", &dhcp_universe, 107 },
210 { "#108", "X", &dhcp_universe, 108 },
211 { "#109", "X", &dhcp_universe, 109 },
212 { "#110", "X", &dhcp_universe, 110 },
213 { "#111", "X", &dhcp_universe, 111 },
214 { "#112", "X", &dhcp_universe, 112 },
215 { "#113", "X", &dhcp_universe, 113 },
216 { "#114", "X", &dhcp_universe, 114 },
217 { "#115", "X", &dhcp_universe, 115 },
218 { "#116", "X", &dhcp_universe, 116 },
219 { "#117", "X", &dhcp_universe, 117 },
220 { "subnet-selection", "X", &dhcp_universe, 118 },
221 { "#119", "X", &dhcp_universe, 119 },
222 { "#120", "X", &dhcp_universe, 120 },
223 { "#121", "X", &dhcp_universe, 121 },
224 { "#122", "X", &dhcp_universe, 122 },
225 { "#123", "X", &dhcp_universe, 123 },
226 { "#124", "X", &dhcp_universe, 124 },
227 { "#125", "X", &dhcp_universe, 125 },
228 { "#126", "X", &dhcp_universe, 126 },
229 { "#127", "X", &dhcp_universe, 127 },
230 { "#128", "X", &dhcp_universe, 128 },
231 { "#129", "X", &dhcp_universe, 129 },
232 { "#130", "X", &dhcp_universe, 130 },
233 { "#131", "X", &dhcp_universe, 131 },
234 { "#132", "X", &dhcp_universe, 132 },
235 { "#133", "X", &dhcp_universe, 133 },
236 { "#134", "X", &dhcp_universe, 134 },
237 { "#135", "X", &dhcp_universe, 135 },
238 { "#136", "X", &dhcp_universe, 136 },
239 { "#137", "X", &dhcp_universe, 137 },
240 { "#138", "X", &dhcp_universe, 138 },
241 { "#139", "X", &dhcp_universe, 139 },
242 { "#140", "X", &dhcp_universe, 140 },
243 { "#141", "X", &dhcp_universe, 141 },
244 { "#142", "X", &dhcp_universe, 142 },
245 { "#143", "X", &dhcp_universe, 143 },
246 { "#144", "X", &dhcp_universe, 144 },
247 { "#145", "X", &dhcp_universe, 145 },
248 { "#146", "X", &dhcp_universe, 146 },
249 { "#147", "X", &dhcp_universe, 147 },
250 { "#148", "X", &dhcp_universe, 148 },
251 { "#149", "X", &dhcp_universe, 149 },
252 { "#150", "X", &dhcp_universe, 150 },
253 { "#151", "X", &dhcp_universe, 151 },
254 { "#152", "X", &dhcp_universe, 152 },
255 { "#153", "X", &dhcp_universe, 153 },
256 { "#154", "X", &dhcp_universe, 154 },
257 { "#155", "X", &dhcp_universe, 155 },
258 { "#156", "X", &dhcp_universe, 156 },
259 { "#157", "X", &dhcp_universe, 157 },
260 { "#158", "X", &dhcp_universe, 158 },
261 { "#159", "X", &dhcp_universe, 159 },
262 { "#160", "X", &dhcp_universe, 160 },
263 { "#161", "X", &dhcp_universe, 161 },
264 { "#162", "X", &dhcp_universe, 162 },
265 { "#163", "X", &dhcp_universe, 163 },
266 { "#164", "X", &dhcp_universe, 164 },
267 { "#165", "X", &dhcp_universe, 165 },
268 { "#166", "X", &dhcp_universe, 166 },
269 { "#167", "X", &dhcp_universe, 167 },
270 { "#168", "X", &dhcp_universe, 168 },
271 { "#169", "X", &dhcp_universe, 169 },
272 { "#170", "X", &dhcp_universe, 170 },
273 { "#171", "X", &dhcp_universe, 171 },
274 { "#172", "X", &dhcp_universe, 172 },
275 { "#173", "X", &dhcp_universe, 173 },
276 { "#174", "X", &dhcp_universe, 174 },
277 { "#175", "X", &dhcp_universe, 175 },
278 { "#176", "X", &dhcp_universe, 176 },
279 { "#177", "X", &dhcp_universe, 177 },
280 { "#178", "X", &dhcp_universe, 178 },
281 { "#179", "X", &dhcp_universe, 179 },
282 { "#180", "X", &dhcp_universe, 180 },
283 { "#181", "X", &dhcp_universe, 181 },
284 { "#182", "X", &dhcp_universe, 182 },
285 { "#183", "X", &dhcp_universe, 183 },
286 { "#184", "X", &dhcp_universe, 184 },
287 { "#185", "X", &dhcp_universe, 185 },
288 { "#186", "X", &dhcp_universe, 186 },
289 { "#187", "X", &dhcp_universe, 187 },
290 { "#188", "X", &dhcp_universe, 188 },
291 { "#189", "X", &dhcp_universe, 189 },
292 { "#190", "X", &dhcp_universe, 190 },
293 { "#191", "X", &dhcp_universe, 191 },
294 { "#192", "X", &dhcp_universe, 192 },
295 { "#193", "X", &dhcp_universe, 193 },
296 { "#194", "X", &dhcp_universe, 194 },
297 { "#195", "X", &dhcp_universe, 195 },
298 { "#196", "X", &dhcp_universe, 196 },
299 { "#197", "X", &dhcp_universe, 197 },
300 { "#198", "X", &dhcp_universe, 198 },
301 { "#199", "X", &dhcp_universe, 199 },
302 { "#200", "X", &dhcp_universe, 200 },
303 { "#201", "X", &dhcp_universe, 201 },
304 { "#202", "X", &dhcp_universe, 202 },
305 { "#203", "X", &dhcp_universe, 203 },
306 { "#204", "X", &dhcp_universe, 204 },
307 { "#205", "X", &dhcp_universe, 205 },
308 { "#206", "X", &dhcp_universe, 206 },
309 { "#207", "X", &dhcp_universe, 207 },
310 { "#208", "X", &dhcp_universe, 208 },
311 { "#209", "X", &dhcp_universe, 209 },
312 { "authenticate", "X", &dhcp_universe, 210 },
313 { "#211", "X", &dhcp_universe, 211 },
314 { "#212", "X", &dhcp_universe, 212 },
315 { "#213", "X", &dhcp_universe, 213 },
316 { "#214", "X", &dhcp_universe, 214 },
317 { "#215", "X", &dhcp_universe, 215 },
318 { "#216", "X", &dhcp_universe, 216 },
319 { "#217", "X", &dhcp_universe, 217 },
320 { "#218", "X", &dhcp_universe, 218 },
321 { "#219", "X", &dhcp_universe, 219 },
322 { "#220", "X", &dhcp_universe, 220 },
323 { "#221", "X", &dhcp_universe, 221 },
324 { "#222", "X", &dhcp_universe, 222 },
325 { "#223", "X", &dhcp_universe, 223 },
326 { "#224", "X", &dhcp_universe, 224 },
327 { "#225", "X", &dhcp_universe, 225 },
328 { "#226", "X", &dhcp_universe, 226 },
329 { "#227", "X", &dhcp_universe, 227 },
330 { "#228", "X", &dhcp_universe, 228 },
331 { "#229", "X", &dhcp_universe, 229 },
332 { "#230", "X", &dhcp_universe, 230 },
333 { "#231", "X", &dhcp_universe, 231 },
334 { "#232", "X", &dhcp_universe, 232 },
335 { "#233", "X", &dhcp_universe, 233 },
336 { "#234", "X", &dhcp_universe, 234 },
337 { "#235", "X", &dhcp_universe, 235 },
338 { "#236", "X", &dhcp_universe, 236 },
339 { "#237", "X", &dhcp_universe, 237 },
340 { "#238", "X", &dhcp_universe, 238 },
341 { "#239", "X", &dhcp_universe, 239 },
342 { "#240", "X", &dhcp_universe, 240 },
343 { "#241", "X", &dhcp_universe, 241 },
344 { "#242", "X", &dhcp_universe, 242 },
345 { "#243", "X", &dhcp_universe, 243 },
346 { "#244", "X", &dhcp_universe, 244 },
347 { "#245", "X", &dhcp_universe, 245 },
348 { "#246", "X", &dhcp_universe, 246 },
349 { "#247", "X", &dhcp_universe, 247 },
350 { "#248", "X", &dhcp_universe, 248 },
351 { "#249", "X", &dhcp_universe, 249 },
352 { "#250", "X", &dhcp_universe, 250 },
353 { "#251", "X", &dhcp_universe, 251 },
354 { "#252", "X", &dhcp_universe, 252 },
355 { "#253", "X", &dhcp_universe, 253 },
356 { "#254", "X", &dhcp_universe, 254 },
357 { "option-end", "e", &dhcp_universe, 255 },
360 struct universe nwip_universe;
361 struct option nwip_options [256] = {
362 { "pad", "", &nwip_universe, 0 },
363 { "illegal-1", "", &nwip_universe, 1 },
364 { "illegal-2", "", &nwip_universe, 2 },
365 { "illegal-3", "", &nwip_universe, 3 },
366 { "illegal-4", "", &nwip_universe, 4 },
367 { "nsq-broadcast", "f", &nwip_universe, 5 },
368 { "preferred-dss", "IA", &nwip_universe, 6 },
369 { "nearest-nwip-server", "IA", &nwip_universe, 7 },
370 { "autoretries", "B", &nwip_universe, 8 },
371 { "autoretry-secs", "B", &nwip_universe, 9 },
372 { "nwip-1-1", "f", &nwip_universe, 10 },
373 { "primary-dss", "I", &nwip_universe, 11 },
374 { "#12", "X", &nwip_universe, 12 },
375 { "#13", "X", &nwip_universe, 13 },
376 { "#14", "X", &nwip_universe, 14 },
377 { "#15", "X", &nwip_universe, 15 },
378 { "#16", "X", &nwip_universe, 16 },
379 { "#17", "X", &nwip_universe, 17 },
380 { "#18", "X", &nwip_universe, 18 },
381 { "#19", "X", &nwip_universe, 19 },
382 { "#20", "X", &nwip_universe, 20 },
383 { "#21", "X", &nwip_universe, 21 },
384 { "#22", "X", &nwip_universe, 22 },
385 { "#23", "X", &nwip_universe, 23 },
386 { "#24", "X", &nwip_universe, 24 },
387 { "#25", "X", &nwip_universe, 25 },
388 { "#26", "X", &nwip_universe, 26 },
389 { "#27", "X", &nwip_universe, 27 },
390 { "#28", "X", &nwip_universe, 28 },
391 { "#29", "X", &nwip_universe, 29 },
392 { "#30", "X", &nwip_universe, 30 },
393 { "#31", "X", &nwip_universe, 31 },
394 { "#32", "X", &nwip_universe, 32 },
395 { "#33", "X", &nwip_universe, 33 },
396 { "#34", "X", &nwip_universe, 34 },
397 { "#35", "X", &nwip_universe, 35 },
398 { "#36", "X", &nwip_universe, 36 },
399 { "#37", "X", &nwip_universe, 37 },
400 { "#38", "X", &nwip_universe, 38 },
401 { "#39", "X", &nwip_universe, 39 },
402 { "#40", "X", &nwip_universe, 40 },
403 { "#41", "X", &nwip_universe, 41 },
404 { "#42", "X", &nwip_universe, 42 },
405 { "#43", "X", &nwip_universe, 43 },
406 { "#44", "X", &nwip_universe, 44 },
407 { "#45", "X", &nwip_universe, 45 },
408 { "#46", "X", &nwip_universe, 46 },
409 { "#47", "X", &nwip_universe, 47 },
410 { "#48", "X", &nwip_universe, 48 },
411 { "#49", "X", &nwip_universe, 49 },
412 { "#50", "X", &nwip_universe, 50 },
413 { "#51", "X", &nwip_universe, 51 },
414 { "#52", "X", &nwip_universe, 52 },
415 { "#53", "X", &nwip_universe, 53 },
416 { "#54", "X", &nwip_universe, 54 },
417 { "#55", "X", &nwip_universe, 55 },
418 { "#56", "X", &nwip_universe, 56 },
419 { "#57", "X", &nwip_universe, 57 },
420 { "#58", "X", &nwip_universe, 58 },
421 { "#59", "X", &nwip_universe, 59 },
422 { "#60", "X", &nwip_universe, 60 },
423 { "#61", "X", &nwip_universe, 61 },
424 { "#62", "X", &nwip_universe, 62 },
425 { "#63", "X", &nwip_universe, 63 },
426 { "#64", "X", &nwip_universe, 64 },
427 { "#65", "X", &nwip_universe, 65 },
428 { "#66", "X", &nwip_universe, 66 },
429 { "#67", "X", &nwip_universe, 67 },
430 { "#68", "X", &nwip_universe, 68 },
431 { "#69", "X", &nwip_universe, 69 },
432 { "#70", "X", &nwip_universe, 70 },
433 { "#71", "X", &nwip_universe, 71 },
434 { "#72", "X", &nwip_universe, 72 },
435 { "#73", "X", &nwip_universe, 73 },
436 { "#74", "X", &nwip_universe, 74 },
437 { "#75", "X", &nwip_universe, 75 },
438 { "#76", "X", &nwip_universe, 76 },
439 { "#77", "X", &nwip_universe, 77 },
440 { "#78", "X", &nwip_universe, 78 },
441 { "#79", "X", &nwip_universe, 79 },
442 { "#80", "X", &nwip_universe, 80 },
443 { "#81", "X", &nwip_universe, 81 },
444 { "#82", "X", &nwip_universe, 82 },
445 { "#83", "X", &nwip_universe, 83 },
446 { "#84", "X", &nwip_universe, 84 },
447 { "#85", "X", &nwip_universe, 85 },
448 { "#86", "X", &nwip_universe, 86 },
449 { "#87", "X", &nwip_universe, 87 },
450 { "#88", "X", &nwip_universe, 88 },
451 { "#89", "X", &nwip_universe, 89 },
452 { "#90", "X", &nwip_universe, 90 },
453 { "#91", "X", &nwip_universe, 91 },
454 { "#92", "X", &nwip_universe, 92 },
455 { "#93", "X", &nwip_universe, 93 },
456 { "#94", "X", &nwip_universe, 94 },
457 { "#95", "X", &nwip_universe, 95 },
458 { "#96", "X", &nwip_universe, 96 },
459 { "#97", "X", &nwip_universe, 97 },
460 { "#98", "X", &nwip_universe, 98 },
461 { "#99", "X", &nwip_universe, 99 },
462 { "#100", "X", &nwip_universe, 100 },
463 { "#101", "X", &nwip_universe, 101 },
464 { "#102", "X", &nwip_universe, 102 },
465 { "#103", "X", &nwip_universe, 103 },
466 { "#104", "X", &nwip_universe, 104 },
467 { "#105", "X", &nwip_universe, 105 },
468 { "#106", "X", &nwip_universe, 106 },
469 { "#107", "X", &nwip_universe, 107 },
470 { "#108", "X", &nwip_universe, 108 },
471 { "#109", "X", &nwip_universe, 109 },
472 { "#110", "X", &nwip_universe, 110 },
473 { "#111", "X", &nwip_universe, 111 },
474 { "#112", "X", &nwip_universe, 112 },
475 { "#113", "X", &nwip_universe, 113 },
476 { "#114", "X", &nwip_universe, 114 },
477 { "#115", "X", &nwip_universe, 115 },
478 { "#116", "X", &nwip_universe, 116 },
479 { "#117", "X", &nwip_universe, 117 },
480 { "#118", "X", &nwip_universe, 118 },
481 { "#119", "X", &nwip_universe, 119 },
482 { "#120", "X", &nwip_universe, 120 },
483 { "#121", "X", &nwip_universe, 121 },
484 { "#122", "X", &nwip_universe, 122 },
485 { "#123", "X", &nwip_universe, 123 },
486 { "#124", "X", &nwip_universe, 124 },
487 { "#125", "X", &nwip_universe, 125 },
488 { "#126", "X", &nwip_universe, 126 },
489 { "#127", "X", &nwip_universe, 127 },
490 { "#128", "X", &nwip_universe, 128 },
491 { "#129", "X", &nwip_universe, 129 },
492 { "#130", "X", &nwip_universe, 130 },
493 { "#131", "X", &nwip_universe, 131 },
494 { "#132", "X", &nwip_universe, 132 },
495 { "#133", "X", &nwip_universe, 133 },
496 { "#134", "X", &nwip_universe, 134 },
497 { "#135", "X", &nwip_universe, 135 },
498 { "#136", "X", &nwip_universe, 136 },
499 { "#137", "X", &nwip_universe, 137 },
500 { "#138", "X", &nwip_universe, 138 },
501 { "#139", "X", &nwip_universe, 139 },
502 { "#140", "X", &nwip_universe, 140 },
503 { "#141", "X", &nwip_universe, 141 },
504 { "#142", "X", &nwip_universe, 142 },
505 { "#143", "X", &nwip_universe, 143 },
506 { "#144", "X", &nwip_universe, 144 },
507 { "#145", "X", &nwip_universe, 145 },
508 { "#146", "X", &nwip_universe, 146 },
509 { "#147", "X", &nwip_universe, 147 },
510 { "#148", "X", &nwip_universe, 148 },
511 { "#149", "X", &nwip_universe, 149 },
512 { "#150", "X", &nwip_universe, 150 },
513 { "#151", "X", &nwip_universe, 151 },
514 { "#152", "X", &nwip_universe, 152 },
515 { "#153", "X", &nwip_universe, 153 },
516 { "#154", "X", &nwip_universe, 154 },
517 { "#155", "X", &nwip_universe, 155 },
518 { "#156", "X", &nwip_universe, 156 },
519 { "#157", "X", &nwip_universe, 157 },
520 { "#158", "X", &nwip_universe, 158 },
521 { "#159", "X", &nwip_universe, 159 },
522 { "#160", "X", &nwip_universe, 160 },
523 { "#161", "X", &nwip_universe, 161 },
524 { "#162", "X", &nwip_universe, 162 },
525 { "#163", "X", &nwip_universe, 163 },
526 { "#164", "X", &nwip_universe, 164 },
527 { "#165", "X", &nwip_universe, 165 },
528 { "#166", "X", &nwip_universe, 166 },
529 { "#167", "X", &nwip_universe, 167 },
530 { "#168", "X", &nwip_universe, 168 },
531 { "#169", "X", &nwip_universe, 169 },
532 { "#170", "X", &nwip_universe, 170 },
533 { "#171", "X", &nwip_universe, 171 },
534 { "#172", "X", &nwip_universe, 172 },
535 { "#173", "X", &nwip_universe, 173 },
536 { "#174", "X", &nwip_universe, 174 },
537 { "#175", "X", &nwip_universe, 175 },
538 { "#176", "X", &nwip_universe, 176 },
539 { "#177", "X", &nwip_universe, 177 },
540 { "#178", "X", &nwip_universe, 178 },
541 { "#179", "X", &nwip_universe, 179 },
542 { "#180", "X", &nwip_universe, 180 },
543 { "#181", "X", &nwip_universe, 181 },
544 { "#182", "X", &nwip_universe, 182 },
545 { "#183", "X", &nwip_universe, 183 },
546 { "#184", "X", &nwip_universe, 184 },
547 { "#185", "X", &nwip_universe, 185 },
548 { "#186", "X", &nwip_universe, 186 },
549 { "#187", "X", &nwip_universe, 187 },
550 { "#188", "X", &nwip_universe, 188 },
551 { "#189", "X", &nwip_universe, 189 },
552 { "#190", "X", &nwip_universe, 190 },
553 { "#191", "X", &nwip_universe, 191 },
554 { "#192", "X", &nwip_universe, 192 },
555 { "#193", "X", &nwip_universe, 193 },
556 { "#194", "X", &nwip_universe, 194 },
557 { "#195", "X", &nwip_universe, 195 },
558 { "#196", "X", &nwip_universe, 196 },
559 { "#197", "X", &nwip_universe, 197 },
560 { "#198", "X", &nwip_universe, 198 },
561 { "#199", "X", &nwip_universe, 199 },
562 { "#200", "X", &nwip_universe, 200 },
563 { "#201", "X", &nwip_universe, 201 },
564 { "#202", "X", &nwip_universe, 202 },
565 { "#203", "X", &nwip_universe, 203 },
566 { "#204", "X", &nwip_universe, 204 },
567 { "#205", "X", &nwip_universe, 205 },
568 { "#206", "X", &nwip_universe, 206 },
569 { "#207", "X", &nwip_universe, 207 },
570 { "#208", "X", &nwip_universe, 208 },
571 { "#209", "X", &nwip_universe, 209 },
572 { "#210", "X", &nwip_universe, 210 },
573 { "#211", "X", &nwip_universe, 211 },
574 { "#212", "X", &nwip_universe, 212 },
575 { "#213", "X", &nwip_universe, 213 },
576 { "#214", "X", &nwip_universe, 214 },
577 { "#215", "X", &nwip_universe, 215 },
578 { "#216", "X", &nwip_universe, 216 },
579 { "#217", "X", &nwip_universe, 217 },
580 { "#218", "X", &nwip_universe, 218 },
581 { "#219", "X", &nwip_universe, 219 },
582 { "#220", "X", &nwip_universe, 220 },
583 { "#221", "X", &nwip_universe, 221 },
584 { "#222", "X", &nwip_universe, 222 },
585 { "#223", "X", &nwip_universe, 223 },
586 { "#224", "X", &nwip_universe, 224 },
587 { "#225", "X", &nwip_universe, 225 },
588 { "#226", "X", &nwip_universe, 226 },
589 { "#227", "X", &nwip_universe, 227 },
590 { "#228", "X", &nwip_universe, 228 },
591 { "#229", "X", &nwip_universe, 229 },
592 { "#230", "X", &nwip_universe, 230 },
593 { "#231", "X", &nwip_universe, 231 },
594 { "#232", "X", &nwip_universe, 232 },
595 { "#233", "X", &nwip_universe, 233 },
596 { "#234", "X", &nwip_universe, 234 },
597 { "#235", "X", &nwip_universe, 235 },
598 { "#236", "X", &nwip_universe, 236 },
599 { "#237", "X", &nwip_universe, 237 },
600 { "#238", "X", &nwip_universe, 238 },
601 { "#239", "X", &nwip_universe, 239 },
602 { "#240", "X", &nwip_universe, 240 },
603 { "#241", "X", &nwip_universe, 241 },
604 { "#242", "X", &nwip_universe, 242 },
605 { "#243", "X", &nwip_universe, 243 },
606 { "#244", "X", &nwip_universe, 244 },
607 { "#245", "X", &nwip_universe, 245 },
608 { "#246", "X", &nwip_universe, 246 },
609 { "#247", "X", &nwip_universe, 247 },
610 { "#248", "X", &nwip_universe, 248 },
611 { "#249", "X", &nwip_universe, 249 },
612 { "#250", "X", &nwip_universe, 250 },
613 { "#251", "X", &nwip_universe, 251 },
614 { "#252", "X", &nwip_universe, 252 },
615 { "#253", "X", &nwip_universe, 253 },
616 { "#254", "X", &nwip_universe, 254 },
617 { "#end", "e", &nwip_universe, 255 },
620 struct universe fqdn_universe;
621 struct option fqdn_options [256] = {
622 { "pad", "", &fqdn_universe, 0 },
623 { "no-client-update", "f", &fqdn_universe, 1 },
624 { "server-update", "f", &fqdn_universe, 2 },
625 { "encoded", "f", &fqdn_universe, 3 },
626 { "rcode1", "B", &fqdn_universe, 4 },
627 { "rcode2", "B", &fqdn_universe, 5 },
628 { "hostname", "t", &fqdn_universe, 6 },
629 { "domainname", "t", &fqdn_universe, 7 },
630 { "fqdn", "t", &fqdn_universe, 8 },
631 { "#9", "X", &fqdn_universe, 9 },
632 { "#10", "X", &fqdn_universe, 10 },
633 { "#11", "X", &fqdn_universe, 11 },
634 { "#12", "X", &fqdn_universe, 12 },
635 { "#13", "X", &fqdn_universe, 13 },
636 { "#14", "X", &fqdn_universe, 14 },
637 { "#15", "X", &fqdn_universe, 15 },
638 { "#16", "X", &fqdn_universe, 16 },
639 { "#17", "X", &fqdn_universe, 17 },
640 { "#18", "X", &fqdn_universe, 18 },
641 { "#19", "X", &fqdn_universe, 19 },
642 { "#20", "X", &fqdn_universe, 20 },
643 { "#21", "X", &fqdn_universe, 21 },
644 { "#22", "X", &fqdn_universe, 22 },
645 { "#23", "X", &fqdn_universe, 23 },
646 { "#24", "X", &fqdn_universe, 24 },
647 { "#25", "X", &fqdn_universe, 25 },
648 { "#26", "X", &fqdn_universe, 26 },
649 { "#27", "X", &fqdn_universe, 27 },
650 { "#28", "X", &fqdn_universe, 28 },
651 { "#29", "X", &fqdn_universe, 29 },
652 { "#30", "X", &fqdn_universe, 30 },
653 { "#31", "X", &fqdn_universe, 31 },
654 { "#32", "X", &fqdn_universe, 32 },
655 { "#33", "X", &fqdn_universe, 33 },
656 { "#34", "X", &fqdn_universe, 34 },
657 { "#35", "X", &fqdn_universe, 35 },
658 { "#36", "X", &fqdn_universe, 36 },
659 { "#37", "X", &fqdn_universe, 37 },
660 { "#38", "X", &fqdn_universe, 38 },
661 { "#39", "X", &fqdn_universe, 39 },
662 { "#40", "X", &fqdn_universe, 40 },
663 { "#41", "X", &fqdn_universe, 41 },
664 { "#42", "X", &fqdn_universe, 42 },
665 { "#43", "X", &fqdn_universe, 43 },
666 { "#44", "X", &fqdn_universe, 44 },
667 { "#45", "X", &fqdn_universe, 45 },
668 { "#46", "X", &fqdn_universe, 46 },
669 { "#47", "X", &fqdn_universe, 47 },
670 { "#48", "X", &fqdn_universe, 48 },
671 { "#49", "X", &fqdn_universe, 49 },
672 { "#50", "X", &fqdn_universe, 50 },
673 { "#51", "X", &fqdn_universe, 51 },
674 { "#52", "X", &fqdn_universe, 52 },
675 { "#53", "X", &fqdn_universe, 53 },
676 { "#54", "X", &fqdn_universe, 54 },
677 { "#55", "X", &fqdn_universe, 55 },
678 { "#56", "X", &fqdn_universe, 56 },
679 { "#57", "X", &fqdn_universe, 57 },
680 { "#58", "X", &fqdn_universe, 58 },
681 { "#59", "X", &fqdn_universe, 59 },
682 { "#60", "X", &fqdn_universe, 60 },
683 { "#61", "X", &fqdn_universe, 61 },
684 { "#62", "X", &fqdn_universe, 62 },
685 { "#63", "X", &fqdn_universe, 63 },
686 { "#64", "X", &fqdn_universe, 64 },
687 { "#65", "X", &fqdn_universe, 65 },
688 { "#66", "X", &fqdn_universe, 66 },
689 { "#67", "X", &fqdn_universe, 67 },
690 { "#68", "X", &fqdn_universe, 68 },
691 { "#69", "X", &fqdn_universe, 69 },
692 { "#70", "X", &fqdn_universe, 70 },
693 { "#71", "X", &fqdn_universe, 71 },
694 { "#72", "X", &fqdn_universe, 72 },
695 { "#73", "X", &fqdn_universe, 73 },
696 { "#74", "X", &fqdn_universe, 74 },
697 { "#75", "X", &fqdn_universe, 75 },
698 { "#76", "X", &fqdn_universe, 76 },
699 { "#77", "X", &fqdn_universe, 77 },
700 { "#78", "X", &fqdn_universe, 78 },
701 { "#79", "X", &fqdn_universe, 79 },
702 { "#80", "X", &fqdn_universe, 80 },
703 { "#81", "X", &fqdn_universe, 81 },
704 { "#82", "X", &fqdn_universe, 82 },
705 { "#83", "X", &fqdn_universe, 83 },
706 { "#84", "X", &fqdn_universe, 84 },
707 { "#85", "X", &fqdn_universe, 85 },
708 { "#86", "X", &fqdn_universe, 86 },
709 { "#87", "X", &fqdn_universe, 87 },
710 { "#88", "X", &fqdn_universe, 88 },
711 { "#89", "X", &fqdn_universe, 89 },
712 { "#90", "X", &fqdn_universe, 90 },
713 { "#91", "X", &fqdn_universe, 91 },
714 { "#92", "X", &fqdn_universe, 92 },
715 { "#93", "X", &fqdn_universe, 93 },
716 { "#94", "X", &fqdn_universe, 94 },
717 { "#95", "X", &fqdn_universe, 95 },
718 { "#96", "X", &fqdn_universe, 96 },
719 { "#97", "X", &fqdn_universe, 97 },
720 { "#98", "X", &fqdn_universe, 98 },
721 { "#99", "X", &fqdn_universe, 99 },
722 { "#100", "X", &fqdn_universe, 100 },
723 { "#101", "X", &fqdn_universe, 101 },
724 { "#102", "X", &fqdn_universe, 102 },
725 { "#103", "X", &fqdn_universe, 103 },
726 { "#104", "X", &fqdn_universe, 104 },
727 { "#105", "X", &fqdn_universe, 105 },
728 { "#106", "X", &fqdn_universe, 106 },
729 { "#107", "X", &fqdn_universe, 107 },
730 { "#108", "X", &fqdn_universe, 108 },
731 { "#109", "X", &fqdn_universe, 109 },
732 { "#110", "X", &fqdn_universe, 110 },
733 { "#111", "X", &fqdn_universe, 111 },
734 { "#112", "X", &fqdn_universe, 112 },
735 { "#113", "X", &fqdn_universe, 113 },
736 { "#114", "X", &fqdn_universe, 114 },
737 { "#115", "X", &fqdn_universe, 115 },
738 { "#116", "X", &fqdn_universe, 116 },
739 { "#117", "X", &fqdn_universe, 117 },
740 { "#118", "X", &fqdn_universe, 118 },
741 { "#119", "X", &fqdn_universe, 119 },
742 { "#120", "X", &fqdn_universe, 120 },
743 { "#121", "X", &fqdn_universe, 121 },
744 { "#122", "X", &fqdn_universe, 122 },
745 { "#123", "X", &fqdn_universe, 123 },
746 { "#124", "X", &fqdn_universe, 124 },
747 { "#125", "X", &fqdn_universe, 125 },
748 { "#126", "X", &fqdn_universe, 126 },
749 { "#127", "X", &fqdn_universe, 127 },
750 { "#128", "X", &fqdn_universe, 128 },
751 { "#129", "X", &fqdn_universe, 129 },
752 { "#130", "X", &fqdn_universe, 130 },
753 { "#131", "X", &fqdn_universe, 131 },
754 { "#132", "X", &fqdn_universe, 132 },
755 { "#133", "X", &fqdn_universe, 133 },
756 { "#134", "X", &fqdn_universe, 134 },
757 { "#135", "X", &fqdn_universe, 135 },
758 { "#136", "X", &fqdn_universe, 136 },
759 { "#137", "X", &fqdn_universe, 137 },
760 { "#138", "X", &fqdn_universe, 138 },
761 { "#139", "X", &fqdn_universe, 139 },
762 { "#140", "X", &fqdn_universe, 140 },
763 { "#141", "X", &fqdn_universe, 141 },
764 { "#142", "X", &fqdn_universe, 142 },
765 { "#143", "X", &fqdn_universe, 143 },
766 { "#144", "X", &fqdn_universe, 144 },
767 { "#145", "X", &fqdn_universe, 145 },
768 { "#146", "X", &fqdn_universe, 146 },
769 { "#147", "X", &fqdn_universe, 147 },
770 { "#148", "X", &fqdn_universe, 148 },
771 { "#149", "X", &fqdn_universe, 149 },
772 { "#150", "X", &fqdn_universe, 150 },
773 { "#151", "X", &fqdn_universe, 151 },
774 { "#152", "X", &fqdn_universe, 152 },
775 { "#153", "X", &fqdn_universe, 153 },
776 { "#154", "X", &fqdn_universe, 154 },
777 { "#155", "X", &fqdn_universe, 155 },
778 { "#156", "X", &fqdn_universe, 156 },
779 { "#157", "X", &fqdn_universe, 157 },
780 { "#158", "X", &fqdn_universe, 158 },
781 { "#159", "X", &fqdn_universe, 159 },
782 { "#160", "X", &fqdn_universe, 160 },
783 { "#161", "X", &fqdn_universe, 161 },
784 { "#162", "X", &fqdn_universe, 162 },
785 { "#163", "X", &fqdn_universe, 163 },
786 { "#164", "X", &fqdn_universe, 164 },
787 { "#165", "X", &fqdn_universe, 165 },
788 { "#166", "X", &fqdn_universe, 166 },
789 { "#167", "X", &fqdn_universe, 167 },
790 { "#168", "X", &fqdn_universe, 168 },
791 { "#169", "X", &fqdn_universe, 169 },
792 { "#170", "X", &fqdn_universe, 170 },
793 { "#171", "X", &fqdn_universe, 171 },
794 { "#172", "X", &fqdn_universe, 172 },
795 { "#173", "X", &fqdn_universe, 173 },
796 { "#174", "X", &fqdn_universe, 174 },
797 { "#175", "X", &fqdn_universe, 175 },
798 { "#176", "X", &fqdn_universe, 176 },
799 { "#177", "X", &fqdn_universe, 177 },
800 { "#178", "X", &fqdn_universe, 178 },
801 { "#179", "X", &fqdn_universe, 179 },
802 { "#180", "X", &fqdn_universe, 180 },
803 { "#181", "X", &fqdn_universe, 181 },
804 { "#182", "X", &fqdn_universe, 182 },
805 { "#183", "X", &fqdn_universe, 183 },
806 { "#184", "X", &fqdn_universe, 184 },
807 { "#185", "X", &fqdn_universe, 185 },
808 { "#186", "X", &fqdn_universe, 186 },
809 { "#187", "X", &fqdn_universe, 187 },
810 { "#188", "X", &fqdn_universe, 188 },
811 { "#189", "X", &fqdn_universe, 189 },
812 { "#190", "X", &fqdn_universe, 190 },
813 { "#191", "X", &fqdn_universe, 191 },
814 { "#192", "X", &fqdn_universe, 192 },
815 { "#193", "X", &fqdn_universe, 193 },
816 { "#194", "X", &fqdn_universe, 194 },
817 { "#195", "X", &fqdn_universe, 195 },
818 { "#196", "X", &fqdn_universe, 196 },
819 { "#197", "X", &fqdn_universe, 197 },
820 { "#198", "X", &fqdn_universe, 198 },
821 { "#199", "X", &fqdn_universe, 199 },
822 { "#200", "X", &fqdn_universe, 200 },
823 { "#201", "X", &fqdn_universe, 201 },
824 { "#202", "X", &fqdn_universe, 202 },
825 { "#203", "X", &fqdn_universe, 203 },
826 { "#204", "X", &fqdn_universe, 204 },
827 { "#205", "X", &fqdn_universe, 205 },
828 { "#206", "X", &fqdn_universe, 206 },
829 { "#207", "X", &fqdn_universe, 207 },
830 { "#208", "X", &fqdn_universe, 208 },
831 { "#209", "X", &fqdn_universe, 209 },
832 { "#210", "X", &fqdn_universe, 210 },
833 { "#211", "X", &fqdn_universe, 211 },
834 { "#212", "X", &fqdn_universe, 212 },
835 { "#213", "X", &fqdn_universe, 213 },
836 { "#214", "X", &fqdn_universe, 214 },
837 { "#215", "X", &fqdn_universe, 215 },
838 { "#216", "X", &fqdn_universe, 216 },
839 { "#217", "X", &fqdn_universe, 217 },
840 { "#218", "X", &fqdn_universe, 218 },
841 { "#219", "X", &fqdn_universe, 219 },
842 { "#220", "X", &fqdn_universe, 220 },
843 { "#221", "X", &fqdn_universe, 221 },
844 { "#222", "X", &fqdn_universe, 222 },
845 { "#223", "X", &fqdn_universe, 223 },
846 { "#224", "X", &fqdn_universe, 224 },
847 { "#225", "X", &fqdn_universe, 225 },
848 { "#226", "X", &fqdn_universe, 226 },
849 { "#227", "X", &fqdn_universe, 227 },
850 { "#228", "X", &fqdn_universe, 228 },
851 { "#229", "X", &fqdn_universe, 229 },
852 { "#230", "X", &fqdn_universe, 230 },
853 { "#231", "X", &fqdn_universe, 231 },
854 { "#232", "X", &fqdn_universe, 232 },
855 { "#233", "X", &fqdn_universe, 233 },
856 { "#234", "X", &fqdn_universe, 234 },
857 { "#235", "X", &fqdn_universe, 235 },
858 { "#236", "X", &fqdn_universe, 236 },
859 { "#237", "X", &fqdn_universe, 237 },
860 { "#238", "X", &fqdn_universe, 238 },
861 { "#239", "X", &fqdn_universe, 239 },
862 { "#240", "X", &fqdn_universe, 240 },
863 { "#241", "X", &fqdn_universe, 241 },
864 { "#242", "X", &fqdn_universe, 242 },
865 { "#243", "X", &fqdn_universe, 243 },
866 { "#244", "X", &fqdn_universe, 244 },
867 { "#245", "X", &fqdn_universe, 245 },
868 { "#246", "X", &fqdn_universe, 246 },
869 { "#247", "X", &fqdn_universe, 247 },
870 { "#248", "X", &fqdn_universe, 248 },
871 { "#249", "X", &fqdn_universe, 249 },
872 { "#250", "X", &fqdn_universe, 250 },
873 { "#251", "X", &fqdn_universe, 251 },
874 { "#252", "X", &fqdn_universe, 252 },
875 { "#253", "X", &fqdn_universe, 253 },
876 { "#254", "X", &fqdn_universe, 254 },
877 { "#end", "e", &fqdn_universe, 255 },
880 const char *hardware_types [] = {
1138 universe_hash_t *universe_hash;
1139 struct universe **universes;
1140 int universe_count, universe_max;
1142 /* Universe containing names of configuration options, which, rather than
1143 writing "option universe-name.option-name ...;", can be set by writing
1144 "option-name ...;". */
1146 struct universe *config_universe;
1148 void initialize_common_option_spaces()
1153 universes = ((struct universe **)
1154 dmalloc (universe_max * sizeof (struct universe *), MDL));
1156 log_fatal ("Can't allocate option space table.");
1157 memset (universes, 0, universe_max * sizeof (struct universe *));
1159 /* Set up the DHCP option universe... */
1160 dhcp_universe.name = "dhcp";
1161 dhcp_universe.lookup_func = lookup_hashed_option;
1162 dhcp_universe.option_state_dereference =
1163 hashed_option_state_dereference;
1164 dhcp_universe.save_func = save_hashed_option;
1165 dhcp_universe.delete_func = delete_hashed_option;
1166 dhcp_universe.encapsulate = hashed_option_space_encapsulate;
1167 dhcp_universe.foreach = hashed_option_space_foreach;
1168 dhcp_universe.decode = parse_option_buffer;
1169 dhcp_universe.length_size = 1;
1170 dhcp_universe.tag_size = 1;
1171 dhcp_universe.store_tag = putUChar;
1172 dhcp_universe.store_length = putUChar;
1173 dhcp_universe.index = universe_count++;
1174 universes [dhcp_universe.index] = &dhcp_universe;
1175 if (!option_new_hash (&dhcp_universe.hash, 1, MDL))
1176 log_fatal ("Can't allocate dhcp option hash table.");
1177 for (i = 0; i < 256; i++) {
1178 dhcp_universe.options [i] = &dhcp_options [i];
1179 option_hash_add (dhcp_universe.hash,
1180 dhcp_options [i].name, 0,
1181 &dhcp_options [i], MDL);
1184 /* Set up the Novell option universe (for option 63)... */
1185 nwip_universe.name = "nwip";
1186 nwip_universe.lookup_func = lookup_linked_option;
1187 nwip_universe.option_state_dereference =
1188 linked_option_state_dereference;
1189 nwip_universe.save_func = save_linked_option;
1190 nwip_universe.delete_func = delete_linked_option;
1191 nwip_universe.encapsulate = nwip_option_space_encapsulate;
1192 nwip_universe.foreach = linked_option_space_foreach;
1193 nwip_universe.decode = parse_option_buffer;
1194 nwip_universe.length_size = 1;
1195 nwip_universe.tag_size = 1;
1196 nwip_universe.store_tag = putUChar;
1197 nwip_universe.store_length = putUChar;
1198 nwip_universe.enc_opt = &dhcp_options [DHO_NWIP_SUBOPTIONS];
1199 nwip_universe.index = universe_count++;
1200 universes [nwip_universe.index] = &nwip_universe;
1201 option_new_hash (&nwip_universe.hash, 1, MDL);
1202 if (!nwip_universe.hash)
1203 log_fatal ("Can't allocate nwip option hash table.");
1204 for (i = 0; i < 256; i++) {
1205 nwip_universe.options [i] = &nwip_options [i];
1206 option_hash_add (nwip_universe.hash,
1207 nwip_options [i].name, 0,
1208 &nwip_options [i], MDL);
1211 /* Set up the FQDN option universe... */
1212 fqdn_universe.name = "fqdn";
1213 fqdn_universe.lookup_func = lookup_linked_option;
1214 fqdn_universe.option_state_dereference =
1215 linked_option_state_dereference;
1216 fqdn_universe.save_func = save_linked_option;
1217 fqdn_universe.delete_func = delete_linked_option;
1218 fqdn_universe.encapsulate = fqdn_option_space_encapsulate;
1219 fqdn_universe.foreach = linked_option_space_foreach;
1220 fqdn_universe.decode = fqdn_universe_decode;
1221 fqdn_universe.length_size = 1;
1222 fqdn_universe.tag_size = 1;
1223 fqdn_universe.store_tag = putUChar;
1224 fqdn_universe.store_length = putUChar;
1225 fqdn_universe.index = universe_count++;
1226 fqdn_universe.enc_opt = &dhcp_options [DHO_FQDN];
1227 universes [fqdn_universe.index] = &fqdn_universe;
1228 option_new_hash (&fqdn_universe.hash, 1, MDL);
1229 if (!fqdn_universe.hash)
1230 log_fatal ("Can't allocate fqdn option hash table.");
1231 for (i = 0; i < 256; i++) {
1232 fqdn_universe.options [i] = &fqdn_options [i];
1233 option_hash_add (fqdn_universe.hash,
1234 fqdn_options [i].name, 0,
1235 &fqdn_options [i], MDL);
1238 /* Set up the hash of universes. */
1239 universe_new_hash (&universe_hash, 1, MDL);
1240 universe_hash_add (universe_hash,
1241 dhcp_universe.name, 0,
1242 &dhcp_universe, MDL);
1243 universe_hash_add (universe_hash,
1244 nwip_universe.name, 0,
1245 &nwip_universe, MDL);
1246 universe_hash_add (universe_hash,
1247 fqdn_universe.name, 0,
1248 &fqdn_universe, MDL);