xref: /openbsd/usr.sbin/dhcpd/tables.c (revision ba64cb98)
1*ba64cb98Skrw /*	$OpenBSD: tables.c,v 1.4 2007/10/28 15:19:18 krw 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 
43e853bc5dShenning #include "dhcpd.h"
44e853bc5dShenning 
45c824f21bShenning /*
46c824f21bShenning  * DHCP Option names, formats and codes, from RFC1533.
47c824f21bShenning  *
48c824f21bShenning  * Format codes:
49c824f21bShenning  *
50c824f21bShenning  * e - end of data
51c824f21bShenning  * I - IP address
52c824f21bShenning  * l - 32-bit signed integer
53c824f21bShenning  * L - 32-bit unsigned integer
54c824f21bShenning  * s - 16-bit signed integer
55c824f21bShenning  * S - 16-bit unsigned integer
56c824f21bShenning  * b - 8-bit signed integer
57c824f21bShenning  * B - 8-bit unsigned integer
58c824f21bShenning  * t - ASCII text
59c824f21bShenning  * f - flag (true or false)
60c824f21bShenning  * A - array of whatever precedes (e.g., IA means array of IP addresses)
61e853bc5dShenning  */
62e853bc5dShenning 
63e853bc5dShenning struct universe dhcp_universe;
64e853bc5dShenning struct option dhcp_options[256] = {
65e853bc5dShenning 	{ "pad", "",					&dhcp_universe, 0 },
66e853bc5dShenning 	{ "subnet-mask", "I",				&dhcp_universe, 1 },
67e853bc5dShenning 	{ "time-offset", "l",				&dhcp_universe, 2 },
68e853bc5dShenning 	{ "routers", "IA",				&dhcp_universe, 3 },
69e853bc5dShenning 	{ "time-servers", "IA",				&dhcp_universe, 4 },
70e853bc5dShenning 	{ "ien116-name-servers", "IA",			&dhcp_universe, 5 },
71e853bc5dShenning 	{ "domain-name-servers", "IA",			&dhcp_universe, 6 },
72e853bc5dShenning 	{ "log-servers", "IA",				&dhcp_universe, 7 },
73e853bc5dShenning 	{ "cookie-servers", "IA",			&dhcp_universe, 8 },
74e853bc5dShenning 	{ "lpr-servers", "IA",				&dhcp_universe, 9 },
75e853bc5dShenning 	{ "impress-servers", "IA",			&dhcp_universe, 10 },
76e853bc5dShenning 	{ "resource-location-servers", "IA",		&dhcp_universe, 11 },
77e853bc5dShenning 	{ "host-name", "X",				&dhcp_universe, 12 },
78e853bc5dShenning 	{ "boot-size", "S",				&dhcp_universe, 13 },
79e853bc5dShenning 	{ "merit-dump", "t",				&dhcp_universe, 14 },
80e853bc5dShenning 	{ "domain-name", "t",				&dhcp_universe, 15 },
81e853bc5dShenning 	{ "swap-server", "I",				&dhcp_universe, 16 },
82e853bc5dShenning 	{ "root-path", "t",				&dhcp_universe, 17 },
83e853bc5dShenning 	{ "extensions-path", "t",			&dhcp_universe, 18 },
84e853bc5dShenning 	{ "ip-forwarding", "f",				&dhcp_universe, 19 },
85e853bc5dShenning 	{ "non-local-source-routing", "f",		&dhcp_universe, 20 },
86e853bc5dShenning 	{ "policy-filter", "IIA",			&dhcp_universe, 21 },
87e853bc5dShenning 	{ "max-dgram-reassembly", "S",			&dhcp_universe, 22 },
88e853bc5dShenning 	{ "default-ip-ttl", "B",			&dhcp_universe, 23 },
89e853bc5dShenning 	{ "path-mtu-aging-timeout", "L",		&dhcp_universe, 24 },
90e853bc5dShenning 	{ "path-mtu-plateau-table", "SA",		&dhcp_universe, 25 },
91e853bc5dShenning 	{ "interface-mtu", "S",				&dhcp_universe, 26 },
92e853bc5dShenning 	{ "all-subnets-local", "f",			&dhcp_universe, 27 },
93e853bc5dShenning 	{ "broadcast-address", "I",			&dhcp_universe, 28 },
94e853bc5dShenning 	{ "perform-mask-discovery", "f",		&dhcp_universe, 29 },
95e853bc5dShenning 	{ "mask-supplier", "f",				&dhcp_universe, 30 },
96e853bc5dShenning 	{ "router-discovery", "f",			&dhcp_universe, 31 },
97e853bc5dShenning 	{ "router-solicitation-address", "I",		&dhcp_universe, 32 },
98e853bc5dShenning 	{ "static-routes", "IIA",			&dhcp_universe, 33 },
99e853bc5dShenning 	{ "trailer-encapsulation", "f",			&dhcp_universe, 34 },
100e853bc5dShenning 	{ "arp-cache-timeout", "L",			&dhcp_universe, 35 },
101e853bc5dShenning 	{ "ieee802-3-encapsulation", "f",		&dhcp_universe, 36 },
102e853bc5dShenning 	{ "default-tcp-ttl", "B",			&dhcp_universe, 37 },
103e853bc5dShenning 	{ "tcp-keepalive-interval", "L",		&dhcp_universe, 38 },
104e853bc5dShenning 	{ "tcp-keepalive-garbage", "f",			&dhcp_universe, 39 },
105e853bc5dShenning 	{ "nis-domain", "t",				&dhcp_universe, 40 },
106e853bc5dShenning 	{ "nis-servers", "IA",				&dhcp_universe, 41 },
107e853bc5dShenning 	{ "ntp-servers", "IA",				&dhcp_universe, 42 },
108e853bc5dShenning 	{ "vendor-encapsulated-options", "X",		&dhcp_universe, 43 },
109e853bc5dShenning 	{ "netbios-name-servers", "IA",			&dhcp_universe, 44 },
110e853bc5dShenning 	{ "netbios-dd-server", "IA",			&dhcp_universe, 45 },
111e853bc5dShenning 	{ "netbios-node-type", "B",			&dhcp_universe, 46 },
112e853bc5dShenning 	{ "netbios-scope", "t",				&dhcp_universe, 47 },
113e853bc5dShenning 	{ "font-servers", "IA",				&dhcp_universe, 48 },
114e853bc5dShenning 	{ "x-display-manager", "IA",			&dhcp_universe, 49 },
115e853bc5dShenning 	{ "dhcp-requested-address", "I",		&dhcp_universe, 50 },
116e853bc5dShenning 	{ "dhcp-lease-time", "L",			&dhcp_universe, 51 },
117e853bc5dShenning 	{ "dhcp-option-overload", "B",			&dhcp_universe, 52 },
118e853bc5dShenning 	{ "dhcp-message-type", "B",			&dhcp_universe, 53 },
119e853bc5dShenning 	{ "dhcp-server-identifier", "I",		&dhcp_universe, 54 },
120e853bc5dShenning 	{ "dhcp-parameter-request-list", "BA",		&dhcp_universe, 55 },
121e853bc5dShenning 	{ "dhcp-message", "t",				&dhcp_universe, 56 },
122e853bc5dShenning 	{ "dhcp-max-message-size", "S",			&dhcp_universe, 57 },
123e853bc5dShenning 	{ "dhcp-renewal-time", "L",			&dhcp_universe, 58 },
124e853bc5dShenning 	{ "dhcp-rebinding-time", "L",			&dhcp_universe, 59 },
125e853bc5dShenning 	{ "dhcp-class-identifier", "t",			&dhcp_universe, 60 },
126e853bc5dShenning 	{ "dhcp-client-identifier", "X",		&dhcp_universe, 61 },
127e853bc5dShenning 	{ "option-62", "X",				&dhcp_universe, 62 },
128e853bc5dShenning 	{ "option-63", "X",				&dhcp_universe, 63 },
129e853bc5dShenning 	{ "nisplus-domain", "t",			&dhcp_universe, 64 },
130e853bc5dShenning 	{ "nisplus-servers", "IA",			&dhcp_universe, 65 },
131e853bc5dShenning 	{ "tftp-server-name", "t",			&dhcp_universe, 66 },
132e853bc5dShenning 	{ "bootfile-name", "t",				&dhcp_universe, 67 },
133e853bc5dShenning 	{ "mobile-ip-home-agent", "IA",			&dhcp_universe, 68 },
134e853bc5dShenning 	{ "smtp-server", "IA",				&dhcp_universe, 69 },
135e853bc5dShenning 	{ "pop-server", "IA",				&dhcp_universe, 70 },
136e853bc5dShenning 	{ "nntp-server", "IA",				&dhcp_universe, 71 },
137e853bc5dShenning 	{ "www-server", "IA",				&dhcp_universe, 72 },
138e853bc5dShenning 	{ "finger-server", "IA",			&dhcp_universe, 73 },
139e853bc5dShenning 	{ "irc-server", "IA",				&dhcp_universe, 74 },
140e853bc5dShenning 	{ "streettalk-server", "IA",			&dhcp_universe, 75 },
141e853bc5dShenning 	{ "streettalk-directory-assistance-server", "IA", &dhcp_universe, 76 },
142e853bc5dShenning 	{ "user-class", "t",				&dhcp_universe, 77 },
143e853bc5dShenning 	{ "option-78", "X",				&dhcp_universe, 78 },
144e853bc5dShenning 	{ "option-79", "X",				&dhcp_universe, 79 },
145e853bc5dShenning 	{ "option-80", "X",				&dhcp_universe, 80 },
146e853bc5dShenning 	{ "option-81", "X",				&dhcp_universe, 81 },
147e853bc5dShenning 	{ "option-82", "X",				&dhcp_universe, 82 },
148e853bc5dShenning 	{ "option-83", "X",				&dhcp_universe, 83 },
149e853bc5dShenning 	{ "option-84", "X",				&dhcp_universe, 84 },
150e853bc5dShenning 	{ "nds-servers", "IA",				&dhcp_universe, 85 },
151e853bc5dShenning 	{ "nds-tree-name", "X",				&dhcp_universe, 86 },
152e853bc5dShenning 	{ "nds-context", "X",				&dhcp_universe, 87 },
153e853bc5dShenning 	{ "option-88", "X",				&dhcp_universe, 88 },
154e853bc5dShenning 	{ "option-89", "X",				&dhcp_universe, 89 },
155e853bc5dShenning 	{ "option-90", "X",				&dhcp_universe, 90 },
156e853bc5dShenning 	{ "option-91", "X",				&dhcp_universe, 91 },
157e853bc5dShenning 	{ "option-92", "X",				&dhcp_universe, 92 },
158e853bc5dShenning 	{ "option-93", "X",				&dhcp_universe, 93 },
159e853bc5dShenning 	{ "option-94", "X",				&dhcp_universe, 94 },
160e853bc5dShenning 	{ "option-95", "X",				&dhcp_universe, 95 },
161e853bc5dShenning 	{ "option-96", "X",				&dhcp_universe, 96 },
162e853bc5dShenning 	{ "option-97", "X",				&dhcp_universe, 97 },
163e853bc5dShenning 	{ "option-98", "X",				&dhcp_universe, 98 },
164e853bc5dShenning 	{ "option-99", "X",				&dhcp_universe, 99 },
165e853bc5dShenning 	{ "option-100", "X",				&dhcp_universe, 100 },
166e853bc5dShenning 	{ "option-101", "X",				&dhcp_universe, 101 },
167e853bc5dShenning 	{ "option-102", "X",				&dhcp_universe, 102 },
168e853bc5dShenning 	{ "option-103", "X",				&dhcp_universe, 103 },
169e853bc5dShenning 	{ "option-104", "X",				&dhcp_universe, 104 },
170e853bc5dShenning 	{ "option-105", "X",				&dhcp_universe, 105 },
171e853bc5dShenning 	{ "option-106", "X",				&dhcp_universe, 106 },
172e853bc5dShenning 	{ "option-107", "X",				&dhcp_universe, 107 },
173e853bc5dShenning 	{ "option-108", "X",				&dhcp_universe, 108 },
174e853bc5dShenning 	{ "option-109", "X",				&dhcp_universe, 109 },
175e853bc5dShenning 	{ "option-110", "X",				&dhcp_universe, 110 },
176e853bc5dShenning 	{ "option-111", "X",				&dhcp_universe, 111 },
177e853bc5dShenning 	{ "option-112", "X",				&dhcp_universe, 112 },
178e853bc5dShenning 	{ "option-113", "X",				&dhcp_universe, 113 },
179e853bc5dShenning 	{ "option-114", "X",				&dhcp_universe, 114 },
180e853bc5dShenning 	{ "option-115", "X",				&dhcp_universe, 115 },
181e853bc5dShenning 	{ "option-116", "X",				&dhcp_universe, 116 },
182e853bc5dShenning 	{ "option-117", "X",				&dhcp_universe, 117 },
183e853bc5dShenning 	{ "option-118", "X",				&dhcp_universe, 118 },
184e853bc5dShenning 	{ "option-119", "X",				&dhcp_universe, 119 },
185e853bc5dShenning 	{ "option-120", "X",				&dhcp_universe, 120 },
186e853bc5dShenning 	{ "option-121", "X",				&dhcp_universe, 121 },
187e853bc5dShenning 	{ "option-122", "X",				&dhcp_universe, 122 },
188e853bc5dShenning 	{ "option-123", "X",				&dhcp_universe, 123 },
189e853bc5dShenning 	{ "option-124", "X",				&dhcp_universe, 124 },
190e853bc5dShenning 	{ "option-125", "X",				&dhcp_universe, 125 },
191e853bc5dShenning 	{ "option-126", "X",				&dhcp_universe, 126 },
192e853bc5dShenning 	{ "option-127", "X",				&dhcp_universe, 127 },
193e853bc5dShenning 	{ "option-128", "X",				&dhcp_universe, 128 },
194e853bc5dShenning 	{ "option-129", "X",				&dhcp_universe, 129 },
195e853bc5dShenning 	{ "option-130", "X",				&dhcp_universe, 130 },
196e853bc5dShenning 	{ "option-131", "X",				&dhcp_universe, 131 },
197e853bc5dShenning 	{ "option-132", "X",				&dhcp_universe, 132 },
198e853bc5dShenning 	{ "option-133", "X",				&dhcp_universe, 133 },
199e853bc5dShenning 	{ "option-134", "X",				&dhcp_universe, 134 },
200e853bc5dShenning 	{ "option-135", "X",				&dhcp_universe, 135 },
201e853bc5dShenning 	{ "option-136", "X",				&dhcp_universe, 136 },
202e853bc5dShenning 	{ "option-137", "X",				&dhcp_universe, 137 },
203e853bc5dShenning 	{ "option-138", "X",				&dhcp_universe, 138 },
204e853bc5dShenning 	{ "option-139", "X",				&dhcp_universe, 139 },
205e853bc5dShenning 	{ "option-140", "X",				&dhcp_universe, 140 },
206e853bc5dShenning 	{ "option-141", "X",				&dhcp_universe, 141 },
207e853bc5dShenning 	{ "option-142", "X",				&dhcp_universe, 142 },
208e853bc5dShenning 	{ "option-143", "X",				&dhcp_universe, 143 },
209e853bc5dShenning 	{ "option-144", "X",				&dhcp_universe, 144 },
210e853bc5dShenning 	{ "option-145", "X",				&dhcp_universe, 145 },
211e853bc5dShenning 	{ "option-146", "X",				&dhcp_universe, 146 },
212e853bc5dShenning 	{ "option-147", "X",				&dhcp_universe, 147 },
213e853bc5dShenning 	{ "option-148", "X",				&dhcp_universe, 148 },
214e853bc5dShenning 	{ "option-149", "X",				&dhcp_universe, 149 },
215e853bc5dShenning 	{ "option-150", "X",				&dhcp_universe, 150 },
216e853bc5dShenning 	{ "option-151", "X",				&dhcp_universe, 151 },
217e853bc5dShenning 	{ "option-152", "X",				&dhcp_universe, 152 },
218e853bc5dShenning 	{ "option-153", "X",				&dhcp_universe, 153 },
219e853bc5dShenning 	{ "option-154", "X",				&dhcp_universe, 154 },
220e853bc5dShenning 	{ "option-155", "X",				&dhcp_universe, 155 },
221e853bc5dShenning 	{ "option-156", "X",				&dhcp_universe, 156 },
222e853bc5dShenning 	{ "option-157", "X",				&dhcp_universe, 157 },
223e853bc5dShenning 	{ "option-158", "X",				&dhcp_universe, 158 },
224e853bc5dShenning 	{ "option-159", "X",				&dhcp_universe, 159 },
225e853bc5dShenning 	{ "option-160", "X",				&dhcp_universe, 160 },
226e853bc5dShenning 	{ "option-161", "X",				&dhcp_universe, 161 },
227e853bc5dShenning 	{ "option-162", "X",				&dhcp_universe, 162 },
228e853bc5dShenning 	{ "option-163", "X",				&dhcp_universe, 163 },
229e853bc5dShenning 	{ "option-164", "X",				&dhcp_universe, 164 },
230e853bc5dShenning 	{ "option-165", "X",				&dhcp_universe, 165 },
231e853bc5dShenning 	{ "option-166", "X",				&dhcp_universe, 166 },
232e853bc5dShenning 	{ "option-167", "X",				&dhcp_universe, 167 },
233e853bc5dShenning 	{ "option-168", "X",				&dhcp_universe, 168 },
234e853bc5dShenning 	{ "option-169", "X",				&dhcp_universe, 169 },
235e853bc5dShenning 	{ "option-170", "X",				&dhcp_universe, 170 },
236e853bc5dShenning 	{ "option-171", "X",				&dhcp_universe, 171 },
237e853bc5dShenning 	{ "option-172", "X",				&dhcp_universe, 172 },
238e853bc5dShenning 	{ "option-173", "X",				&dhcp_universe, 173 },
239e853bc5dShenning 	{ "option-174", "X",				&dhcp_universe, 174 },
240e853bc5dShenning 	{ "option-175", "X",				&dhcp_universe, 175 },
241e853bc5dShenning 	{ "option-176", "X",				&dhcp_universe, 176 },
242e853bc5dShenning 	{ "option-177", "X",				&dhcp_universe, 177 },
243e853bc5dShenning 	{ "option-178", "X",				&dhcp_universe, 178 },
244e853bc5dShenning 	{ "option-179", "X",				&dhcp_universe, 179 },
245e853bc5dShenning 	{ "option-180", "X",				&dhcp_universe, 180 },
246e853bc5dShenning 	{ "option-181", "X",				&dhcp_universe, 181 },
247e853bc5dShenning 	{ "option-182", "X",				&dhcp_universe, 182 },
248e853bc5dShenning 	{ "option-183", "X",				&dhcp_universe, 183 },
249e853bc5dShenning 	{ "option-184", "X",				&dhcp_universe, 184 },
250e853bc5dShenning 	{ "option-185", "X",				&dhcp_universe, 185 },
251e853bc5dShenning 	{ "option-186", "X",				&dhcp_universe, 186 },
252e853bc5dShenning 	{ "option-187", "X",				&dhcp_universe, 187 },
253e853bc5dShenning 	{ "option-188", "X",				&dhcp_universe, 188 },
254e853bc5dShenning 	{ "option-189", "X",				&dhcp_universe, 189 },
255e853bc5dShenning 	{ "option-190", "X",				&dhcp_universe, 190 },
256e853bc5dShenning 	{ "option-191", "X",				&dhcp_universe, 191 },
257e853bc5dShenning 	{ "option-192", "X",				&dhcp_universe, 192 },
258e853bc5dShenning 	{ "option-193", "X",				&dhcp_universe, 193 },
259e853bc5dShenning 	{ "option-194", "X",				&dhcp_universe, 194 },
260e853bc5dShenning 	{ "option-195", "X",				&dhcp_universe, 195 },
261e853bc5dShenning 	{ "option-196", "X",				&dhcp_universe, 196 },
262e853bc5dShenning 	{ "option-197", "X",				&dhcp_universe, 197 },
263e853bc5dShenning 	{ "option-198", "X",				&dhcp_universe, 198 },
264e853bc5dShenning 	{ "option-199", "X",				&dhcp_universe, 199 },
265e853bc5dShenning 	{ "option-200", "X",				&dhcp_universe, 200 },
266e853bc5dShenning 	{ "option-201", "X",				&dhcp_universe, 201 },
267e853bc5dShenning 	{ "option-202", "X",				&dhcp_universe, 202 },
268e853bc5dShenning 	{ "option-203", "X",				&dhcp_universe, 203 },
269e853bc5dShenning 	{ "option-204", "X",				&dhcp_universe, 204 },
270e853bc5dShenning 	{ "option-205", "X",				&dhcp_universe, 205 },
271e853bc5dShenning 	{ "option-206", "X",				&dhcp_universe, 206 },
272e853bc5dShenning 	{ "option-207", "X",				&dhcp_universe, 207 },
273e853bc5dShenning 	{ "option-208", "X",				&dhcp_universe, 208 },
274e853bc5dShenning 	{ "option-209", "X",				&dhcp_universe, 209 },
275e853bc5dShenning 	{ "option-210", "X",				&dhcp_universe, 210 },
276e853bc5dShenning 	{ "option-211", "X",				&dhcp_universe, 211 },
277e853bc5dShenning 	{ "option-212", "X",				&dhcp_universe, 212 },
278e853bc5dShenning 	{ "option-213", "X",				&dhcp_universe, 213 },
279e853bc5dShenning 	{ "option-214", "X",				&dhcp_universe, 214 },
280e853bc5dShenning 	{ "option-215", "X",				&dhcp_universe, 215 },
281e853bc5dShenning 	{ "option-216", "X",				&dhcp_universe, 216 },
282e853bc5dShenning 	{ "option-217", "X",				&dhcp_universe, 217 },
283e853bc5dShenning 	{ "option-218", "X",				&dhcp_universe, 218 },
284e853bc5dShenning 	{ "option-219", "X",				&dhcp_universe, 219 },
285e853bc5dShenning 	{ "option-220", "X",				&dhcp_universe, 220 },
286e853bc5dShenning 	{ "option-221", "X",				&dhcp_universe, 221 },
287e853bc5dShenning 	{ "option-222", "X",				&dhcp_universe, 222 },
288e853bc5dShenning 	{ "option-223", "X",				&dhcp_universe, 223 },
289e853bc5dShenning 	{ "option-224", "X",				&dhcp_universe, 224 },
290e853bc5dShenning 	{ "option-225", "X",				&dhcp_universe, 225 },
291e853bc5dShenning 	{ "option-226", "X",				&dhcp_universe, 226 },
292e853bc5dShenning 	{ "option-227", "X",				&dhcp_universe, 227 },
293e853bc5dShenning 	{ "option-228", "X",				&dhcp_universe, 228 },
294e853bc5dShenning 	{ "option-229", "X",				&dhcp_universe, 229 },
295e853bc5dShenning 	{ "option-230", "X",				&dhcp_universe, 230 },
296e853bc5dShenning 	{ "option-231", "X",				&dhcp_universe, 231 },
297e853bc5dShenning 	{ "option-232", "X",				&dhcp_universe, 232 },
298e853bc5dShenning 	{ "option-233", "X",				&dhcp_universe, 233 },
299e853bc5dShenning 	{ "option-234", "X",				&dhcp_universe, 234 },
300e853bc5dShenning 	{ "option-235", "X",				&dhcp_universe, 235 },
301e853bc5dShenning 	{ "option-236", "X",				&dhcp_universe, 236 },
302e853bc5dShenning 	{ "option-237", "X",				&dhcp_universe, 237 },
303e853bc5dShenning 	{ "option-238", "X",				&dhcp_universe, 238 },
304e853bc5dShenning 	{ "option-239", "X",				&dhcp_universe, 239 },
305e853bc5dShenning 	{ "option-240", "X",				&dhcp_universe, 240 },
306e853bc5dShenning 	{ "option-241", "X",				&dhcp_universe, 241 },
307e853bc5dShenning 	{ "option-242", "X",				&dhcp_universe, 242 },
308e853bc5dShenning 	{ "option-243", "X",				&dhcp_universe, 243 },
309e853bc5dShenning 	{ "option-244", "X",				&dhcp_universe, 244 },
310e853bc5dShenning 	{ "option-245", "X",				&dhcp_universe, 245 },
311e853bc5dShenning 	{ "option-246", "X",				&dhcp_universe, 246 },
312e853bc5dShenning 	{ "option-247", "X",				&dhcp_universe, 247 },
313e853bc5dShenning 	{ "option-248", "X",				&dhcp_universe, 248 },
314e853bc5dShenning 	{ "option-249", "X",				&dhcp_universe, 249 },
315e853bc5dShenning 	{ "option-250", "X",				&dhcp_universe, 250 },
316e853bc5dShenning 	{ "option-251", "X",				&dhcp_universe, 251 },
317e853bc5dShenning 	{ "option-252", "X",				&dhcp_universe, 252 },
318e853bc5dShenning 	{ "option-253", "X",				&dhcp_universe, 253 },
319e853bc5dShenning 	{ "option-254", "X",				&dhcp_universe, 254 },
320e853bc5dShenning 	{ "option-end", "e",				&dhcp_universe, 255 },
321e853bc5dShenning };
322e853bc5dShenning 
323c824f21bShenning /*
324c824f21bShenning  * Default dhcp option priority list (this is ad hoc and should not be
325c824f21bShenning  * mistaken for a carefully crafted and optimized list).
326c824f21bShenning  */
327e853bc5dShenning unsigned char dhcp_option_default_priority_list[] = {
328e853bc5dShenning 	DHO_DHCP_REQUESTED_ADDRESS,
329e853bc5dShenning 	DHO_DHCP_OPTION_OVERLOAD,
330e853bc5dShenning 	DHO_DHCP_MAX_MESSAGE_SIZE,
331e853bc5dShenning 	DHO_DHCP_RENEWAL_TIME,
332e853bc5dShenning 	DHO_DHCP_REBINDING_TIME,
333e853bc5dShenning 	DHO_DHCP_CLASS_IDENTIFIER,
334e853bc5dShenning 	DHO_DHCP_CLIENT_IDENTIFIER,
335e853bc5dShenning 	DHO_SUBNET_MASK,
336e853bc5dShenning 	DHO_TIME_OFFSET,
337e853bc5dShenning 	DHO_ROUTERS,
338e853bc5dShenning 	DHO_TIME_SERVERS,
339e853bc5dShenning 	DHO_NAME_SERVERS,
340e853bc5dShenning 	DHO_DOMAIN_NAME_SERVERS,
341e853bc5dShenning 	DHO_HOST_NAME,
342e853bc5dShenning 	DHO_LOG_SERVERS,
343e853bc5dShenning 	DHO_COOKIE_SERVERS,
344e853bc5dShenning 	DHO_LPR_SERVERS,
345e853bc5dShenning 	DHO_IMPRESS_SERVERS,
346e853bc5dShenning 	DHO_RESOURCE_LOCATION_SERVERS,
347e853bc5dShenning 	DHO_BOOT_SIZE,
348e853bc5dShenning 	DHO_MERIT_DUMP,
349e853bc5dShenning 	DHO_DOMAIN_NAME,
350e853bc5dShenning 	DHO_SWAP_SERVER,
351e853bc5dShenning 	DHO_ROOT_PATH,
352e853bc5dShenning 	DHO_EXTENSIONS_PATH,
353e853bc5dShenning 	DHO_IP_FORWARDING,
354e853bc5dShenning 	DHO_NON_LOCAL_SOURCE_ROUTING,
355e853bc5dShenning 	DHO_POLICY_FILTER,
356e853bc5dShenning 	DHO_MAX_DGRAM_REASSEMBLY,
357e853bc5dShenning 	DHO_DEFAULT_IP_TTL,
358e853bc5dShenning 	DHO_PATH_MTU_AGING_TIMEOUT,
359e853bc5dShenning 	DHO_PATH_MTU_PLATEAU_TABLE,
360e853bc5dShenning 	DHO_INTERFACE_MTU,
361e853bc5dShenning 	DHO_ALL_SUBNETS_LOCAL,
362e853bc5dShenning 	DHO_BROADCAST_ADDRESS,
363e853bc5dShenning 	DHO_PERFORM_MASK_DISCOVERY,
364e853bc5dShenning 	DHO_MASK_SUPPLIER,
365e853bc5dShenning 	DHO_ROUTER_DISCOVERY,
366e853bc5dShenning 	DHO_ROUTER_SOLICITATION_ADDRESS,
367e853bc5dShenning 	DHO_STATIC_ROUTES,
368e853bc5dShenning 	DHO_TRAILER_ENCAPSULATION,
369e853bc5dShenning 	DHO_ARP_CACHE_TIMEOUT,
370e853bc5dShenning 	DHO_IEEE802_3_ENCAPSULATION,
371e853bc5dShenning 	DHO_DEFAULT_TCP_TTL,
372e853bc5dShenning 	DHO_TCP_KEEPALIVE_INTERVAL,
373e853bc5dShenning 	DHO_TCP_KEEPALIVE_GARBAGE,
374e853bc5dShenning 	DHO_NIS_DOMAIN,
375e853bc5dShenning 	DHO_NIS_SERVERS,
376e853bc5dShenning 	DHO_NTP_SERVERS,
377e853bc5dShenning 	DHO_VENDOR_ENCAPSULATED_OPTIONS,
378e853bc5dShenning 	DHO_NETBIOS_NAME_SERVERS,
379e853bc5dShenning 	DHO_NETBIOS_DD_SERVER,
380e853bc5dShenning 	DHO_NETBIOS_NODE_TYPE,
381e853bc5dShenning 	DHO_NETBIOS_SCOPE,
382e853bc5dShenning 	DHO_FONT_SERVERS,
383e853bc5dShenning 	DHO_X_DISPLAY_MANAGER,
384e853bc5dShenning 	DHO_DHCP_PARAMETER_REQUEST_LIST,
385*ba64cb98Skrw 	DHO_DHCP_USER_CLASS_ID,
386e853bc5dShenning 
387e853bc5dShenning 	/* Presently-undefined options... */
388*ba64cb98Skrw 	           62,  63,  64,  65,  66,  67,  68,  69,
389*ba64cb98Skrw 	 70,  71,  72,  73,  74,  75,  76,       78,  79,
390*ba64cb98Skrw 	 80,  81,  82,  83,  84,  85,  86,  87,  88,  89,
391*ba64cb98Skrw 	 90,  91,  92,  93,  94,  95,  96,  97,  98,  99,
392*ba64cb98Skrw 	100, 101, 102, 103, 104, 105, 106, 107, 108, 109,
393*ba64cb98Skrw 	110, 111, 112, 113, 114, 115, 116, 117, 118, 119,
394*ba64cb98Skrw 	120, 121, 122, 123, 124, 125, 126, 127, 128, 129,
395*ba64cb98Skrw 	130, 131, 132, 133, 134, 135, 136, 137, 138, 139,
396*ba64cb98Skrw 	140, 141, 142, 143, 144, 145, 146, 147, 148, 149,
397*ba64cb98Skrw 	150, 151, 152, 153, 154, 155, 156, 157, 158, 159,
398*ba64cb98Skrw 	160, 161, 162, 163, 164, 165, 166, 167, 168, 169,
399*ba64cb98Skrw 	170, 171, 172, 173, 174, 175, 176, 177, 178, 179,
400*ba64cb98Skrw 	180, 181, 182, 183, 184, 185, 186, 187, 188, 189,
401*ba64cb98Skrw 	190, 191, 192, 193, 194, 195, 196, 197, 198, 199,
402*ba64cb98Skrw 	200, 201, 202, 203, 204, 205, 206, 207, 208, 209,
403*ba64cb98Skrw 	210, 211, 212, 213, 214, 215, 216, 217, 218, 219,
404*ba64cb98Skrw 	220, 221, 222, 223, 224, 225, 226, 227, 228, 229,
405*ba64cb98Skrw 	230, 231, 232, 233, 234, 235, 236, 237, 238, 239,
406*ba64cb98Skrw 	240, 241, 242, 243, 244, 245, 246, 247, 248, 249,
407*ba64cb98Skrw 	250, 251, 252, 253, 254
408e853bc5dShenning };
409e853bc5dShenning 
410e853bc5dShenning int sizeof_dhcp_option_default_priority_list =
411c824f21bShenning 	sizeof(dhcp_option_default_priority_list);
412e853bc5dShenning 
413e853bc5dShenning 
414e853bc5dShenning char *hardware_types[] = {
415e853bc5dShenning 	"unknown-0",
416e853bc5dShenning 	"ethernet",
417e853bc5dShenning 	"unknown-2",
418e853bc5dShenning 	"unknown-3",
419e853bc5dShenning 	"unknown-4",
420e853bc5dShenning 	"unknown-5",
421e853bc5dShenning 	"token-ring",
422e853bc5dShenning 	"unknown-7",
423e853bc5dShenning 	"fddi",
424e853bc5dShenning 	"unknown-9",
425e853bc5dShenning 	"unknown-10",
426e853bc5dShenning 	"unknown-11",
427e853bc5dShenning 	"unknown-12",
428e853bc5dShenning 	"unknown-13",
429e853bc5dShenning 	"unknown-14",
430e853bc5dShenning 	"unknown-15",
431e853bc5dShenning 	"unknown-16",
432e853bc5dShenning 	"unknown-17",
433e853bc5dShenning 	"unknown-18",
434e853bc5dShenning 	"unknown-19",
435e853bc5dShenning 	"unknown-20",
436e853bc5dShenning 	"unknown-21",
437e853bc5dShenning 	"unknown-22",
438e853bc5dShenning 	"unknown-23",
439e853bc5dShenning 	"unknown-24",
440e853bc5dShenning 	"unknown-25",
441e853bc5dShenning 	"unknown-26",
442e853bc5dShenning 	"unknown-27",
443e853bc5dShenning 	"unknown-28",
444e853bc5dShenning 	"unknown-29",
445e853bc5dShenning 	"unknown-30",
446e853bc5dShenning 	"unknown-31",
447e853bc5dShenning 	"unknown-32",
448e853bc5dShenning 	"unknown-33",
449e853bc5dShenning 	"unknown-34",
450e853bc5dShenning 	"unknown-35",
451e853bc5dShenning 	"unknown-36",
452e853bc5dShenning 	"unknown-37",
453e853bc5dShenning 	"unknown-38",
454e853bc5dShenning 	"unknown-39",
455e853bc5dShenning 	"unknown-40",
456e853bc5dShenning 	"unknown-41",
457e853bc5dShenning 	"unknown-42",
458e853bc5dShenning 	"unknown-43",
459e853bc5dShenning 	"unknown-44",
460e853bc5dShenning 	"unknown-45",
461e853bc5dShenning 	"unknown-46",
462e853bc5dShenning 	"unknown-47",
463e853bc5dShenning 	"unknown-48",
464e853bc5dShenning 	"unknown-49",
465e853bc5dShenning 	"unknown-50",
466e853bc5dShenning 	"unknown-51",
467e853bc5dShenning 	"unknown-52",
468e853bc5dShenning 	"unknown-53",
469e853bc5dShenning 	"unknown-54",
470e853bc5dShenning 	"unknown-55",
471e853bc5dShenning 	"unknown-56",
472e853bc5dShenning 	"unknown-57",
473e853bc5dShenning 	"unknown-58",
474e853bc5dShenning 	"unknown-59",
475e853bc5dShenning 	"unknown-60",
476e853bc5dShenning 	"unknown-61",
477e853bc5dShenning 	"unknown-62",
478e853bc5dShenning 	"unknown-63",
479e853bc5dShenning 	"unknown-64",
480e853bc5dShenning 	"unknown-65",
481e853bc5dShenning 	"unknown-66",
482e853bc5dShenning 	"unknown-67",
483e853bc5dShenning 	"unknown-68",
484e853bc5dShenning 	"unknown-69",
485e853bc5dShenning 	"unknown-70",
486e853bc5dShenning 	"unknown-71",
487e853bc5dShenning 	"unknown-72",
488e853bc5dShenning 	"unknown-73",
489e853bc5dShenning 	"unknown-74",
490e853bc5dShenning 	"unknown-75",
491e853bc5dShenning 	"unknown-76",
492e853bc5dShenning 	"unknown-77",
493e853bc5dShenning 	"unknown-78",
494e853bc5dShenning 	"unknown-79",
495e853bc5dShenning 	"unknown-80",
496e853bc5dShenning 	"unknown-81",
497e853bc5dShenning 	"unknown-82",
498e853bc5dShenning 	"unknown-83",
499e853bc5dShenning 	"unknown-84",
500e853bc5dShenning 	"unknown-85",
501e853bc5dShenning 	"unknown-86",
502e853bc5dShenning 	"unknown-87",
503e853bc5dShenning 	"unknown-88",
504e853bc5dShenning 	"unknown-89",
505e853bc5dShenning 	"unknown-90",
506e853bc5dShenning 	"unknown-91",
507e853bc5dShenning 	"unknown-92",
508e853bc5dShenning 	"unknown-93",
509e853bc5dShenning 	"unknown-94",
510e853bc5dShenning 	"unknown-95",
511e853bc5dShenning 	"unknown-96",
512e853bc5dShenning 	"unknown-97",
513e853bc5dShenning 	"unknown-98",
514e853bc5dShenning 	"unknown-99",
515e853bc5dShenning 	"unknown-100",
516e853bc5dShenning 	"unknown-101",
517e853bc5dShenning 	"unknown-102",
518e853bc5dShenning 	"unknown-103",
519e853bc5dShenning 	"unknown-104",
520e853bc5dShenning 	"unknown-105",
521e853bc5dShenning 	"unknown-106",
522e853bc5dShenning 	"unknown-107",
523e853bc5dShenning 	"unknown-108",
524e853bc5dShenning 	"unknown-109",
525e853bc5dShenning 	"unknown-110",
526e853bc5dShenning 	"unknown-111",
527e853bc5dShenning 	"unknown-112",
528e853bc5dShenning 	"unknown-113",
529e853bc5dShenning 	"unknown-114",
530e853bc5dShenning 	"unknown-115",
531e853bc5dShenning 	"unknown-116",
532e853bc5dShenning 	"unknown-117",
533e853bc5dShenning 	"unknown-118",
534e853bc5dShenning 	"unknown-119",
535e853bc5dShenning 	"unknown-120",
536e853bc5dShenning 	"unknown-121",
537e853bc5dShenning 	"unknown-122",
538e853bc5dShenning 	"unknown-123",
539e853bc5dShenning 	"unknown-124",
540e853bc5dShenning 	"unknown-125",
541e853bc5dShenning 	"unknown-126",
542e853bc5dShenning 	"unknown-127",
543e853bc5dShenning 	"unknown-128",
544e853bc5dShenning 	"unknown-129",
545e853bc5dShenning 	"unknown-130",
546e853bc5dShenning 	"unknown-131",
547e853bc5dShenning 	"unknown-132",
548e853bc5dShenning 	"unknown-133",
549e853bc5dShenning 	"unknown-134",
550e853bc5dShenning 	"unknown-135",
551e853bc5dShenning 	"unknown-136",
552e853bc5dShenning 	"unknown-137",
553e853bc5dShenning 	"unknown-138",
554e853bc5dShenning 	"unknown-139",
555e853bc5dShenning 	"unknown-140",
556e853bc5dShenning 	"unknown-141",
557e853bc5dShenning 	"unknown-142",
558e853bc5dShenning 	"unknown-143",
559e853bc5dShenning 	"unknown-144",
560e853bc5dShenning 	"unknown-145",
561e853bc5dShenning 	"unknown-146",
562e853bc5dShenning 	"unknown-147",
563e853bc5dShenning 	"unknown-148",
564e853bc5dShenning 	"unknown-149",
565e853bc5dShenning 	"unknown-150",
566e853bc5dShenning 	"unknown-151",
567e853bc5dShenning 	"unknown-152",
568e853bc5dShenning 	"unknown-153",
569e853bc5dShenning 	"unknown-154",
570e853bc5dShenning 	"unknown-155",
571e853bc5dShenning 	"unknown-156",
572e853bc5dShenning 	"unknown-157",
573e853bc5dShenning 	"unknown-158",
574e853bc5dShenning 	"unknown-159",
575e853bc5dShenning 	"unknown-160",
576e853bc5dShenning 	"unknown-161",
577e853bc5dShenning 	"unknown-162",
578e853bc5dShenning 	"unknown-163",
579e853bc5dShenning 	"unknown-164",
580e853bc5dShenning 	"unknown-165",
581e853bc5dShenning 	"unknown-166",
582e853bc5dShenning 	"unknown-167",
583e853bc5dShenning 	"unknown-168",
584e853bc5dShenning 	"unknown-169",
585e853bc5dShenning 	"unknown-170",
586e853bc5dShenning 	"unknown-171",
587e853bc5dShenning 	"unknown-172",
588e853bc5dShenning 	"unknown-173",
589e853bc5dShenning 	"unknown-174",
590e853bc5dShenning 	"unknown-175",
591e853bc5dShenning 	"unknown-176",
592e853bc5dShenning 	"unknown-177",
593e853bc5dShenning 	"unknown-178",
594e853bc5dShenning 	"unknown-179",
595e853bc5dShenning 	"unknown-180",
596e853bc5dShenning 	"unknown-181",
597e853bc5dShenning 	"unknown-182",
598e853bc5dShenning 	"unknown-183",
599e853bc5dShenning 	"unknown-184",
600e853bc5dShenning 	"unknown-185",
601e853bc5dShenning 	"unknown-186",
602e853bc5dShenning 	"unknown-187",
603e853bc5dShenning 	"unknown-188",
604e853bc5dShenning 	"unknown-189",
605e853bc5dShenning 	"unknown-190",
606e853bc5dShenning 	"unknown-191",
607e853bc5dShenning 	"unknown-192",
608e853bc5dShenning 	"unknown-193",
609e853bc5dShenning 	"unknown-194",
610e853bc5dShenning 	"unknown-195",
611e853bc5dShenning 	"unknown-196",
612e853bc5dShenning 	"unknown-197",
613e853bc5dShenning 	"unknown-198",
614e853bc5dShenning 	"unknown-199",
615e853bc5dShenning 	"unknown-200",
616e853bc5dShenning 	"unknown-201",
617e853bc5dShenning 	"unknown-202",
618e853bc5dShenning 	"unknown-203",
619e853bc5dShenning 	"unknown-204",
620e853bc5dShenning 	"unknown-205",
621e853bc5dShenning 	"unknown-206",
622e853bc5dShenning 	"unknown-207",
623e853bc5dShenning 	"unknown-208",
624e853bc5dShenning 	"unknown-209",
625e853bc5dShenning 	"unknown-210",
626e853bc5dShenning 	"unknown-211",
627e853bc5dShenning 	"unknown-212",
628e853bc5dShenning 	"unknown-213",
629e853bc5dShenning 	"unknown-214",
630e853bc5dShenning 	"unknown-215",
631e853bc5dShenning 	"unknown-216",
632e853bc5dShenning 	"unknown-217",
633e853bc5dShenning 	"unknown-218",
634e853bc5dShenning 	"unknown-219",
635e853bc5dShenning 	"unknown-220",
636e853bc5dShenning 	"unknown-221",
637e853bc5dShenning 	"unknown-222",
638e853bc5dShenning 	"unknown-223",
639e853bc5dShenning 	"unknown-224",
640e853bc5dShenning 	"unknown-225",
641e853bc5dShenning 	"unknown-226",
642e853bc5dShenning 	"unknown-227",
643e853bc5dShenning 	"unknown-228",
644e853bc5dShenning 	"unknown-229",
645e853bc5dShenning 	"unknown-230",
646e853bc5dShenning 	"unknown-231",
647e853bc5dShenning 	"unknown-232",
648e853bc5dShenning 	"unknown-233",
649e853bc5dShenning 	"unknown-234",
650e853bc5dShenning 	"unknown-235",
651e853bc5dShenning 	"unknown-236",
652e853bc5dShenning 	"unknown-237",
653e853bc5dShenning 	"unknown-238",
654e853bc5dShenning 	"unknown-239",
655e853bc5dShenning 	"unknown-240",
656e853bc5dShenning 	"unknown-241",
657e853bc5dShenning 	"unknown-242",
658e853bc5dShenning 	"unknown-243",
659e853bc5dShenning 	"unknown-244",
660e853bc5dShenning 	"unknown-245",
661e853bc5dShenning 	"unknown-246",
662e853bc5dShenning 	"unknown-247",
663e853bc5dShenning 	"unknown-248",
664e853bc5dShenning 	"unknown-249",
665e853bc5dShenning 	"unknown-250",
666e853bc5dShenning 	"unknown-251",
667e853bc5dShenning 	"unknown-252",
668e853bc5dShenning 	"unknown-253",
669e853bc5dShenning 	"unknown-254",
670c824f21bShenning 	"unknown-255"
671c824f21bShenning };
672e853bc5dShenning 
673e853bc5dShenning 
674e853bc5dShenning struct hash_table universe_hash;
675e853bc5dShenning 
676c824f21bShenning void
677c824f21bShenning initialize_universes(void)
678e853bc5dShenning {
679e853bc5dShenning 	int i;
680e853bc5dShenning 
681e853bc5dShenning 	dhcp_universe.name = "dhcp";
682e853bc5dShenning 	dhcp_universe.hash = new_hash();
683e853bc5dShenning 	if (!dhcp_universe.hash)
684e853bc5dShenning 		error("Can't allocate dhcp option hash table.");
685e853bc5dShenning 	for (i = 0; i < 256; i++) {
686e853bc5dShenning 		dhcp_universe.options[i] = &dhcp_options[i];
687e853bc5dShenning 		add_hash(dhcp_universe.hash,
688e853bc5dShenning 		    (unsigned char *)dhcp_options[i].name, 0,
689e853bc5dShenning 		    (unsigned char *)&dhcp_options[i]);
690e853bc5dShenning 	}
691e853bc5dShenning 	universe_hash.hash_count = DEFAULT_HASH_SIZE;
692e853bc5dShenning 	add_hash(&universe_hash,
693e853bc5dShenning 	    (unsigned char *)dhcp_universe.name, 0,
694e853bc5dShenning 	    (unsigned char *)&dhcp_universe);
695e853bc5dShenning }
696