xref: /openbsd/usr.sbin/dhcpd/tables.c (revision 89b82454)
1*89b82454Sflorian /*	$OpenBSD: tables.c,v 1.15 2023/11/22 18:06:44 florian Exp $	*/
2e853bc5dShenning 
3c824f21bShenning /* Tables of information... */
4e853bc5dShenning 
5e853bc5dShenning /*
6e853bc5dShenning  * Copyright (c) 1995, 1996 The Internet Software Consortium.
7e853bc5dShenning  * All rights reserved.
8e853bc5dShenning  *
9e853bc5dShenning  * Redistribution and use in source and binary forms, with or without
10e853bc5dShenning  * modification, are permitted provided that the following conditions
11e853bc5dShenning  * are met:
12e853bc5dShenning  *
13e853bc5dShenning  * 1. Redistributions of source code must retain the above copyright
14e853bc5dShenning  *    notice, this list of conditions and the following disclaimer.
15e853bc5dShenning  * 2. Redistributions in binary form must reproduce the above copyright
16e853bc5dShenning  *    notice, this list of conditions and the following disclaimer in the
17e853bc5dShenning  *    documentation and/or other materials provided with the distribution.
18e853bc5dShenning  * 3. Neither the name of The Internet Software Consortium nor the names
19e853bc5dShenning  *    of its contributors may be used to endorse or promote products derived
20e853bc5dShenning  *    from this software without specific prior written permission.
21e853bc5dShenning  *
22e853bc5dShenning  * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
23e853bc5dShenning  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24e853bc5dShenning  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25e853bc5dShenning  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26e853bc5dShenning  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
27e853bc5dShenning  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28e853bc5dShenning  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29e853bc5dShenning  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30e853bc5dShenning  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31e853bc5dShenning  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32e853bc5dShenning  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33e853bc5dShenning  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34e853bc5dShenning  * SUCH DAMAGE.
35e853bc5dShenning  *
36e853bc5dShenning  * This software has been written for the Internet Software Consortium
37e853bc5dShenning  * by Ted Lemon <mellon@fugue.com> in cooperation with Vixie
38e853bc5dShenning  * Enterprises.  To learn more about the Internet Software Consortium,
39e853bc5dShenning  * see ``http://www.vix.com/isc''.  To learn more about Vixie
40e853bc5dShenning  * Enterprises, see ``http://www.vix.com''.
41e853bc5dShenning  */
42e853bc5dShenning 
43837cddffSkrw #include <sys/types.h>
44837cddffSkrw #include <sys/socket.h>
45837cddffSkrw 
46837cddffSkrw #include <net/if.h>
47837cddffSkrw 
48837cddffSkrw #include <netinet/in.h>
49837cddffSkrw 
50837cddffSkrw #include <stdio.h>
51837cddffSkrw 
52837cddffSkrw #include "dhcp.h"
53837cddffSkrw #include "tree.h"
54e853bc5dShenning #include "dhcpd.h"
55c525a185Skrw #include "log.h"
56e853bc5dShenning 
57c824f21bShenning /*
58c824f21bShenning  * DHCP Option names, formats and codes, from RFC1533.
59c824f21bShenning  *
60c824f21bShenning  * Format codes:
61c824f21bShenning  *
62c824f21bShenning  * e - end of data
63c824f21bShenning  * I - IP address
64c824f21bShenning  * l - 32-bit signed integer
65c824f21bShenning  * L - 32-bit unsigned integer
66c824f21bShenning  * s - 16-bit signed integer
67c824f21bShenning  * S - 16-bit unsigned integer
68c824f21bShenning  * b - 8-bit signed integer
69c824f21bShenning  * B - 8-bit unsigned integer
70c824f21bShenning  * t - ASCII text
71c824f21bShenning  * f - flag (true or false)
72c824f21bShenning  * A - array of whatever precedes (e.g., IA means array of IP addresses)
731fef8917Skrw  * X - hex octets
741fef8917Skrw  * D - comma separated list of domain names
75e853bc5dShenning  */
76e853bc5dShenning 
77e853bc5dShenning struct universe dhcp_universe;
78e853bc5dShenning struct option dhcp_options[256] = {
79e853bc5dShenning 	{ "pad", "",					&dhcp_universe, 0 },
80e853bc5dShenning 	{ "subnet-mask", "I",				&dhcp_universe, 1 },
81e853bc5dShenning 	{ "time-offset", "l",				&dhcp_universe, 2 },
82e853bc5dShenning 	{ "routers", "IA",				&dhcp_universe, 3 },
83e853bc5dShenning 	{ "time-servers", "IA",				&dhcp_universe, 4 },
84e853bc5dShenning 	{ "ien116-name-servers", "IA",			&dhcp_universe, 5 },
85e853bc5dShenning 	{ "domain-name-servers", "IA",			&dhcp_universe, 6 },
86e853bc5dShenning 	{ "log-servers", "IA",				&dhcp_universe, 7 },
87e853bc5dShenning 	{ "cookie-servers", "IA",			&dhcp_universe, 8 },
88e853bc5dShenning 	{ "lpr-servers", "IA",				&dhcp_universe, 9 },
89e853bc5dShenning 	{ "impress-servers", "IA",			&dhcp_universe, 10 },
90e853bc5dShenning 	{ "resource-location-servers", "IA",		&dhcp_universe, 11 },
91e853bc5dShenning 	{ "host-name", "X",				&dhcp_universe, 12 },
92e853bc5dShenning 	{ "boot-size", "S",				&dhcp_universe, 13 },
93e853bc5dShenning 	{ "merit-dump", "t",				&dhcp_universe, 14 },
94e853bc5dShenning 	{ "domain-name", "t",				&dhcp_universe, 15 },
95e853bc5dShenning 	{ "swap-server", "I",				&dhcp_universe, 16 },
96e853bc5dShenning 	{ "root-path", "t",				&dhcp_universe, 17 },
97e853bc5dShenning 	{ "extensions-path", "t",			&dhcp_universe, 18 },
98e853bc5dShenning 	{ "ip-forwarding", "f",				&dhcp_universe, 19 },
99e853bc5dShenning 	{ "non-local-source-routing", "f",		&dhcp_universe, 20 },
100e853bc5dShenning 	{ "policy-filter", "IIA",			&dhcp_universe, 21 },
101e853bc5dShenning 	{ "max-dgram-reassembly", "S",			&dhcp_universe, 22 },
102e853bc5dShenning 	{ "default-ip-ttl", "B",			&dhcp_universe, 23 },
103e853bc5dShenning 	{ "path-mtu-aging-timeout", "L",		&dhcp_universe, 24 },
104e853bc5dShenning 	{ "path-mtu-plateau-table", "SA",		&dhcp_universe, 25 },
105e853bc5dShenning 	{ "interface-mtu", "S",				&dhcp_universe, 26 },
106e853bc5dShenning 	{ "all-subnets-local", "f",			&dhcp_universe, 27 },
107e853bc5dShenning 	{ "broadcast-address", "I",			&dhcp_universe, 28 },
108e853bc5dShenning 	{ "perform-mask-discovery", "f",		&dhcp_universe, 29 },
109e853bc5dShenning 	{ "mask-supplier", "f",				&dhcp_universe, 30 },
110e853bc5dShenning 	{ "router-discovery", "f",			&dhcp_universe, 31 },
111e853bc5dShenning 	{ "router-solicitation-address", "I",		&dhcp_universe, 32 },
112e853bc5dShenning 	{ "static-routes", "IIA",			&dhcp_universe, 33 },
113e853bc5dShenning 	{ "trailer-encapsulation", "f",			&dhcp_universe, 34 },
114e853bc5dShenning 	{ "arp-cache-timeout", "L",			&dhcp_universe, 35 },
115e853bc5dShenning 	{ "ieee802-3-encapsulation", "f",		&dhcp_universe, 36 },
116e853bc5dShenning 	{ "default-tcp-ttl", "B",			&dhcp_universe, 37 },
117e853bc5dShenning 	{ "tcp-keepalive-interval", "L",		&dhcp_universe, 38 },
118e853bc5dShenning 	{ "tcp-keepalive-garbage", "f",			&dhcp_universe, 39 },
119e853bc5dShenning 	{ "nis-domain", "t",				&dhcp_universe, 40 },
120e853bc5dShenning 	{ "nis-servers", "IA",				&dhcp_universe, 41 },
121e853bc5dShenning 	{ "ntp-servers", "IA",				&dhcp_universe, 42 },
122e853bc5dShenning 	{ "vendor-encapsulated-options", "X",		&dhcp_universe, 43 },
123e853bc5dShenning 	{ "netbios-name-servers", "IA",			&dhcp_universe, 44 },
124e853bc5dShenning 	{ "netbios-dd-server", "IA",			&dhcp_universe, 45 },
125e853bc5dShenning 	{ "netbios-node-type", "B",			&dhcp_universe, 46 },
126e853bc5dShenning 	{ "netbios-scope", "t",				&dhcp_universe, 47 },
127e853bc5dShenning 	{ "font-servers", "IA",				&dhcp_universe, 48 },
128e853bc5dShenning 	{ "x-display-manager", "IA",			&dhcp_universe, 49 },
129e853bc5dShenning 	{ "dhcp-requested-address", "I",		&dhcp_universe, 50 },
130e853bc5dShenning 	{ "dhcp-lease-time", "L",			&dhcp_universe, 51 },
131e853bc5dShenning 	{ "dhcp-option-overload", "B",			&dhcp_universe, 52 },
132e853bc5dShenning 	{ "dhcp-message-type", "B",			&dhcp_universe, 53 },
133e853bc5dShenning 	{ "dhcp-server-identifier", "I",		&dhcp_universe, 54 },
134e853bc5dShenning 	{ "dhcp-parameter-request-list", "BA",		&dhcp_universe, 55 },
135e853bc5dShenning 	{ "dhcp-message", "t",				&dhcp_universe, 56 },
136e853bc5dShenning 	{ "dhcp-max-message-size", "S",			&dhcp_universe, 57 },
137e853bc5dShenning 	{ "dhcp-renewal-time", "L",			&dhcp_universe, 58 },
138e853bc5dShenning 	{ "dhcp-rebinding-time", "L",			&dhcp_universe, 59 },
139e853bc5dShenning 	{ "dhcp-class-identifier", "t",			&dhcp_universe, 60 },
140e853bc5dShenning 	{ "dhcp-client-identifier", "X",		&dhcp_universe, 61 },
141e853bc5dShenning 	{ "option-62", "X",				&dhcp_universe, 62 },
142e853bc5dShenning 	{ "option-63", "X",				&dhcp_universe, 63 },
143e853bc5dShenning 	{ "nisplus-domain", "t",			&dhcp_universe, 64 },
144e853bc5dShenning 	{ "nisplus-servers", "IA",			&dhcp_universe, 65 },
145e853bc5dShenning 	{ "tftp-server-name", "t",			&dhcp_universe, 66 },
146e853bc5dShenning 	{ "bootfile-name", "t",				&dhcp_universe, 67 },
147e853bc5dShenning 	{ "mobile-ip-home-agent", "IA",			&dhcp_universe, 68 },
148e853bc5dShenning 	{ "smtp-server", "IA",				&dhcp_universe, 69 },
149e853bc5dShenning 	{ "pop-server", "IA",				&dhcp_universe, 70 },
150e853bc5dShenning 	{ "nntp-server", "IA",				&dhcp_universe, 71 },
151e853bc5dShenning 	{ "www-server", "IA",				&dhcp_universe, 72 },
152e853bc5dShenning 	{ "finger-server", "IA",			&dhcp_universe, 73 },
153e853bc5dShenning 	{ "irc-server", "IA",				&dhcp_universe, 74 },
154e853bc5dShenning 	{ "streettalk-server", "IA",			&dhcp_universe, 75 },
155e853bc5dShenning 	{ "streettalk-directory-assistance-server", "IA", &dhcp_universe, 76 },
156e853bc5dShenning 	{ "user-class", "t",				&dhcp_universe, 77 },
157e853bc5dShenning 	{ "option-78", "X",				&dhcp_universe, 78 },
158e853bc5dShenning 	{ "option-79", "X",				&dhcp_universe, 79 },
159e853bc5dShenning 	{ "option-80", "X",				&dhcp_universe, 80 },
160e853bc5dShenning 	{ "option-81", "X",				&dhcp_universe, 81 },
1615b44f46dSreyk 	{ "relay-agent-information", "X",		&dhcp_universe, 82 },
162e853bc5dShenning 	{ "option-83", "X",				&dhcp_universe, 83 },
163e853bc5dShenning 	{ "option-84", "X",				&dhcp_universe, 84 },
164e853bc5dShenning 	{ "nds-servers", "IA",				&dhcp_universe, 85 },
165e853bc5dShenning 	{ "nds-tree-name", "X",				&dhcp_universe, 86 },
166e853bc5dShenning 	{ "nds-context", "X",				&dhcp_universe, 87 },
167e853bc5dShenning 	{ "option-88", "X",				&dhcp_universe, 88 },
168e853bc5dShenning 	{ "option-89", "X",				&dhcp_universe, 89 },
169e853bc5dShenning 	{ "option-90", "X",				&dhcp_universe, 90 },
170e853bc5dShenning 	{ "option-91", "X",				&dhcp_universe, 91 },
171e853bc5dShenning 	{ "option-92", "X",				&dhcp_universe, 92 },
172e853bc5dShenning 	{ "option-93", "X",				&dhcp_universe, 93 },
173e853bc5dShenning 	{ "option-94", "X",				&dhcp_universe, 94 },
174e853bc5dShenning 	{ "option-95", "X",				&dhcp_universe, 95 },
175e853bc5dShenning 	{ "option-96", "X",				&dhcp_universe, 96 },
176e853bc5dShenning 	{ "option-97", "X",				&dhcp_universe, 97 },
177e853bc5dShenning 	{ "option-98", "X",				&dhcp_universe, 98 },
178e853bc5dShenning 	{ "option-99", "X",				&dhcp_universe, 99 },
179e853bc5dShenning 	{ "option-100", "X",				&dhcp_universe, 100 },
180e853bc5dShenning 	{ "option-101", "X",				&dhcp_universe, 101 },
181e853bc5dShenning 	{ "option-102", "X",				&dhcp_universe, 102 },
182e853bc5dShenning 	{ "option-103", "X",				&dhcp_universe, 103 },
183e853bc5dShenning 	{ "option-104", "X",				&dhcp_universe, 104 },
184e853bc5dShenning 	{ "option-105", "X",				&dhcp_universe, 105 },
185e853bc5dShenning 	{ "option-106", "X",				&dhcp_universe, 106 },
186e853bc5dShenning 	{ "option-107", "X",				&dhcp_universe, 107 },
187*89b82454Sflorian 	{ "ipv6-only-preferred", "L",			&dhcp_universe, 108 },
188e853bc5dShenning 	{ "option-109", "X",				&dhcp_universe, 109 },
189e853bc5dShenning 	{ "option-110", "X",				&dhcp_universe, 110 },
190e853bc5dShenning 	{ "option-111", "X",				&dhcp_universe, 111 },
191e853bc5dShenning 	{ "option-112", "X",				&dhcp_universe, 112 },
192e853bc5dShenning 	{ "option-113", "X",				&dhcp_universe, 113 },
193e853bc5dShenning 	{ "option-114", "X",				&dhcp_universe, 114 },
194e853bc5dShenning 	{ "option-115", "X",				&dhcp_universe, 115 },
195e853bc5dShenning 	{ "option-116", "X",				&dhcp_universe, 116 },
196e853bc5dShenning 	{ "option-117", "X",				&dhcp_universe, 117 },
197e853bc5dShenning 	{ "option-118", "X",				&dhcp_universe, 118 },
1981fef8917Skrw 	{ "domain-search", "D",				&dhcp_universe, 119 },
199e853bc5dShenning 	{ "option-120", "X",				&dhcp_universe, 120 },
200171f404eSkrw 	{ "classless-static-routes", "CIA",		&dhcp_universe, 121 },
201e853bc5dShenning 	{ "option-122", "X",				&dhcp_universe, 122 },
202e853bc5dShenning 	{ "option-123", "X",				&dhcp_universe, 123 },
203e853bc5dShenning 	{ "option-124", "X",				&dhcp_universe, 124 },
204e853bc5dShenning 	{ "option-125", "X",				&dhcp_universe, 125 },
205e853bc5dShenning 	{ "option-126", "X",				&dhcp_universe, 126 },
206e853bc5dShenning 	{ "option-127", "X",				&dhcp_universe, 127 },
207e853bc5dShenning 	{ "option-128", "X",				&dhcp_universe, 128 },
208e853bc5dShenning 	{ "option-129", "X",				&dhcp_universe, 129 },
209e853bc5dShenning 	{ "option-130", "X",				&dhcp_universe, 130 },
210e853bc5dShenning 	{ "option-131", "X",				&dhcp_universe, 131 },
211e853bc5dShenning 	{ "option-132", "X",				&dhcp_universe, 132 },
212e853bc5dShenning 	{ "option-133", "X",				&dhcp_universe, 133 },
213e853bc5dShenning 	{ "option-134", "X",				&dhcp_universe, 134 },
214e853bc5dShenning 	{ "option-135", "X",				&dhcp_universe, 135 },
215e853bc5dShenning 	{ "option-136", "X",				&dhcp_universe, 136 },
216e853bc5dShenning 	{ "option-137", "X",				&dhcp_universe, 137 },
217e853bc5dShenning 	{ "option-138", "X",				&dhcp_universe, 138 },
218e853bc5dShenning 	{ "option-139", "X",				&dhcp_universe, 139 },
219e853bc5dShenning 	{ "option-140", "X",				&dhcp_universe, 140 },
220e853bc5dShenning 	{ "option-141", "X",				&dhcp_universe, 141 },
221e853bc5dShenning 	{ "option-142", "X",				&dhcp_universe, 142 },
222e853bc5dShenning 	{ "option-143", "X",				&dhcp_universe, 143 },
22354fd98c3Sdlg 	{ "tftp-config-file", "t",			&dhcp_universe, 144 },
224e853bc5dShenning 	{ "option-145", "X",				&dhcp_universe, 145 },
225e853bc5dShenning 	{ "option-146", "X",				&dhcp_universe, 146 },
226e853bc5dShenning 	{ "option-147", "X",				&dhcp_universe, 147 },
227e853bc5dShenning 	{ "option-148", "X",				&dhcp_universe, 148 },
228e853bc5dShenning 	{ "option-149", "X",				&dhcp_universe, 149 },
229b506ca88Ssthen 	{ "voip-configuration-server", "IA",		&dhcp_universe, 150 },
230e853bc5dShenning 	{ "option-151", "X",				&dhcp_universe, 151 },
231e853bc5dShenning 	{ "option-152", "X",				&dhcp_universe, 152 },
232e853bc5dShenning 	{ "option-153", "X",				&dhcp_universe, 153 },
233e853bc5dShenning 	{ "option-154", "X",				&dhcp_universe, 154 },
234e853bc5dShenning 	{ "option-155", "X",				&dhcp_universe, 155 },
235e853bc5dShenning 	{ "option-156", "X",				&dhcp_universe, 156 },
236e853bc5dShenning 	{ "option-157", "X",				&dhcp_universe, 157 },
237e853bc5dShenning 	{ "option-158", "X",				&dhcp_universe, 158 },
238e853bc5dShenning 	{ "option-159", "X",				&dhcp_universe, 159 },
239e853bc5dShenning 	{ "option-160", "X",				&dhcp_universe, 160 },
240e853bc5dShenning 	{ "option-161", "X",				&dhcp_universe, 161 },
241e853bc5dShenning 	{ "option-162", "X",				&dhcp_universe, 162 },
242e853bc5dShenning 	{ "option-163", "X",				&dhcp_universe, 163 },
243e853bc5dShenning 	{ "option-164", "X",				&dhcp_universe, 164 },
244e853bc5dShenning 	{ "option-165", "X",				&dhcp_universe, 165 },
245e853bc5dShenning 	{ "option-166", "X",				&dhcp_universe, 166 },
246e853bc5dShenning 	{ "option-167", "X",				&dhcp_universe, 167 },
247e853bc5dShenning 	{ "option-168", "X",				&dhcp_universe, 168 },
248e853bc5dShenning 	{ "option-169", "X",				&dhcp_universe, 169 },
249e853bc5dShenning 	{ "option-170", "X",				&dhcp_universe, 170 },
250e853bc5dShenning 	{ "option-171", "X",				&dhcp_universe, 171 },
251e853bc5dShenning 	{ "option-172", "X",				&dhcp_universe, 172 },
252e853bc5dShenning 	{ "option-173", "X",				&dhcp_universe, 173 },
253e853bc5dShenning 	{ "option-174", "X",				&dhcp_universe, 174 },
254e853bc5dShenning 	{ "option-175", "X",				&dhcp_universe, 175 },
255e853bc5dShenning 	{ "option-176", "X",				&dhcp_universe, 176 },
256e853bc5dShenning 	{ "option-177", "X",				&dhcp_universe, 177 },
257e853bc5dShenning 	{ "option-178", "X",				&dhcp_universe, 178 },
258e853bc5dShenning 	{ "option-179", "X",				&dhcp_universe, 179 },
259e853bc5dShenning 	{ "option-180", "X",				&dhcp_universe, 180 },
260e853bc5dShenning 	{ "option-181", "X",				&dhcp_universe, 181 },
261e853bc5dShenning 	{ "option-182", "X",				&dhcp_universe, 182 },
262e853bc5dShenning 	{ "option-183", "X",				&dhcp_universe, 183 },
263e853bc5dShenning 	{ "option-184", "X",				&dhcp_universe, 184 },
264e853bc5dShenning 	{ "option-185", "X",				&dhcp_universe, 185 },
265e853bc5dShenning 	{ "option-186", "X",				&dhcp_universe, 186 },
266e853bc5dShenning 	{ "option-187", "X",				&dhcp_universe, 187 },
267e853bc5dShenning 	{ "option-188", "X",				&dhcp_universe, 188 },
268e853bc5dShenning 	{ "option-189", "X",				&dhcp_universe, 189 },
269e853bc5dShenning 	{ "option-190", "X",				&dhcp_universe, 190 },
270e853bc5dShenning 	{ "option-191", "X",				&dhcp_universe, 191 },
271e853bc5dShenning 	{ "option-192", "X",				&dhcp_universe, 192 },
272e853bc5dShenning 	{ "option-193", "X",				&dhcp_universe, 193 },
273e853bc5dShenning 	{ "option-194", "X",				&dhcp_universe, 194 },
274e853bc5dShenning 	{ "option-195", "X",				&dhcp_universe, 195 },
275e853bc5dShenning 	{ "option-196", "X",				&dhcp_universe, 196 },
276e853bc5dShenning 	{ "option-197", "X",				&dhcp_universe, 197 },
277e853bc5dShenning 	{ "option-198", "X",				&dhcp_universe, 198 },
278e853bc5dShenning 	{ "option-199", "X",				&dhcp_universe, 199 },
279e853bc5dShenning 	{ "option-200", "X",				&dhcp_universe, 200 },
280e853bc5dShenning 	{ "option-201", "X",				&dhcp_universe, 201 },
281e853bc5dShenning 	{ "option-202", "X",				&dhcp_universe, 202 },
282e853bc5dShenning 	{ "option-203", "X",				&dhcp_universe, 203 },
283e853bc5dShenning 	{ "option-204", "X",				&dhcp_universe, 204 },
284e853bc5dShenning 	{ "option-205", "X",				&dhcp_universe, 205 },
285e853bc5dShenning 	{ "option-206", "X",				&dhcp_universe, 206 },
286e853bc5dShenning 	{ "option-207", "X",				&dhcp_universe, 207 },
287e853bc5dShenning 	{ "option-208", "X",				&dhcp_universe, 208 },
288e853bc5dShenning 	{ "option-209", "X",				&dhcp_universe, 209 },
289e853bc5dShenning 	{ "option-210", "X",				&dhcp_universe, 210 },
290e853bc5dShenning 	{ "option-211", "X",				&dhcp_universe, 211 },
291e853bc5dShenning 	{ "option-212", "X",				&dhcp_universe, 212 },
292e853bc5dShenning 	{ "option-213", "X",				&dhcp_universe, 213 },
293e853bc5dShenning 	{ "option-214", "X",				&dhcp_universe, 214 },
294e853bc5dShenning 	{ "option-215", "X",				&dhcp_universe, 215 },
295e853bc5dShenning 	{ "option-216", "X",				&dhcp_universe, 216 },
296e853bc5dShenning 	{ "option-217", "X",				&dhcp_universe, 217 },
297e853bc5dShenning 	{ "option-218", "X",				&dhcp_universe, 218 },
298e853bc5dShenning 	{ "option-219", "X",				&dhcp_universe, 219 },
299e853bc5dShenning 	{ "option-220", "X",				&dhcp_universe, 220 },
300e853bc5dShenning 	{ "option-221", "X",				&dhcp_universe, 221 },
301e853bc5dShenning 	{ "option-222", "X",				&dhcp_universe, 222 },
302e853bc5dShenning 	{ "option-223", "X",				&dhcp_universe, 223 },
303e853bc5dShenning 	{ "option-224", "X",				&dhcp_universe, 224 },
304e853bc5dShenning 	{ "option-225", "X",				&dhcp_universe, 225 },
305e853bc5dShenning 	{ "option-226", "X",				&dhcp_universe, 226 },
306e853bc5dShenning 	{ "option-227", "X",				&dhcp_universe, 227 },
307e853bc5dShenning 	{ "option-228", "X",				&dhcp_universe, 228 },
308e853bc5dShenning 	{ "option-229", "X",				&dhcp_universe, 229 },
309e853bc5dShenning 	{ "option-230", "X",				&dhcp_universe, 230 },
310e853bc5dShenning 	{ "option-231", "X",				&dhcp_universe, 231 },
311e853bc5dShenning 	{ "option-232", "X",				&dhcp_universe, 232 },
312e853bc5dShenning 	{ "option-233", "X",				&dhcp_universe, 233 },
313e853bc5dShenning 	{ "option-234", "X",				&dhcp_universe, 234 },
314e853bc5dShenning 	{ "option-235", "X",				&dhcp_universe, 235 },
315e853bc5dShenning 	{ "option-236", "X",				&dhcp_universe, 236 },
316e853bc5dShenning 	{ "option-237", "X",				&dhcp_universe, 237 },
317e853bc5dShenning 	{ "option-238", "X",				&dhcp_universe, 238 },
318e853bc5dShenning 	{ "option-239", "X",				&dhcp_universe, 239 },
319e853bc5dShenning 	{ "option-240", "X",				&dhcp_universe, 240 },
320e853bc5dShenning 	{ "option-241", "X",				&dhcp_universe, 241 },
321e853bc5dShenning 	{ "option-242", "X",				&dhcp_universe, 242 },
322e853bc5dShenning 	{ "option-243", "X",				&dhcp_universe, 243 },
323e853bc5dShenning 	{ "option-244", "X",				&dhcp_universe, 244 },
324e853bc5dShenning 	{ "option-245", "X",				&dhcp_universe, 245 },
325e853bc5dShenning 	{ "option-246", "X",				&dhcp_universe, 246 },
326e853bc5dShenning 	{ "option-247", "X",				&dhcp_universe, 247 },
327e853bc5dShenning 	{ "option-248", "X",				&dhcp_universe, 248 },
328171f404eSkrw 	{ "classless-ms-static-routes", "CIA",		&dhcp_universe, 249 },
329e853bc5dShenning 	{ "option-250", "X",				&dhcp_universe, 250 },
330e853bc5dShenning 	{ "option-251", "X",				&dhcp_universe, 251 },
331def86216Sdlg 	{ "autoproxy-script", "t",			&dhcp_universe, 252 },
332e853bc5dShenning 	{ "option-253", "X",				&dhcp_universe, 253 },
333e853bc5dShenning 	{ "option-254", "X",				&dhcp_universe, 254 },
334e853bc5dShenning 	{ "option-end", "e",				&dhcp_universe, 255 },
335e853bc5dShenning };
336e853bc5dShenning 
337c824f21bShenning /*
338c824f21bShenning  * Default dhcp option priority list (this is ad hoc and should not be
339c824f21bShenning  * mistaken for a carefully crafted and optimized list).
340c824f21bShenning  */
341cd4ecb23Skrw 
342cd4ecb23Skrw unsigned char dhcp_option_default_priority_list[256] = {
343cd4ecb23Skrw 	DHO_DHCP_MESSAGE_TYPE,		/* Mandatory */
344cd4ecb23Skrw 	DHO_DHCP_SERVER_IDENTIFIER,	/* Mandatory */
345cd4ecb23Skrw 	DHO_DHCP_LEASE_TIME,		/* Mandatory */
346cd4ecb23Skrw 	DHO_DHCP_MESSAGE,		/* Mandatory */
347cd4ecb23Skrw 	DHO_END,			/* End of mandatory options. */
348e853bc5dShenning 	DHO_DHCP_REQUESTED_ADDRESS,
349e853bc5dShenning 	DHO_DHCP_OPTION_OVERLOAD,
350e853bc5dShenning 	DHO_DHCP_MAX_MESSAGE_SIZE,
351e853bc5dShenning 	DHO_DHCP_RENEWAL_TIME,
352e853bc5dShenning 	DHO_DHCP_REBINDING_TIME,
353e853bc5dShenning 	DHO_DHCP_CLASS_IDENTIFIER,
354e853bc5dShenning 	DHO_DHCP_CLIENT_IDENTIFIER,
355e853bc5dShenning 	DHO_SUBNET_MASK,
356e853bc5dShenning 	DHO_TIME_OFFSET,
3573f461432Skrw 	DHO_CLASSLESS_STATIC_ROUTES,	/* MUST be before DHO_ROUTERS!	*/
3583f461432Skrw 	DHO_CLASSLESS_MS_STATIC_ROUTES,	/* DITTO!			*/
359e853bc5dShenning 	DHO_ROUTERS,
360e853bc5dShenning 	DHO_TIME_SERVERS,
361e853bc5dShenning 	DHO_NAME_SERVERS,
362e853bc5dShenning 	DHO_DOMAIN_NAME_SERVERS,
363e853bc5dShenning 	DHO_HOST_NAME,
364e853bc5dShenning 	DHO_LOG_SERVERS,
365e853bc5dShenning 	DHO_COOKIE_SERVERS,
366e853bc5dShenning 	DHO_LPR_SERVERS,
367e853bc5dShenning 	DHO_IMPRESS_SERVERS,
368e853bc5dShenning 	DHO_RESOURCE_LOCATION_SERVERS,
369e853bc5dShenning 	DHO_BOOT_SIZE,
370e853bc5dShenning 	DHO_MERIT_DUMP,
371e853bc5dShenning 	DHO_DOMAIN_NAME,
3721fef8917Skrw 	DHO_DOMAIN_SEARCH,
373e853bc5dShenning 	DHO_SWAP_SERVER,
374e853bc5dShenning 	DHO_ROOT_PATH,
375e853bc5dShenning 	DHO_EXTENSIONS_PATH,
376e853bc5dShenning 	DHO_IP_FORWARDING,
377e853bc5dShenning 	DHO_NON_LOCAL_SOURCE_ROUTING,
378e853bc5dShenning 	DHO_POLICY_FILTER,
379e853bc5dShenning 	DHO_MAX_DGRAM_REASSEMBLY,
380e853bc5dShenning 	DHO_DEFAULT_IP_TTL,
381e853bc5dShenning 	DHO_PATH_MTU_AGING_TIMEOUT,
382e853bc5dShenning 	DHO_PATH_MTU_PLATEAU_TABLE,
383e853bc5dShenning 	DHO_INTERFACE_MTU,
384e853bc5dShenning 	DHO_ALL_SUBNETS_LOCAL,
385e853bc5dShenning 	DHO_BROADCAST_ADDRESS,
386e853bc5dShenning 	DHO_PERFORM_MASK_DISCOVERY,
387e853bc5dShenning 	DHO_MASK_SUPPLIER,
388e853bc5dShenning 	DHO_ROUTER_DISCOVERY,
389e853bc5dShenning 	DHO_ROUTER_SOLICITATION_ADDRESS,
390e853bc5dShenning 	DHO_STATIC_ROUTES,
391e853bc5dShenning 	DHO_TRAILER_ENCAPSULATION,
392e853bc5dShenning 	DHO_ARP_CACHE_TIMEOUT,
393e853bc5dShenning 	DHO_IEEE802_3_ENCAPSULATION,
394e853bc5dShenning 	DHO_DEFAULT_TCP_TTL,
395e853bc5dShenning 	DHO_TCP_KEEPALIVE_INTERVAL,
396e853bc5dShenning 	DHO_TCP_KEEPALIVE_GARBAGE,
397e853bc5dShenning 	DHO_NIS_DOMAIN,
398e853bc5dShenning 	DHO_NIS_SERVERS,
399e853bc5dShenning 	DHO_NTP_SERVERS,
400e853bc5dShenning 	DHO_VENDOR_ENCAPSULATED_OPTIONS,
401e853bc5dShenning 	DHO_NETBIOS_NAME_SERVERS,
402e853bc5dShenning 	DHO_NETBIOS_DD_SERVER,
403e853bc5dShenning 	DHO_NETBIOS_NODE_TYPE,
404e853bc5dShenning 	DHO_NETBIOS_SCOPE,
405e853bc5dShenning 	DHO_FONT_SERVERS,
406e853bc5dShenning 	DHO_X_DISPLAY_MANAGER,
407e853bc5dShenning 	DHO_DHCP_PARAMETER_REQUEST_LIST,
408ba64cb98Skrw 	DHO_DHCP_USER_CLASS_ID,
4095b44f46dSreyk 	DHO_RELAY_AGENT_INFORMATION,	/* Should be the last option. */
410cd4ecb23Skrw 	DHO_PAD,
411e853bc5dShenning 
412e853bc5dShenning 	/* Presently-undefined options... */
413ba64cb98Skrw 	           62,  63,  64,  65,  66,  67,  68,  69,
414ba64cb98Skrw 	 70,  71,  72,  73,  74,  75,  76,       78,  79,
4155b44f46dSreyk 	 80,  81,       83,  84,  85,  86,  87,  88,  89,
416ba64cb98Skrw 	 90,  91,  92,  93,  94,  95,  96,  97,  98,  99,
417ba64cb98Skrw 	100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
4181fef8917Skrw 	110, 111, 112, 113, 114, 115, 116, 117, 118,
4193f461432Skrw 	120,      122, 123, 124, 125, 126, 127, 128, 129,
420ba64cb98Skrw 	130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
421ba64cb98Skrw 	140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
422ba64cb98Skrw 	150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
423ba64cb98Skrw 	160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
424ba64cb98Skrw 	170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
425ba64cb98Skrw 	180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
426ba64cb98Skrw 	190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
427ba64cb98Skrw 	200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
428ba64cb98Skrw 	210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
429ba64cb98Skrw 	220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
430ba64cb98Skrw 	230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
4313f461432Skrw 	240, 241, 242, 243, 244, 245, 246, 247, 248,
432ba64cb98Skrw 	250, 251, 252, 253, 254
433e853bc5dShenning };
434e853bc5dShenning 
435e853bc5dShenning char *hardware_types[] = {
436e853bc5dShenning 	"unknown-0",
437e853bc5dShenning 	"ethernet",
438e853bc5dShenning 	"unknown-2",
439e853bc5dShenning 	"unknown-3",
440e853bc5dShenning 	"unknown-4",
441e853bc5dShenning 	"unknown-5",
442e853bc5dShenning 	"token-ring",
443e853bc5dShenning 	"unknown-7",
444e853bc5dShenning 	"fddi",
445e853bc5dShenning 	"unknown-9",
446e853bc5dShenning 	"unknown-10",
447e853bc5dShenning 	"unknown-11",
448e853bc5dShenning 	"unknown-12",
449e853bc5dShenning 	"unknown-13",
450e853bc5dShenning 	"unknown-14",
451e853bc5dShenning 	"unknown-15",
452e853bc5dShenning 	"unknown-16",
453e853bc5dShenning 	"unknown-17",
454e853bc5dShenning 	"unknown-18",
455e853bc5dShenning 	"unknown-19",
456e853bc5dShenning 	"unknown-20",
457e853bc5dShenning 	"unknown-21",
458e853bc5dShenning 	"unknown-22",
459e853bc5dShenning 	"unknown-23",
460e853bc5dShenning 	"unknown-24",
461e853bc5dShenning 	"unknown-25",
462e853bc5dShenning 	"unknown-26",
463e853bc5dShenning 	"unknown-27",
464e853bc5dShenning 	"unknown-28",
465e853bc5dShenning 	"unknown-29",
466e853bc5dShenning 	"unknown-30",
4675b44f46dSreyk 	"ipsec-tunnel",
468e853bc5dShenning 	"unknown-32",
469e853bc5dShenning 	"unknown-33",
470e853bc5dShenning 	"unknown-34",
471e853bc5dShenning 	"unknown-35",
472e853bc5dShenning 	"unknown-36",
473e853bc5dShenning 	"unknown-37",
474e853bc5dShenning 	"unknown-38",
475e853bc5dShenning 	"unknown-39",
476e853bc5dShenning 	"unknown-40",
477e853bc5dShenning 	"unknown-41",
478e853bc5dShenning 	"unknown-42",
479e853bc5dShenning 	"unknown-43",
480e853bc5dShenning 	"unknown-44",
481e853bc5dShenning 	"unknown-45",
482e853bc5dShenning 	"unknown-46",
483e853bc5dShenning 	"unknown-47",
484e853bc5dShenning 	"unknown-48",
485e853bc5dShenning 	"unknown-49",
486e853bc5dShenning 	"unknown-50",
487e853bc5dShenning 	"unknown-51",
488e853bc5dShenning 	"unknown-52",
489e853bc5dShenning 	"unknown-53",
490e853bc5dShenning 	"unknown-54",
491e853bc5dShenning 	"unknown-55",
492e853bc5dShenning 	"unknown-56",
493e853bc5dShenning 	"unknown-57",
494e853bc5dShenning 	"unknown-58",
495e853bc5dShenning 	"unknown-59",
496e853bc5dShenning 	"unknown-60",
497e853bc5dShenning 	"unknown-61",
498e853bc5dShenning 	"unknown-62",
499e853bc5dShenning 	"unknown-63",
500e853bc5dShenning 	"unknown-64",
501e853bc5dShenning 	"unknown-65",
502e853bc5dShenning 	"unknown-66",
503e853bc5dShenning 	"unknown-67",
504e853bc5dShenning 	"unknown-68",
505e853bc5dShenning 	"unknown-69",
506e853bc5dShenning 	"unknown-70",
507e853bc5dShenning 	"unknown-71",
508e853bc5dShenning 	"unknown-72",
509e853bc5dShenning 	"unknown-73",
510e853bc5dShenning 	"unknown-74",
511e853bc5dShenning 	"unknown-75",
512e853bc5dShenning 	"unknown-76",
513e853bc5dShenning 	"unknown-77",
514e853bc5dShenning 	"unknown-78",
515e853bc5dShenning 	"unknown-79",
516e853bc5dShenning 	"unknown-80",
517e853bc5dShenning 	"unknown-81",
518e853bc5dShenning 	"unknown-82",
519e853bc5dShenning 	"unknown-83",
520e853bc5dShenning 	"unknown-84",
521e853bc5dShenning 	"unknown-85",
522e853bc5dShenning 	"unknown-86",
523e853bc5dShenning 	"unknown-87",
524e853bc5dShenning 	"unknown-88",
525e853bc5dShenning 	"unknown-89",
526e853bc5dShenning 	"unknown-90",
527e853bc5dShenning 	"unknown-91",
528e853bc5dShenning 	"unknown-92",
529e853bc5dShenning 	"unknown-93",
530e853bc5dShenning 	"unknown-94",
531e853bc5dShenning 	"unknown-95",
532e853bc5dShenning 	"unknown-96",
533e853bc5dShenning 	"unknown-97",
534e853bc5dShenning 	"unknown-98",
535e853bc5dShenning 	"unknown-99",
536e853bc5dShenning 	"unknown-100",
537e853bc5dShenning 	"unknown-101",
538e853bc5dShenning 	"unknown-102",
539e853bc5dShenning 	"unknown-103",
540e853bc5dShenning 	"unknown-104",
541e853bc5dShenning 	"unknown-105",
542e853bc5dShenning 	"unknown-106",
543e853bc5dShenning 	"unknown-107",
544e853bc5dShenning 	"unknown-108",
545e853bc5dShenning 	"unknown-109",
546e853bc5dShenning 	"unknown-110",
547e853bc5dShenning 	"unknown-111",
548e853bc5dShenning 	"unknown-112",
549e853bc5dShenning 	"unknown-113",
550e853bc5dShenning 	"unknown-114",
551e853bc5dShenning 	"unknown-115",
552e853bc5dShenning 	"unknown-116",
553e853bc5dShenning 	"unknown-117",
554e853bc5dShenning 	"unknown-118",
555e853bc5dShenning 	"unknown-119",
556e853bc5dShenning 	"unknown-120",
557e853bc5dShenning 	"unknown-121",
558e853bc5dShenning 	"unknown-122",
559e853bc5dShenning 	"unknown-123",
560e853bc5dShenning 	"unknown-124",
561e853bc5dShenning 	"unknown-125",
562e853bc5dShenning 	"unknown-126",
563e853bc5dShenning 	"unknown-127",
564e853bc5dShenning 	"unknown-128",
565e853bc5dShenning 	"unknown-129",
566e853bc5dShenning 	"unknown-130",
567e853bc5dShenning 	"unknown-131",
568e853bc5dShenning 	"unknown-132",
569e853bc5dShenning 	"unknown-133",
570e853bc5dShenning 	"unknown-134",
571e853bc5dShenning 	"unknown-135",
572e853bc5dShenning 	"unknown-136",
573e853bc5dShenning 	"unknown-137",
574e853bc5dShenning 	"unknown-138",
575e853bc5dShenning 	"unknown-139",
576e853bc5dShenning 	"unknown-140",
577e853bc5dShenning 	"unknown-141",
578e853bc5dShenning 	"unknown-142",
579e853bc5dShenning 	"unknown-143",
580e853bc5dShenning 	"unknown-144",
581e853bc5dShenning 	"unknown-145",
582e853bc5dShenning 	"unknown-146",
583e853bc5dShenning 	"unknown-147",
584e853bc5dShenning 	"unknown-148",
585e853bc5dShenning 	"unknown-149",
586e853bc5dShenning 	"unknown-150",
587e853bc5dShenning 	"unknown-151",
588e853bc5dShenning 	"unknown-152",
589e853bc5dShenning 	"unknown-153",
590e853bc5dShenning 	"unknown-154",
591e853bc5dShenning 	"unknown-155",
592e853bc5dShenning 	"unknown-156",
593e853bc5dShenning 	"unknown-157",
594e853bc5dShenning 	"unknown-158",
595e853bc5dShenning 	"unknown-159",
596e853bc5dShenning 	"unknown-160",
597e853bc5dShenning 	"unknown-161",
598e853bc5dShenning 	"unknown-162",
599e853bc5dShenning 	"unknown-163",
600e853bc5dShenning 	"unknown-164",
601e853bc5dShenning 	"unknown-165",
602e853bc5dShenning 	"unknown-166",
603e853bc5dShenning 	"unknown-167",
604e853bc5dShenning 	"unknown-168",
605e853bc5dShenning 	"unknown-169",
606e853bc5dShenning 	"unknown-170",
607e853bc5dShenning 	"unknown-171",
608e853bc5dShenning 	"unknown-172",
609e853bc5dShenning 	"unknown-173",
610e853bc5dShenning 	"unknown-174",
611e853bc5dShenning 	"unknown-175",
612e853bc5dShenning 	"unknown-176",
613e853bc5dShenning 	"unknown-177",
614e853bc5dShenning 	"unknown-178",
615e853bc5dShenning 	"unknown-179",
616e853bc5dShenning 	"unknown-180",
617e853bc5dShenning 	"unknown-181",
618e853bc5dShenning 	"unknown-182",
619e853bc5dShenning 	"unknown-183",
620e853bc5dShenning 	"unknown-184",
621e853bc5dShenning 	"unknown-185",
622e853bc5dShenning 	"unknown-186",
623e853bc5dShenning 	"unknown-187",
624e853bc5dShenning 	"unknown-188",
625e853bc5dShenning 	"unknown-189",
626e853bc5dShenning 	"unknown-190",
627e853bc5dShenning 	"unknown-191",
628e853bc5dShenning 	"unknown-192",
629e853bc5dShenning 	"unknown-193",
630e853bc5dShenning 	"unknown-194",
631e853bc5dShenning 	"unknown-195",
632e853bc5dShenning 	"unknown-196",
633e853bc5dShenning 	"unknown-197",
634e853bc5dShenning 	"unknown-198",
635e853bc5dShenning 	"unknown-199",
636e853bc5dShenning 	"unknown-200",
637e853bc5dShenning 	"unknown-201",
638e853bc5dShenning 	"unknown-202",
639e853bc5dShenning 	"unknown-203",
640e853bc5dShenning 	"unknown-204",
641e853bc5dShenning 	"unknown-205",
642e853bc5dShenning 	"unknown-206",
643e853bc5dShenning 	"unknown-207",
644e853bc5dShenning 	"unknown-208",
645e853bc5dShenning 	"unknown-209",
646e853bc5dShenning 	"unknown-210",
647e853bc5dShenning 	"unknown-211",
648e853bc5dShenning 	"unknown-212",
649e853bc5dShenning 	"unknown-213",
650e853bc5dShenning 	"unknown-214",
651e853bc5dShenning 	"unknown-215",
652e853bc5dShenning 	"unknown-216",
653e853bc5dShenning 	"unknown-217",
654e853bc5dShenning 	"unknown-218",
655e853bc5dShenning 	"unknown-219",
656e853bc5dShenning 	"unknown-220",
657e853bc5dShenning 	"unknown-221",
658e853bc5dShenning 	"unknown-222",
659e853bc5dShenning 	"unknown-223",
660e853bc5dShenning 	"unknown-224",
661e853bc5dShenning 	"unknown-225",
662e853bc5dShenning 	"unknown-226",
663e853bc5dShenning 	"unknown-227",
664e853bc5dShenning 	"unknown-228",
665e853bc5dShenning 	"unknown-229",
666e853bc5dShenning 	"unknown-230",
667e853bc5dShenning 	"unknown-231",
668e853bc5dShenning 	"unknown-232",
669e853bc5dShenning 	"unknown-233",
670e853bc5dShenning 	"unknown-234",
671e853bc5dShenning 	"unknown-235",
672e853bc5dShenning 	"unknown-236",
673e853bc5dShenning 	"unknown-237",
674e853bc5dShenning 	"unknown-238",
675e853bc5dShenning 	"unknown-239",
676e853bc5dShenning 	"unknown-240",
677e853bc5dShenning 	"unknown-241",
678e853bc5dShenning 	"unknown-242",
679e853bc5dShenning 	"unknown-243",
680e853bc5dShenning 	"unknown-244",
681e853bc5dShenning 	"unknown-245",
682e853bc5dShenning 	"unknown-246",
683e853bc5dShenning 	"unknown-247",
684e853bc5dShenning 	"unknown-248",
685e853bc5dShenning 	"unknown-249",
686e853bc5dShenning 	"unknown-250",
687e853bc5dShenning 	"unknown-251",
688e853bc5dShenning 	"unknown-252",
689e853bc5dShenning 	"unknown-253",
690e853bc5dShenning 	"unknown-254",
691c824f21bShenning 	"unknown-255"
692c824f21bShenning };
693e853bc5dShenning 
694e853bc5dShenning 
695e853bc5dShenning struct hash_table universe_hash;
696e853bc5dShenning 
697c824f21bShenning void
initialize_universes(void)698c824f21bShenning initialize_universes(void)
699e853bc5dShenning {
700e853bc5dShenning 	int i;
701e853bc5dShenning 
702e853bc5dShenning 	dhcp_universe.name = "dhcp";
703e853bc5dShenning 	dhcp_universe.hash = new_hash();
704e853bc5dShenning 	if (!dhcp_universe.hash)
705c525a185Skrw 		fatalx("Can't allocate dhcp option hash table.");
706e853bc5dShenning 	for (i = 0; i < 256; i++) {
707e853bc5dShenning 		dhcp_universe.options[i] = &dhcp_options[i];
708e853bc5dShenning 		add_hash(dhcp_universe.hash,
709e853bc5dShenning 		    (unsigned char *)dhcp_options[i].name, 0,
710e853bc5dShenning 		    (unsigned char *)&dhcp_options[i]);
711e853bc5dShenning 	}
712e853bc5dShenning 	universe_hash.hash_count = DEFAULT_HASH_SIZE;
713e853bc5dShenning 	add_hash(&universe_hash,
714e853bc5dShenning 	    (unsigned char *)dhcp_universe.name, 0,
715e853bc5dShenning 	    (unsigned char *)&dhcp_universe);
716e853bc5dShenning }
717