xref: /dragonfly/sbin/dhclient/tables.c (revision fef7d5c7)
1 /*	$OpenBSD: tables.c,v 1.11 2005/07/16 16:31:46 henning Exp $	*/
2 /*	$DragonFly: src/sbin/dhclient/tables.c,v 1.1 2008/08/30 16:07:58 hasso Exp $	*/
3 
4 /* Tables of information... */
5 
6 /*
7  * Copyright (c) 1995, 1996 The Internet Software Consortium.
8  * All rights reserved.
9  *
10  * Redistribution and use in source and binary forms, with or without
11  * modification, are permitted provided that the following conditions
12  * are met:
13  *
14  * 1. Redistributions of source code must retain the above copyright
15  *    notice, this list of conditions and the following disclaimer.
16  * 2. Redistributions in binary form must reproduce the above copyright
17  *    notice, this list of conditions and the following disclaimer in the
18  *    documentation and/or other materials provided with the distribution.
19  * 3. Neither the name of The Internet Software Consortium nor the names
20  *    of its contributors may be used to endorse or promote products derived
21  *    from this software without specific prior written permission.
22  *
23  * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
24  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
25  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
26  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
27  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
28  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
30  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
31  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
32  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
33  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
34  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
35  * SUCH DAMAGE.
36  *
37  * This software has been written for the Internet Software Consortium
38  * by Ted Lemon <mellon@fugue.com> in cooperation with Vixie
39  * Enterprises.  To learn more about the Internet Software Consortium,
40  * see ``http://www.vix.com/isc''.  To learn more about Vixie
41  * Enterprises, see ``http://www.vix.com''.
42  */
43 
44 #include "dhcpd.h"
45 
46 /*
47  * DHCP Option names, formats and codes, from RFC1533.
48  *
49  * Format codes:
50  *
51  * e - end of data
52  * I - IP address
53  * l - 32-bit signed integer
54  * L - 32-bit unsigned integer
55  * s - 16-bit signed integer
56  * S - 16-bit unsigned integer
57  * b - 8-bit signed integer
58  * B - 8-bit unsigned integer
59  * t - ASCII text
60  * f - flag (true or false)
61  * A - array of whatever precedes (e.g., IA means array of IP addresses)
62  */
63 
64 const struct option dhcp_options[256] = {
65 	/*   0 */ { "pad", "" },
66 	/*   1 */ { "subnet-mask", "I" },
67 	/*   2 */ { "time-offset", "l" },
68 	/*   3 */ { "routers", "IA" },
69 	/*   4 */ { "time-servers", "IA" },
70 	/*   5 */ { "ien116-name-servers", "IA" },
71 	/*   6 */ { "domain-name-servers", "IA" },
72 	/*   7 */ { "log-servers", "IA" },
73 	/*   8 */ { "cookie-servers", "IA" },
74 	/*   9 */ { "lpr-servers", "IA" },
75 	/*  10 */ { "impress-servers", "IA" },
76 	/*  11 */ { "resource-location-servers", "IA" },
77 	/*  12 */ { "host-name", "t" },
78 	/*  13 */ { "boot-size", "S" },
79 	/*  14 */ { "merit-dump", "t" },
80 	/*  15 */ { "domain-name", "t" },
81 	/*  16 */ { "swap-server", "I" },
82 	/*  17 */ { "root-path", "t" },
83 	/*  18 */ { "extensions-path", "t" },
84 	/*  19 */ { "ip-forwarding", "f" },
85 	/*  20 */ { "non-local-source-routing", "f" },
86 	/*  21 */ { "policy-filter", "IIA" },
87 	/*  22 */ { "max-dgram-reassembly", "S" },
88 	/*  23 */ { "default-ip-ttl", "B" },
89 	/*  24 */ { "path-mtu-aging-timeout", "L" },
90 	/*  25 */ { "path-mtu-plateau-table", "SA" },
91 	/*  26 */ { "interface-mtu", "S" },
92 	/*  27 */ { "all-subnets-local", "f" },
93 	/*  28 */ { "broadcast-address", "I" },
94 	/*  29 */ { "perform-mask-discovery", "f" },
95 	/*  30 */ { "mask-supplier", "f" },
96 	/*  31 */ { "router-discovery", "f" },
97 	/*  32 */ { "router-solicitation-address", "I" },
98 	/*  33 */ { "static-routes", "IIA" },
99 	/*  34 */ { "trailer-encapsulation", "f" },
100 	/*  35 */ { "arp-cache-timeout", "L" },
101 	/*  36 */ { "ieee802-3-encapsulation", "f" },
102 	/*  37 */ { "default-tcp-ttl", "B" },
103 	/*  38 */ { "tcp-keepalive-interval", "L" },
104 	/*  39 */ { "tcp-keepalive-garbage", "f" },
105 	/*  40 */ { "nis-domain", "t" },
106 	/*  41 */ { "nis-servers", "IA" },
107 	/*  42 */ { "ntp-servers", "IA" },
108 	/*  43 */ { "vendor-encapsulated-options", "X" },
109 	/*  44 */ { "netbios-name-servers", "IA" },
110 	/*  45 */ { "netbios-dd-server", "IA" },
111 	/*  46 */ { "netbios-node-type", "B" },
112 	/*  47 */ { "netbios-scope", "t" },
113 	/*  48 */ { "font-servers", "IA" },
114 	/*  49 */ { "x-display-manager", "IA" },
115 	/*  50 */ { "dhcp-requested-address", "I" },
116 	/*  51 */ { "dhcp-lease-time", "L" },
117 	/*  52 */ { "dhcp-option-overload", "B" },
118 	/*  53 */ { "dhcp-message-type", "B" },
119 	/*  54 */ { "dhcp-server-identifier", "I" },
120 	/*  55 */ { "dhcp-parameter-request-list", "BA" },
121 	/*  56 */ { "dhcp-message", "t" },
122 	/*  57 */ { "dhcp-max-message-size", "S" },
123 	/*  58 */ { "dhcp-renewal-time", "L" },
124 	/*  59 */ { "dhcp-rebinding-time", "L" },
125 	/*  60 */ { "dhcp-class-identifier", "t" },
126 	/*  61 */ { "dhcp-client-identifier", "X" },
127 	/*  62 */ { "option-62", "X" },
128 	/*  63 */ { "option-63", "X" },
129 	/*  64 */ { "nisplus-domain", "t" },
130 	/*  65 */ { "nisplus-servers", "IA" },
131 	/*  66 */ { "tftp-server-name", "t" },
132 	/*  67 */ { "bootfile-name", "t" },
133 	/*  68 */ { "mobile-ip-home-agent", "IA" },
134 	/*  69 */ { "smtp-server", "IA" },
135 	/*  70 */ { "pop-server", "IA" },
136 	/*  71 */ { "nntp-server", "IA" },
137 	/*  72 */ { "www-server", "IA" },
138 	/*  73 */ { "finger-server", "IA" },
139 	/*  74 */ { "irc-server", "IA" },
140 	/*  75 */ { "streettalk-server", "IA" },
141 	/*  76 */ { "streettalk-directory-assistance-server", "IA" },
142 	/*  77 */ { "user-class", "t" },
143 	/*  78 */ { "option-78", "X" },
144 	/*  79 */ { "option-79", "X" },
145 	/*  80 */ { "option-80", "X" },
146 	/*  81 */ { "option-81", "X" },
147 	/*  82 */ { "option-82", "X" },
148 	/*  83 */ { "option-83", "X" },
149 	/*  84 */ { "option-84", "X" },
150 	/*  85 */ { "nds-servers", "IA" },
151 	/*  86 */ { "nds-tree-name", "X" },
152 	/*  87 */ { "nds-context", "X" },
153 	/*  88 */ { "option-88", "X" },
154 	/*  89 */ { "option-89", "X" },
155 	/*  90 */ { "option-90", "X" },
156 	/*  91 */ { "option-91", "X" },
157 	/*  92 */ { "option-92", "X" },
158 	/*  93 */ { "option-93", "X" },
159 	/*  94 */ { "option-94", "X" },
160 	/*  95 */ { "option-95", "X" },
161 	/*  96 */ { "option-96", "X" },
162 	/*  97 */ { "option-97", "X" },
163 	/*  98 */ { "option-98", "X" },
164 	/*  99 */ { "option-99", "X" },
165 	/* 100 */ { "option-100", "X" },
166 	/* 101 */ { "option-101", "X" },
167 	/* 102 */ { "option-102", "X" },
168 	/* 103 */ { "option-103", "X" },
169 	/* 104 */ { "option-104", "X" },
170 	/* 105 */ { "option-105", "X" },
171 	/* 106 */ { "option-106", "X" },
172 	/* 107 */ { "option-107", "X" },
173 	/* 108 */ { "option-108", "X" },
174 	/* 109 */ { "option-109", "X" },
175 	/* 110 */ { "option-110", "X" },
176 	/* 111 */ { "option-111", "X" },
177 	/* 112 */ { "option-112", "X" },
178 	/* 113 */ { "option-113", "X" },
179 	/* 114 */ { "option-114", "X" },
180 	/* 115 */ { "option-115", "X" },
181 	/* 116 */ { "option-116", "X" },
182 	/* 117 */ { "option-117", "X" },
183 	/* 118 */ { "option-118", "X" },
184 	/* 119 */ { "option-119", "X" },
185 	/* 120 */ { "option-120", "X" },
186 	/* 121 */ { "classless-routes", "BA" },
187 	/* 122 */ { "option-122", "X" },
188 	/* 123 */ { "option-123", "X" },
189 	/* 124 */ { "option-124", "X" },
190 	/* 125 */ { "option-125", "X" },
191 	/* 126 */ { "option-126", "X" },
192 	/* 127 */ { "option-127", "X" },
193 	/* 128 */ { "option-128", "X" },
194 	/* 129 */ { "option-129", "X" },
195 	/* 130 */ { "option-130", "X" },
196 	/* 131 */ { "option-131", "X" },
197 	/* 132 */ { "option-132", "X" },
198 	/* 133 */ { "option-133", "X" },
199 	/* 134 */ { "option-134", "X" },
200 	/* 135 */ { "option-135", "X" },
201 	/* 136 */ { "option-136", "X" },
202 	/* 137 */ { "option-137", "X" },
203 	/* 138 */ { "option-138", "X" },
204 	/* 139 */ { "option-139", "X" },
205 	/* 140 */ { "option-140", "X" },
206 	/* 141 */ { "option-141", "X" },
207 	/* 142 */ { "option-142", "X" },
208 	/* 143 */ { "option-143", "X" },
209 	/* 144 */ { "option-144", "X" },
210 	/* 145 */ { "option-145", "X" },
211 	/* 146 */ { "option-146", "X" },
212 	/* 147 */ { "option-147", "X" },
213 	/* 148 */ { "option-148", "X" },
214 	/* 149 */ { "option-149", "X" },
215 	/* 150 */ { "option-150", "X" },
216 	/* 151 */ { "option-151", "X" },
217 	/* 152 */ { "option-152", "X" },
218 	/* 153 */ { "option-153", "X" },
219 	/* 154 */ { "option-154", "X" },
220 	/* 155 */ { "option-155", "X" },
221 	/* 156 */ { "option-156", "X" },
222 	/* 157 */ { "option-157", "X" },
223 	/* 158 */ { "option-158", "X" },
224 	/* 159 */ { "option-159", "X" },
225 	/* 160 */ { "option-160", "X" },
226 	/* 161 */ { "option-161", "X" },
227 	/* 162 */ { "option-162", "X" },
228 	/* 163 */ { "option-163", "X" },
229 	/* 164 */ { "option-164", "X" },
230 	/* 165 */ { "option-165", "X" },
231 	/* 166 */ { "option-166", "X" },
232 	/* 167 */ { "option-167", "X" },
233 	/* 168 */ { "option-168", "X" },
234 	/* 169 */ { "option-169", "X" },
235 	/* 170 */ { "option-170", "X" },
236 	/* 171 */ { "option-171", "X" },
237 	/* 172 */ { "option-172", "X" },
238 	/* 173 */ { "option-173", "X" },
239 	/* 174 */ { "option-174", "X" },
240 	/* 175 */ { "option-175", "X" },
241 	/* 176 */ { "option-176", "X" },
242 	/* 177 */ { "option-177", "X" },
243 	/* 178 */ { "option-178", "X" },
244 	/* 179 */ { "option-179", "X" },
245 	/* 180 */ { "option-180", "X" },
246 	/* 181 */ { "option-181", "X" },
247 	/* 182 */ { "option-182", "X" },
248 	/* 183 */ { "option-183", "X" },
249 	/* 184 */ { "option-184", "X" },
250 	/* 185 */ { "option-185", "X" },
251 	/* 186 */ { "option-186", "X" },
252 	/* 187 */ { "option-187", "X" },
253 	/* 188 */ { "option-188", "X" },
254 	/* 189 */ { "option-189", "X" },
255 	/* 190 */ { "option-190", "X" },
256 	/* 191 */ { "option-191", "X" },
257 	/* 192 */ { "option-192", "X" },
258 	/* 193 */ { "option-193", "X" },
259 	/* 194 */ { "option-194", "X" },
260 	/* 195 */ { "option-195", "X" },
261 	/* 196 */ { "option-196", "X" },
262 	/* 197 */ { "option-197", "X" },
263 	/* 198 */ { "option-198", "X" },
264 	/* 199 */ { "option-199", "X" },
265 	/* 200 */ { "option-200", "X" },
266 	/* 201 */ { "option-201", "X" },
267 	/* 202 */ { "option-202", "X" },
268 	/* 203 */ { "option-203", "X" },
269 	/* 204 */ { "option-204", "X" },
270 	/* 205 */ { "option-205", "X" },
271 	/* 206 */ { "option-206", "X" },
272 	/* 207 */ { "option-207", "X" },
273 	/* 208 */ { "option-208", "X" },
274 	/* 209 */ { "option-209", "X" },
275 	/* 210 */ { "option-210", "X" },
276 	/* 211 */ { "option-211", "X" },
277 	/* 212 */ { "option-212", "X" },
278 	/* 213 */ { "option-213", "X" },
279 	/* 214 */ { "option-214", "X" },
280 	/* 215 */ { "option-215", "X" },
281 	/* 216 */ { "option-216", "X" },
282 	/* 217 */ { "option-217", "X" },
283 	/* 218 */ { "option-218", "X" },
284 	/* 219 */ { "option-219", "X" },
285 	/* 220 */ { "option-220", "X" },
286 	/* 221 */ { "option-221", "X" },
287 	/* 222 */ { "option-222", "X" },
288 	/* 223 */ { "option-223", "X" },
289 	/* 224 */ { "option-224", "X" },
290 	/* 225 */ { "option-225", "X" },
291 	/* 226 */ { "option-226", "X" },
292 	/* 227 */ { "option-227", "X" },
293 	/* 228 */ { "option-228", "X" },
294 	/* 229 */ { "option-229", "X" },
295 	/* 230 */ { "option-230", "X" },
296 	/* 231 */ { "option-231", "X" },
297 	/* 232 */ { "option-232", "X" },
298 	/* 233 */ { "option-233", "X" },
299 	/* 234 */ { "option-234", "X" },
300 	/* 235 */ { "option-235", "X" },
301 	/* 236 */ { "option-236", "X" },
302 	/* 237 */ { "option-237", "X" },
303 	/* 238 */ { "option-238", "X" },
304 	/* 239 */ { "option-239", "X" },
305 	/* 240 */ { "option-240", "X" },
306 	/* 241 */ { "option-241", "X" },
307 	/* 242 */ { "option-242", "X" },
308 	/* 243 */ { "option-243", "X" },
309 	/* 244 */ { "option-244", "X" },
310 	/* 245 */ { "option-245", "X" },
311 	/* 246 */ { "option-246", "X" },
312 	/* 247 */ { "option-247", "X" },
313 	/* 248 */ { "option-248", "X" },
314 	/* 249 */ { "option-249", "X" },
315 	/* 250 */ { "option-250", "X" },
316 	/* 251 */ { "option-251", "X" },
317 	/* 252 */ { "option-252", "X" },
318 	/* 253 */ { "option-253", "X" },
319 	/* 254 */ { "option-254", "X" },
320 	/* 255 */ { "option-end", "e" },
321 };
322