tables.c revision 331722
1221163Sadrian/*	$OpenBSD: tables.c,v 1.4 2004/05/04 20:28:40 deraadt Exp $	*/
2221163Sadrian
3221163Sadrian/* Tables of information... */
4221163Sadrian
5221163Sadrian/*
6221163Sadrian * Copyright (c) 1995, 1996 The Internet Software Consortium.
7221163Sadrian * All rights reserved.
8221163Sadrian *
9221163Sadrian * Redistribution and use in source and binary forms, with or without
10221163Sadrian * modification, are permitted provided that the following conditions
11221163Sadrian * are met:
12221163Sadrian *
13221163Sadrian * 1. Redistributions of source code must retain the above copyright
14221163Sadrian *    notice, this list of conditions and the following disclaimer.
15221163Sadrian * 2. Redistributions in binary form must reproduce the above copyright
16221163Sadrian *    notice, this list of conditions and the following disclaimer in the
17221163Sadrian *    documentation and/or other materials provided with the distribution.
18221163Sadrian * 3. Neither the name of The Internet Software Consortium nor the names
19221163Sadrian *    of its contributors may be used to endorse or promote products derived
20221163Sadrian *    from this software without specific prior written permission.
21221163Sadrian *
22221163Sadrian * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
23221163Sadrian * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24221163Sadrian * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25221163Sadrian * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26221163Sadrian * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
27221163Sadrian * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28221163Sadrian * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29221163Sadrian * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30221163Sadrian * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31221163Sadrian * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32221163Sadrian * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33221163Sadrian * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34221163Sadrian * SUCH DAMAGE.
35221163Sadrian *
36221163Sadrian * This software has been written for the Internet Software Consortium
37221163Sadrian * by Ted Lemon <mellon@fugue.com> in cooperation with Vixie
38221163Sadrian * Enterprises.  To learn more about the Internet Software Consortium,
39221163Sadrian * see ``http://www.vix.com/isc''.  To learn more about Vixie
40221163Sadrian * Enterprises, see ``http://www.vix.com''.
41221163Sadrian */
42221163Sadrian
43221163Sadrian#include <sys/cdefs.h>
44221163Sadrian__FBSDID("$FreeBSD: stable/11/sbin/dhclient/tables.c 331722 2018-03-29 02:50:57Z eadler $");
45221163Sadrian
46221163Sadrian#include "dhcpd.h"
47221163Sadrian
48221163Sadrian/*
49221163Sadrian * DHCP Option names, formats and codes, from RFC1533.
50221163Sadrian *
51221163Sadrian * Format codes:
52221163Sadrian *
53221163Sadrian * e - end of data
54221163Sadrian * I - IP address
55221163Sadrian * l - 32-bit signed integer
56221163Sadrian * L - 32-bit unsigned integer
57221163Sadrian * s - 16-bit signed integer
58221163Sadrian * S - 16-bit unsigned integer
59221163Sadrian * b - 8-bit signed integer
60221163Sadrian * B - 8-bit unsigned integer
61221163Sadrian * t - ASCII text
62221163Sadrian * f - flag (true or false)
63221163Sadrian * A - array of whatever precedes (e.g., IA means array of IP addresses)
64221163Sadrian */
65221163Sadrian
66221163Sadrianstruct universe dhcp_universe;
67221163Sadrianstruct option dhcp_options[256] = {
68221163Sadrian	{ "pad", "",					&dhcp_universe, 0 },
69221163Sadrian	{ "subnet-mask", "I",				&dhcp_universe, 1 },
70221163Sadrian	{ "time-offset", "l",				&dhcp_universe, 2 },
71221163Sadrian	{ "routers", "IA",				&dhcp_universe, 3 },
72221163Sadrian	{ "time-servers", "IA",				&dhcp_universe, 4 },
73221163Sadrian	{ "ien116-name-servers", "IA",			&dhcp_universe, 5 },
74221163Sadrian	{ "domain-name-servers", "IA",			&dhcp_universe, 6 },
75221163Sadrian	{ "log-servers", "IA",				&dhcp_universe, 7 },
76221163Sadrian	{ "cookie-servers", "IA",			&dhcp_universe, 8 },
77221163Sadrian	{ "lpr-servers", "IA",				&dhcp_universe, 9 },
78221163Sadrian	{ "impress-servers", "IA",			&dhcp_universe, 10 },
79221163Sadrian	{ "resource-location-servers", "IA",		&dhcp_universe, 11 },
80221163Sadrian	{ "host-name", "t",				&dhcp_universe, 12 },
81221163Sadrian	{ "boot-size", "S",				&dhcp_universe, 13 },
82221163Sadrian	{ "merit-dump", "t",				&dhcp_universe, 14 },
83221163Sadrian	{ "domain-name", "t",				&dhcp_universe, 15 },
84221163Sadrian	{ "swap-server", "I",				&dhcp_universe, 16 },
85221163Sadrian	{ "root-path", "t",				&dhcp_universe, 17 },
86221163Sadrian	{ "extensions-path", "t",			&dhcp_universe, 18 },
87221163Sadrian	{ "ip-forwarding", "f",				&dhcp_universe, 19 },
88221163Sadrian	{ "non-local-source-routing", "f",		&dhcp_universe, 20 },
89221163Sadrian	{ "policy-filter", "IIA",			&dhcp_universe, 21 },
90221163Sadrian	{ "max-dgram-reassembly", "S",			&dhcp_universe, 22 },
91221163Sadrian	{ "default-ip-ttl", "B",			&dhcp_universe, 23 },
92221163Sadrian	{ "path-mtu-aging-timeout", "L",		&dhcp_universe, 24 },
93221163Sadrian	{ "path-mtu-plateau-table", "SA",		&dhcp_universe, 25 },
94221163Sadrian	{ "interface-mtu", "S",				&dhcp_universe, 26 },
95221163Sadrian	{ "all-subnets-local", "f",			&dhcp_universe, 27 },
96221163Sadrian	{ "broadcast-address", "I",			&dhcp_universe, 28 },
97221163Sadrian	{ "perform-mask-discovery", "f",		&dhcp_universe, 29 },
98221163Sadrian	{ "mask-supplier", "f",				&dhcp_universe, 30 },
99221163Sadrian	{ "router-discovery", "f",			&dhcp_universe, 31 },
100221163Sadrian	{ "router-solicitation-address", "I",		&dhcp_universe, 32 },
101221163Sadrian	{ "static-routes", "IIA",			&dhcp_universe, 33 },
102221163Sadrian	{ "trailer-encapsulation", "f",			&dhcp_universe, 34 },
103221163Sadrian	{ "arp-cache-timeout", "L",			&dhcp_universe, 35 },
104221163Sadrian	{ "ieee802-3-encapsulation", "f",		&dhcp_universe, 36 },
105221163Sadrian	{ "default-tcp-ttl", "B",			&dhcp_universe, 37 },
106221163Sadrian	{ "tcp-keepalive-interval", "L",		&dhcp_universe, 38 },
107221163Sadrian	{ "tcp-keepalive-garbage", "f",			&dhcp_universe, 39 },
108221163Sadrian	{ "nis-domain", "t",				&dhcp_universe, 40 },
109221163Sadrian	{ "nis-servers", "IA",				&dhcp_universe, 41 },
110221163Sadrian	{ "ntp-servers", "IA",				&dhcp_universe, 42 },
111221163Sadrian	{ "vendor-encapsulated-options", "X",		&dhcp_universe, 43 },
112221163Sadrian	{ "netbios-name-servers", "IA",			&dhcp_universe, 44 },
113221163Sadrian	{ "netbios-dd-server", "IA",			&dhcp_universe, 45 },
114221163Sadrian	{ "netbios-node-type", "B",			&dhcp_universe, 46 },
115221163Sadrian	{ "netbios-scope", "t",				&dhcp_universe, 47 },
116221163Sadrian	{ "font-servers", "IA",				&dhcp_universe, 48 },
117221163Sadrian	{ "x-display-manager", "IA",			&dhcp_universe, 49 },
118221163Sadrian	{ "dhcp-requested-address", "I",		&dhcp_universe, 50 },
119221163Sadrian	{ "dhcp-lease-time", "L",			&dhcp_universe, 51 },
120221163Sadrian	{ "dhcp-option-overload", "B",			&dhcp_universe, 52 },
121221163Sadrian	{ "dhcp-message-type", "B",			&dhcp_universe, 53 },
122221163Sadrian	{ "dhcp-server-identifier", "I",		&dhcp_universe, 54 },
123221163Sadrian	{ "dhcp-parameter-request-list", "BA",		&dhcp_universe, 55 },
124221163Sadrian	{ "dhcp-message", "t",				&dhcp_universe, 56 },
125221163Sadrian	{ "dhcp-max-message-size", "S",			&dhcp_universe, 57 },
126221163Sadrian	{ "dhcp-renewal-time", "L",			&dhcp_universe, 58 },
127221163Sadrian	{ "dhcp-rebinding-time", "L",			&dhcp_universe, 59 },
128221163Sadrian	{ "dhcp-class-identifier", "t",			&dhcp_universe, 60 },
129221163Sadrian	{ "dhcp-client-identifier", "X",		&dhcp_universe, 61 },
130221163Sadrian	{ "option-62", "X",				&dhcp_universe, 62 },
131221163Sadrian	{ "option-63", "X",				&dhcp_universe, 63 },
132221163Sadrian	{ "nisplus-domain", "t",			&dhcp_universe, 64 },
133221163Sadrian	{ "nisplus-servers", "IA",			&dhcp_universe, 65 },
134221163Sadrian	{ "tftp-server-name", "t",			&dhcp_universe, 66 },
135221163Sadrian	{ "bootfile-name", "t",				&dhcp_universe, 67 },
136221163Sadrian	{ "mobile-ip-home-agent", "IA",			&dhcp_universe, 68 },
137221163Sadrian	{ "smtp-server", "IA",				&dhcp_universe, 69 },
138221163Sadrian	{ "pop-server", "IA",				&dhcp_universe, 70 },
139221163Sadrian	{ "nntp-server", "IA",				&dhcp_universe, 71 },
140221163Sadrian	{ "www-server", "IA",				&dhcp_universe, 72 },
141221163Sadrian	{ "finger-server", "IA",			&dhcp_universe, 73 },
142221163Sadrian	{ "irc-server", "IA",				&dhcp_universe, 74 },
143221163Sadrian	{ "streettalk-server", "IA",			&dhcp_universe, 75 },
144221163Sadrian	{ "streettalk-directory-assistance-server", "IA", &dhcp_universe, 76 },
145221163Sadrian	{ "user-class", "t",				&dhcp_universe, 77 },
146221163Sadrian	{ "option-78", "X",				&dhcp_universe, 78 },
147221163Sadrian	{ "option-79", "X",				&dhcp_universe, 79 },
148221163Sadrian	{ "option-80", "X",				&dhcp_universe, 80 },
149221163Sadrian	{ "option-81", "X",				&dhcp_universe, 81 },
150221163Sadrian	{ "option-82", "X",				&dhcp_universe, 82 },
151221163Sadrian	{ "option-83", "X",				&dhcp_universe, 83 },
152221163Sadrian	{ "option-84", "X",				&dhcp_universe, 84 },
153221163Sadrian	{ "nds-servers", "IA",				&dhcp_universe, 85 },
154221163Sadrian	{ "nds-tree-name", "X",				&dhcp_universe, 86 },
155221163Sadrian	{ "nds-context", "X",				&dhcp_universe, 87 },
156221163Sadrian	{ "option-88", "X",				&dhcp_universe, 88 },
157221163Sadrian	{ "option-89", "X",				&dhcp_universe, 89 },
158221163Sadrian	{ "option-90", "X",				&dhcp_universe, 90 },
159221163Sadrian	{ "option-91", "X",				&dhcp_universe, 91 },
160221163Sadrian	{ "option-92", "X",				&dhcp_universe, 92 },
161221163Sadrian	{ "option-93", "X",				&dhcp_universe, 93 },
162221163Sadrian	{ "option-94", "X",				&dhcp_universe, 94 },
163221163Sadrian	{ "option-95", "X",				&dhcp_universe, 95 },
164221163Sadrian	{ "option-96", "X",				&dhcp_universe, 96 },
165221163Sadrian	{ "option-97", "X",				&dhcp_universe, 97 },
166221163Sadrian	{ "option-98", "X",				&dhcp_universe, 98 },
167221163Sadrian	{ "option-99", "X",				&dhcp_universe, 99 },
168221163Sadrian	{ "option-100", "X",				&dhcp_universe, 100 },
169221163Sadrian	{ "option-101", "X",				&dhcp_universe, 101 },
170221163Sadrian	{ "option-102", "X",				&dhcp_universe, 102 },
171221163Sadrian	{ "option-103", "X",				&dhcp_universe, 103 },
172221163Sadrian	{ "option-104", "X",				&dhcp_universe, 104 },
173221163Sadrian	{ "option-105", "X",				&dhcp_universe, 105 },
174221163Sadrian	{ "option-106", "X",				&dhcp_universe, 106 },
175221163Sadrian	{ "option-107", "X",				&dhcp_universe, 107 },
176221163Sadrian	{ "option-108", "X",				&dhcp_universe, 108 },
177221163Sadrian	{ "option-109", "X",				&dhcp_universe, 109 },
178221163Sadrian	{ "option-110", "X",				&dhcp_universe, 110 },
179221163Sadrian	{ "option-111", "X",				&dhcp_universe, 111 },
180221163Sadrian	{ "option-112", "X",				&dhcp_universe, 112 },
181221163Sadrian	{ "option-113", "X",				&dhcp_universe, 113 },
182221163Sadrian	{ "option-114", "X",				&dhcp_universe, 114 },
183221163Sadrian	{ "option-115", "X",				&dhcp_universe, 115 },
184221163Sadrian	{ "option-116", "X",				&dhcp_universe, 116 },
185221163Sadrian	{ "option-117", "X",				&dhcp_universe, 117 },
186221163Sadrian	{ "option-118", "X",				&dhcp_universe, 118 },
187221163Sadrian	{ "domain-search", "t",				&dhcp_universe, 119 },
188221163Sadrian	{ "option-120", "X",				&dhcp_universe, 120 },
189221163Sadrian	{ "classless-routes", "BA",			&dhcp_universe, 121 },
190221163Sadrian	{ "option-122", "X",				&dhcp_universe, 122 },
191221163Sadrian	{ "option-123", "X",				&dhcp_universe, 123 },
192221163Sadrian	{ "option-124", "X",				&dhcp_universe, 124 },
193221163Sadrian	{ "option-125", "X",				&dhcp_universe, 125 },
194221163Sadrian	{ "option-126", "X",				&dhcp_universe, 126 },
195221163Sadrian	{ "option-127", "X",				&dhcp_universe, 127 },
196221163Sadrian	{ "option-128", "X",				&dhcp_universe, 128 },
197221163Sadrian	{ "option-129", "X",				&dhcp_universe, 129 },
198221163Sadrian	{ "option-130", "X",				&dhcp_universe, 130 },
199221163Sadrian	{ "option-131", "X",				&dhcp_universe, 131 },
200221163Sadrian	{ "option-132", "X",				&dhcp_universe, 132 },
201221163Sadrian	{ "option-133", "X",				&dhcp_universe, 133 },
202221163Sadrian	{ "option-134", "X",				&dhcp_universe, 134 },
203221163Sadrian	{ "option-135", "X",				&dhcp_universe, 135 },
204221163Sadrian	{ "option-136", "X",				&dhcp_universe, 136 },
205221163Sadrian	{ "option-137", "X",				&dhcp_universe, 137 },
206221163Sadrian	{ "option-138", "X",				&dhcp_universe, 138 },
207221163Sadrian	{ "option-139", "X",				&dhcp_universe, 139 },
208221163Sadrian	{ "option-140", "X",				&dhcp_universe, 140 },
209221163Sadrian	{ "option-141", "X",				&dhcp_universe, 141 },
210221163Sadrian	{ "option-142", "X",				&dhcp_universe, 142 },
211221163Sadrian	{ "option-143", "X",				&dhcp_universe, 143 },
212221163Sadrian	{ "option-144", "X",				&dhcp_universe, 144 },
213221163Sadrian	{ "option-145", "X",				&dhcp_universe, 145 },
214221163Sadrian	{ "option-146", "X",				&dhcp_universe, 146 },
215221163Sadrian	{ "option-147", "X",				&dhcp_universe, 147 },
216221163Sadrian	{ "option-148", "X",				&dhcp_universe, 148 },
217221163Sadrian	{ "option-149", "X",				&dhcp_universe, 149 },
218221163Sadrian	{ "option-150", "X",				&dhcp_universe, 150 },
219221163Sadrian	{ "option-151", "X",				&dhcp_universe, 151 },
220221163Sadrian	{ "option-152", "X",				&dhcp_universe, 152 },
221221163Sadrian	{ "option-153", "X",				&dhcp_universe, 153 },
222221163Sadrian	{ "option-154", "X",				&dhcp_universe, 154 },
223221163Sadrian	{ "option-155", "X",				&dhcp_universe, 155 },
224221163Sadrian	{ "option-156", "X",				&dhcp_universe, 156 },
225221163Sadrian	{ "option-157", "X",				&dhcp_universe, 157 },
226221163Sadrian	{ "option-158", "X",				&dhcp_universe, 158 },
227221163Sadrian	{ "option-159", "X",				&dhcp_universe, 159 },
228221163Sadrian	{ "option-160", "X",				&dhcp_universe, 160 },
229221163Sadrian	{ "option-161", "X",				&dhcp_universe, 161 },
230221163Sadrian	{ "option-162", "X",				&dhcp_universe, 162 },
231221163Sadrian	{ "option-163", "X",				&dhcp_universe, 163 },
232221163Sadrian	{ "option-164", "X",				&dhcp_universe, 164 },
233221163Sadrian	{ "option-165", "X",				&dhcp_universe, 165 },
234221163Sadrian	{ "option-166", "X",				&dhcp_universe, 166 },
235221163Sadrian	{ "option-167", "X",				&dhcp_universe, 167 },
236221163Sadrian	{ "option-168", "X",				&dhcp_universe, 168 },
237221163Sadrian	{ "option-169", "X",				&dhcp_universe, 169 },
238221163Sadrian	{ "option-170", "X",				&dhcp_universe, 170 },
239221163Sadrian	{ "option-171", "X",				&dhcp_universe, 171 },
240221163Sadrian	{ "option-172", "X",				&dhcp_universe, 172 },
241221163Sadrian	{ "option-173", "X",				&dhcp_universe, 173 },
242221163Sadrian	{ "option-174", "X",				&dhcp_universe, 174 },
243221163Sadrian	{ "option-175", "X",				&dhcp_universe, 175 },
244221163Sadrian	{ "option-176", "X",				&dhcp_universe, 176 },
245221163Sadrian	{ "option-177", "X",				&dhcp_universe, 177 },
246221163Sadrian	{ "option-178", "X",				&dhcp_universe, 178 },
247221163Sadrian	{ "option-179", "X",				&dhcp_universe, 179 },
248221163Sadrian	{ "option-180", "X",				&dhcp_universe, 180 },
249221163Sadrian	{ "option-181", "X",				&dhcp_universe, 181 },
250221163Sadrian	{ "option-182", "X",				&dhcp_universe, 182 },
251221163Sadrian	{ "option-183", "X",				&dhcp_universe, 183 },
252221163Sadrian	{ "option-184", "X",				&dhcp_universe, 184 },
253221163Sadrian	{ "option-185", "X",				&dhcp_universe, 185 },
254221163Sadrian	{ "option-186", "X",				&dhcp_universe, 186 },
255221163Sadrian	{ "option-187", "X",				&dhcp_universe, 187 },
256221163Sadrian	{ "option-188", "X",				&dhcp_universe, 188 },
257221163Sadrian	{ "option-189", "X",				&dhcp_universe, 189 },
258221163Sadrian	{ "option-190", "X",				&dhcp_universe, 190 },
259221163Sadrian	{ "option-191", "X",				&dhcp_universe, 191 },
260221163Sadrian	{ "option-192", "X",				&dhcp_universe, 192 },
261221163Sadrian	{ "option-193", "X",				&dhcp_universe, 193 },
262221163Sadrian	{ "option-194", "X",				&dhcp_universe, 194 },
263221163Sadrian	{ "option-195", "X",				&dhcp_universe, 195 },
264221163Sadrian	{ "option-196", "X",				&dhcp_universe, 196 },
265221163Sadrian	{ "option-197", "X",				&dhcp_universe, 197 },
266221163Sadrian	{ "option-198", "X",				&dhcp_universe, 198 },
267221163Sadrian	{ "option-199", "X",				&dhcp_universe, 199 },
268221163Sadrian	{ "option-200", "X",				&dhcp_universe, 200 },
269221163Sadrian	{ "option-201", "X",				&dhcp_universe, 201 },
270221163Sadrian	{ "option-202", "X",				&dhcp_universe, 202 },
271221163Sadrian	{ "option-203", "X",				&dhcp_universe, 203 },
272221163Sadrian	{ "option-204", "X",				&dhcp_universe, 204 },
273221163Sadrian	{ "option-205", "X",				&dhcp_universe, 205 },
274221163Sadrian	{ "option-206", "X",				&dhcp_universe, 206 },
275221163Sadrian	{ "option-207", "X",				&dhcp_universe, 207 },
276221163Sadrian	{ "option-208", "X",				&dhcp_universe, 208 },
277221163Sadrian	{ "option-209", "X",				&dhcp_universe, 209 },
278221163Sadrian	{ "option-210", "X",				&dhcp_universe, 210 },
279221163Sadrian	{ "option-211", "X",				&dhcp_universe, 211 },
280221163Sadrian	{ "option-212", "X",				&dhcp_universe, 212 },
281221163Sadrian	{ "option-213", "X",				&dhcp_universe, 213 },
282221163Sadrian	{ "option-214", "X",				&dhcp_universe, 214 },
283221163Sadrian	{ "option-215", "X",				&dhcp_universe, 215 },
284221163Sadrian	{ "option-216", "X",				&dhcp_universe, 216 },
285221163Sadrian	{ "option-217", "X",				&dhcp_universe, 217 },
286221163Sadrian	{ "option-218", "X",				&dhcp_universe, 218 },
287221163Sadrian	{ "option-219", "X",				&dhcp_universe, 219 },
288221163Sadrian	{ "option-220", "X",				&dhcp_universe, 220 },
289221163Sadrian	{ "option-221", "X",				&dhcp_universe, 221 },
290221163Sadrian	{ "option-222", "X",				&dhcp_universe, 222 },
291221163Sadrian	{ "option-223", "X",				&dhcp_universe, 223 },
292221163Sadrian	{ "option-224", "X",				&dhcp_universe, 224 },
293221163Sadrian	{ "option-225", "X",				&dhcp_universe, 225 },
294221163Sadrian	{ "option-226", "X",				&dhcp_universe, 226 },
295221163Sadrian	{ "option-227", "X",				&dhcp_universe, 227 },
296221163Sadrian	{ "option-228", "X",				&dhcp_universe, 228 },
297221163Sadrian	{ "option-229", "X",				&dhcp_universe, 229 },
298221163Sadrian	{ "option-230", "X",				&dhcp_universe, 230 },
299221163Sadrian	{ "option-231", "X",				&dhcp_universe, 231 },
300221163Sadrian	{ "option-232", "X",				&dhcp_universe, 232 },
301221163Sadrian	{ "option-233", "X",				&dhcp_universe, 233 },
302221163Sadrian	{ "option-234", "X",				&dhcp_universe, 234 },
303221163Sadrian	{ "option-235", "X",				&dhcp_universe, 235 },
304221163Sadrian	{ "option-236", "X",				&dhcp_universe, 236 },
305221163Sadrian	{ "option-237", "X",				&dhcp_universe, 237 },
306221163Sadrian	{ "option-238", "X",				&dhcp_universe, 238 },
307221163Sadrian	{ "option-239", "X",				&dhcp_universe, 239 },
308221163Sadrian	{ "option-240", "X",				&dhcp_universe, 240 },
309221163Sadrian	{ "option-241", "X",				&dhcp_universe, 241 },
310221163Sadrian	{ "option-242", "X",				&dhcp_universe, 242 },
311221163Sadrian	{ "option-243", "X",				&dhcp_universe, 243 },
312221163Sadrian	{ "option-244", "X",				&dhcp_universe, 244 },
313221163Sadrian	{ "option-245", "X",				&dhcp_universe, 245 },
314221163Sadrian	{ "option-246", "X",				&dhcp_universe, 246 },
315221163Sadrian	{ "option-247", "X",				&dhcp_universe, 247 },
316221163Sadrian	{ "option-248", "X",				&dhcp_universe, 248 },
317221163Sadrian	{ "option-249", "X",				&dhcp_universe, 249 },
318221163Sadrian	{ "option-250", "X",				&dhcp_universe, 250 },
319221163Sadrian	{ "option-251", "X",				&dhcp_universe, 251 },
320221163Sadrian	{ "option-252", "X",				&dhcp_universe, 252 },
321221163Sadrian	{ "option-253", "X",				&dhcp_universe, 253 },
322221163Sadrian	{ "option-254", "X",				&dhcp_universe, 254 },
323221163Sadrian	{ "option-end", "e",				&dhcp_universe, 255 },
324221163Sadrian};
325221163Sadrian
326221163Sadrian/*
327221163Sadrian * Default dhcp option priority list (this is ad hoc and should not be
328221163Sadrian * mistaken for a carefully crafted and optimized list).
329221163Sadrian */
330221163Sadrianunsigned char dhcp_option_default_priority_list[] = {
331221163Sadrian	DHO_DHCP_REQUESTED_ADDRESS,
332221163Sadrian	DHO_DHCP_OPTION_OVERLOAD,
333221163Sadrian	DHO_DHCP_MAX_MESSAGE_SIZE,
334221163Sadrian	DHO_DHCP_RENEWAL_TIME,
335221163Sadrian	DHO_DHCP_REBINDING_TIME,
336221163Sadrian	DHO_DHCP_CLASS_IDENTIFIER,
337221163Sadrian	DHO_DHCP_CLIENT_IDENTIFIER,
338221163Sadrian	DHO_SUBNET_MASK,
339221163Sadrian	DHO_TIME_OFFSET,
340221163Sadrian	DHO_CLASSLESS_ROUTES,
341221163Sadrian	DHO_ROUTERS,
342221163Sadrian	DHO_TIME_SERVERS,
343221163Sadrian	DHO_NAME_SERVERS,
344221163Sadrian	DHO_DOMAIN_NAME_SERVERS,
345221163Sadrian	DHO_HOST_NAME,
346221163Sadrian	DHO_LOG_SERVERS,
347221163Sadrian	DHO_COOKIE_SERVERS,
348221163Sadrian	DHO_LPR_SERVERS,
349221163Sadrian	DHO_IMPRESS_SERVERS,
350221163Sadrian	DHO_RESOURCE_LOCATION_SERVERS,
351221163Sadrian	DHO_HOST_NAME,
352221163Sadrian	DHO_BOOT_SIZE,
353221163Sadrian	DHO_MERIT_DUMP,
354221163Sadrian	DHO_DOMAIN_NAME,
355221163Sadrian	DHO_SWAP_SERVER,
356221163Sadrian	DHO_ROOT_PATH,
357221163Sadrian	DHO_EXTENSIONS_PATH,
358221163Sadrian	DHO_IP_FORWARDING,
359221163Sadrian	DHO_NON_LOCAL_SOURCE_ROUTING,
360221163Sadrian	DHO_POLICY_FILTER,
361221163Sadrian	DHO_MAX_DGRAM_REASSEMBLY,
362221163Sadrian	DHO_DEFAULT_IP_TTL,
363221163Sadrian	DHO_PATH_MTU_AGING_TIMEOUT,
364221163Sadrian	DHO_PATH_MTU_PLATEAU_TABLE,
365221163Sadrian	DHO_INTERFACE_MTU,
366221163Sadrian	DHO_ALL_SUBNETS_LOCAL,
367221163Sadrian	DHO_BROADCAST_ADDRESS,
368221163Sadrian	DHO_PERFORM_MASK_DISCOVERY,
369221163Sadrian	DHO_MASK_SUPPLIER,
370221163Sadrian	DHO_ROUTER_DISCOVERY,
371221163Sadrian	DHO_ROUTER_SOLICITATION_ADDRESS,
372221163Sadrian	DHO_STATIC_ROUTES,
373221163Sadrian	DHO_TRAILER_ENCAPSULATION,
374221163Sadrian	DHO_ARP_CACHE_TIMEOUT,
375221163Sadrian	DHO_IEEE802_3_ENCAPSULATION,
376221163Sadrian	DHO_DEFAULT_TCP_TTL,
377221163Sadrian	DHO_TCP_KEEPALIVE_INTERVAL,
378221163Sadrian	DHO_TCP_KEEPALIVE_GARBAGE,
379221163Sadrian	DHO_NIS_DOMAIN,
380221163Sadrian	DHO_NIS_SERVERS,
381221163Sadrian	DHO_NTP_SERVERS,
382221163Sadrian	DHO_VENDOR_ENCAPSULATED_OPTIONS,
383221163Sadrian	DHO_NETBIOS_NAME_SERVERS,
384221163Sadrian	DHO_NETBIOS_DD_SERVER,
385221163Sadrian	DHO_NETBIOS_NODE_TYPE,
386221163Sadrian	DHO_NETBIOS_SCOPE,
387221163Sadrian	DHO_FONT_SERVERS,
388221163Sadrian	DHO_X_DISPLAY_MANAGER,
389221163Sadrian	DHO_DHCP_PARAMETER_REQUEST_LIST,
390221163Sadrian	DHO_NISPLUS_DOMAIN,
391221163Sadrian	DHO_NISPLUS_SERVERS,
392221163Sadrian	DHO_TFTP_SERVER_NAME,
393221163Sadrian	DHO_BOOTFILE_NAME,
394221163Sadrian	DHO_MOBILE_IP_HOME_AGENT,
395221163Sadrian	DHO_SMTP_SERVER,
396221163Sadrian	DHO_POP_SERVER,
397221163Sadrian	DHO_NNTP_SERVER,
398221163Sadrian	DHO_WWW_SERVER,
399221163Sadrian	DHO_FINGER_SERVER,
400221163Sadrian	DHO_IRC_SERVER,
401221163Sadrian	DHO_STREETTALK_SERVER,
402221163Sadrian	DHO_STREETTALK_DA_SERVER,
403221163Sadrian	DHO_DOMAIN_SEARCH,
404221163Sadrian
405221163Sadrian	/* Presently-undefined options... */
406221163Sadrian	62, 63, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
407221163Sadrian	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
408221163Sadrian	106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117,
409221163Sadrian	118,      120, 122, 123, 124, 125, 126, 127, 128, 129, 130,
410221163Sadrian	131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
411221163Sadrian	143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
412221163Sadrian	155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
413221163Sadrian	167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
414221163Sadrian	179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
415221163Sadrian	191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
416221163Sadrian	203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
417221163Sadrian	215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
418221163Sadrian	227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
419221163Sadrian	239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
420221163Sadrian	251, 252, 253, 254,
421221163Sadrian};
422221163Sadrian
423221163Sadrianint sizeof_dhcp_option_default_priority_list =
424221163Sadrian	sizeof(dhcp_option_default_priority_list);
425221163Sadrian
426221163Sadrianstruct hash_table universe_hash;
427221163Sadrian
428221163Sadrianvoid
429221163Sadrianinitialize_universes(void)
430221163Sadrian{
431221163Sadrian	int i;
432221163Sadrian
433221163Sadrian	dhcp_universe.name = "dhcp";
434221163Sadrian	dhcp_universe.hash = new_hash();
435221163Sadrian	if (!dhcp_universe.hash)
436221163Sadrian		error("Can't allocate dhcp option hash table.");
437221163Sadrian	for (i = 0; i < 256; i++) {
438221163Sadrian		dhcp_universe.options[i] = &dhcp_options[i];
439221163Sadrian		add_hash(dhcp_universe.hash,
440221163Sadrian		    (unsigned char *)dhcp_options[i].name, 0,
441221163Sadrian		    (unsigned char *)&dhcp_options[i]);
442221163Sadrian	}
443221163Sadrian	universe_hash.hash_count = DEFAULT_HASH_SIZE;
444221163Sadrian	add_hash(&universe_hash,
445221163Sadrian	    (unsigned char *)dhcp_universe.name, 0,
446221163Sadrian	    (unsigned char *)&dhcp_universe);
447221163Sadrian}
448221163Sadrian