xref: /freebsd-src/sbin/dhclient/tables.c (revision 1d386b48a555f61cb7325543adbbb5c3f3407a66)
147c08596SBrooks Davis /*	$OpenBSD: tables.c,v 1.4 2004/05/04 20:28:40 deraadt Exp $	*/
247c08596SBrooks Davis 
347c08596SBrooks Davis /* Tables of information... */
447c08596SBrooks Davis 
58a16b7a1SPedro F. Giffuni /*-
68a16b7a1SPedro F. Giffuni  * SPDX-License-Identifier: BSD-3-Clause
78a16b7a1SPedro F. Giffuni  *
847c08596SBrooks Davis  * Copyright (c) 1995, 1996 The Internet Software Consortium.
947c08596SBrooks Davis  * All rights reserved.
1047c08596SBrooks Davis  *
1147c08596SBrooks Davis  * Redistribution and use in source and binary forms, with or without
1247c08596SBrooks Davis  * modification, are permitted provided that the following conditions
1347c08596SBrooks Davis  * are met:
1447c08596SBrooks Davis  *
1547c08596SBrooks Davis  * 1. Redistributions of source code must retain the above copyright
1647c08596SBrooks Davis  *    notice, this list of conditions and the following disclaimer.
1747c08596SBrooks Davis  * 2. Redistributions in binary form must reproduce the above copyright
1847c08596SBrooks Davis  *    notice, this list of conditions and the following disclaimer in the
1947c08596SBrooks Davis  *    documentation and/or other materials provided with the distribution.
2047c08596SBrooks Davis  * 3. Neither the name of The Internet Software Consortium nor the names
2147c08596SBrooks Davis  *    of its contributors may be used to endorse or promote products derived
2247c08596SBrooks Davis  *    from this software without specific prior written permission.
2347c08596SBrooks Davis  *
2447c08596SBrooks Davis  * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
2547c08596SBrooks Davis  * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
2647c08596SBrooks Davis  * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
2747c08596SBrooks Davis  * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
2847c08596SBrooks Davis  * DISCLAIMED.  IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
2947c08596SBrooks Davis  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
3047c08596SBrooks Davis  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
3147c08596SBrooks Davis  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
3247c08596SBrooks Davis  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
3347c08596SBrooks Davis  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
3447c08596SBrooks Davis  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
3547c08596SBrooks Davis  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
3647c08596SBrooks Davis  * SUCH DAMAGE.
3747c08596SBrooks Davis  *
3847c08596SBrooks Davis  * This software has been written for the Internet Software Consortium
3947c08596SBrooks Davis  * by Ted Lemon <mellon@fugue.com> in cooperation with Vixie
4047c08596SBrooks Davis  * Enterprises.  To learn more about the Internet Software Consortium,
4147c08596SBrooks Davis  * see ``http://www.vix.com/isc''.  To learn more about Vixie
4247c08596SBrooks Davis  * Enterprises, see ``http://www.vix.com''.
4347c08596SBrooks Davis  */
4447c08596SBrooks Davis 
458794fdbbSBrooks Davis #include <sys/cdefs.h>
4647c08596SBrooks Davis #include "dhcpd.h"
4747c08596SBrooks Davis 
4847c08596SBrooks Davis /*
4947c08596SBrooks Davis  * DHCP Option names, formats and codes, from RFC1533.
5047c08596SBrooks Davis  *
5147c08596SBrooks Davis  * Format codes:
5247c08596SBrooks Davis  *
5347c08596SBrooks Davis  * e - end of data
5447c08596SBrooks Davis  * I - IP address
5547c08596SBrooks Davis  * l - 32-bit signed integer
5647c08596SBrooks Davis  * L - 32-bit unsigned integer
5747c08596SBrooks Davis  * s - 16-bit signed integer
5847c08596SBrooks Davis  * S - 16-bit unsigned integer
5947c08596SBrooks Davis  * b - 8-bit signed integer
6047c08596SBrooks Davis  * B - 8-bit unsigned integer
6147c08596SBrooks Davis  * t - ASCII text
6247c08596SBrooks Davis  * f - flag (true or false)
6347c08596SBrooks Davis  * A - array of whatever precedes (e.g., IA means array of IP addresses)
6447c08596SBrooks Davis  */
6547c08596SBrooks Davis 
6647c08596SBrooks Davis struct universe dhcp_universe;
6747c08596SBrooks Davis struct option dhcp_options[256] = {
6847c08596SBrooks Davis 	{ "pad", "",					&dhcp_universe, 0 },
6947c08596SBrooks Davis 	{ "subnet-mask", "I",				&dhcp_universe, 1 },
7047c08596SBrooks Davis 	{ "time-offset", "l",				&dhcp_universe, 2 },
7147c08596SBrooks Davis 	{ "routers", "IA",				&dhcp_universe, 3 },
7247c08596SBrooks Davis 	{ "time-servers", "IA",				&dhcp_universe, 4 },
7347c08596SBrooks Davis 	{ "ien116-name-servers", "IA",			&dhcp_universe, 5 },
7447c08596SBrooks Davis 	{ "domain-name-servers", "IA",			&dhcp_universe, 6 },
7547c08596SBrooks Davis 	{ "log-servers", "IA",				&dhcp_universe, 7 },
7647c08596SBrooks Davis 	{ "cookie-servers", "IA",			&dhcp_universe, 8 },
7747c08596SBrooks Davis 	{ "lpr-servers", "IA",				&dhcp_universe, 9 },
7847c08596SBrooks Davis 	{ "impress-servers", "IA",			&dhcp_universe, 10 },
7947c08596SBrooks Davis 	{ "resource-location-servers", "IA",		&dhcp_universe, 11 },
80a65d8df9SBrooks Davis 	{ "host-name", "t",				&dhcp_universe, 12 },
8147c08596SBrooks Davis 	{ "boot-size", "S",				&dhcp_universe, 13 },
8247c08596SBrooks Davis 	{ "merit-dump", "t",				&dhcp_universe, 14 },
8347c08596SBrooks Davis 	{ "domain-name", "t",				&dhcp_universe, 15 },
8447c08596SBrooks Davis 	{ "swap-server", "I",				&dhcp_universe, 16 },
8547c08596SBrooks Davis 	{ "root-path", "t",				&dhcp_universe, 17 },
8647c08596SBrooks Davis 	{ "extensions-path", "t",			&dhcp_universe, 18 },
8747c08596SBrooks Davis 	{ "ip-forwarding", "f",				&dhcp_universe, 19 },
8847c08596SBrooks Davis 	{ "non-local-source-routing", "f",		&dhcp_universe, 20 },
8947c08596SBrooks Davis 	{ "policy-filter", "IIA",			&dhcp_universe, 21 },
9047c08596SBrooks Davis 	{ "max-dgram-reassembly", "S",			&dhcp_universe, 22 },
9147c08596SBrooks Davis 	{ "default-ip-ttl", "B",			&dhcp_universe, 23 },
9247c08596SBrooks Davis 	{ "path-mtu-aging-timeout", "L",		&dhcp_universe, 24 },
9347c08596SBrooks Davis 	{ "path-mtu-plateau-table", "SA",		&dhcp_universe, 25 },
9447c08596SBrooks Davis 	{ "interface-mtu", "S",				&dhcp_universe, 26 },
9547c08596SBrooks Davis 	{ "all-subnets-local", "f",			&dhcp_universe, 27 },
9647c08596SBrooks Davis 	{ "broadcast-address", "I",			&dhcp_universe, 28 },
9747c08596SBrooks Davis 	{ "perform-mask-discovery", "f",		&dhcp_universe, 29 },
9847c08596SBrooks Davis 	{ "mask-supplier", "f",				&dhcp_universe, 30 },
9947c08596SBrooks Davis 	{ "router-discovery", "f",			&dhcp_universe, 31 },
10047c08596SBrooks Davis 	{ "router-solicitation-address", "I",		&dhcp_universe, 32 },
10147c08596SBrooks Davis 	{ "static-routes", "IIA",			&dhcp_universe, 33 },
10247c08596SBrooks Davis 	{ "trailer-encapsulation", "f",			&dhcp_universe, 34 },
10347c08596SBrooks Davis 	{ "arp-cache-timeout", "L",			&dhcp_universe, 35 },
10447c08596SBrooks Davis 	{ "ieee802-3-encapsulation", "f",		&dhcp_universe, 36 },
10547c08596SBrooks Davis 	{ "default-tcp-ttl", "B",			&dhcp_universe, 37 },
10647c08596SBrooks Davis 	{ "tcp-keepalive-interval", "L",		&dhcp_universe, 38 },
10747c08596SBrooks Davis 	{ "tcp-keepalive-garbage", "f",			&dhcp_universe, 39 },
10847c08596SBrooks Davis 	{ "nis-domain", "t",				&dhcp_universe, 40 },
10947c08596SBrooks Davis 	{ "nis-servers", "IA",				&dhcp_universe, 41 },
11047c08596SBrooks Davis 	{ "ntp-servers", "IA",				&dhcp_universe, 42 },
11147c08596SBrooks Davis 	{ "vendor-encapsulated-options", "X",		&dhcp_universe, 43 },
11247c08596SBrooks Davis 	{ "netbios-name-servers", "IA",			&dhcp_universe, 44 },
11347c08596SBrooks Davis 	{ "netbios-dd-server", "IA",			&dhcp_universe, 45 },
11447c08596SBrooks Davis 	{ "netbios-node-type", "B",			&dhcp_universe, 46 },
11547c08596SBrooks Davis 	{ "netbios-scope", "t",				&dhcp_universe, 47 },
11647c08596SBrooks Davis 	{ "font-servers", "IA",				&dhcp_universe, 48 },
11747c08596SBrooks Davis 	{ "x-display-manager", "IA",			&dhcp_universe, 49 },
11847c08596SBrooks Davis 	{ "dhcp-requested-address", "I",		&dhcp_universe, 50 },
11947c08596SBrooks Davis 	{ "dhcp-lease-time", "L",			&dhcp_universe, 51 },
12047c08596SBrooks Davis 	{ "dhcp-option-overload", "B",			&dhcp_universe, 52 },
12147c08596SBrooks Davis 	{ "dhcp-message-type", "B",			&dhcp_universe, 53 },
12247c08596SBrooks Davis 	{ "dhcp-server-identifier", "I",		&dhcp_universe, 54 },
12347c08596SBrooks Davis 	{ "dhcp-parameter-request-list", "BA",		&dhcp_universe, 55 },
12447c08596SBrooks Davis 	{ "dhcp-message", "t",				&dhcp_universe, 56 },
12547c08596SBrooks Davis 	{ "dhcp-max-message-size", "S",			&dhcp_universe, 57 },
12647c08596SBrooks Davis 	{ "dhcp-renewal-time", "L",			&dhcp_universe, 58 },
12747c08596SBrooks Davis 	{ "dhcp-rebinding-time", "L",			&dhcp_universe, 59 },
12847c08596SBrooks Davis 	{ "dhcp-class-identifier", "t",			&dhcp_universe, 60 },
12947c08596SBrooks Davis 	{ "dhcp-client-identifier", "X",		&dhcp_universe, 61 },
13047c08596SBrooks Davis 	{ "option-62", "X",				&dhcp_universe, 62 },
13147c08596SBrooks Davis 	{ "option-63", "X",				&dhcp_universe, 63 },
13247c08596SBrooks Davis 	{ "nisplus-domain", "t",			&dhcp_universe, 64 },
13347c08596SBrooks Davis 	{ "nisplus-servers", "IA",			&dhcp_universe, 65 },
13447c08596SBrooks Davis 	{ "tftp-server-name", "t",			&dhcp_universe, 66 },
13547c08596SBrooks Davis 	{ "bootfile-name", "t",				&dhcp_universe, 67 },
13647c08596SBrooks Davis 	{ "mobile-ip-home-agent", "IA",			&dhcp_universe, 68 },
13747c08596SBrooks Davis 	{ "smtp-server", "IA",				&dhcp_universe, 69 },
13847c08596SBrooks Davis 	{ "pop-server", "IA",				&dhcp_universe, 70 },
13947c08596SBrooks Davis 	{ "nntp-server", "IA",				&dhcp_universe, 71 },
14047c08596SBrooks Davis 	{ "www-server", "IA",				&dhcp_universe, 72 },
14147c08596SBrooks Davis 	{ "finger-server", "IA",			&dhcp_universe, 73 },
14247c08596SBrooks Davis 	{ "irc-server", "IA",				&dhcp_universe, 74 },
14347c08596SBrooks Davis 	{ "streettalk-server", "IA",			&dhcp_universe, 75 },
14447c08596SBrooks Davis 	{ "streettalk-directory-assistance-server", "IA", &dhcp_universe, 76 },
14547c08596SBrooks Davis 	{ "user-class", "t",				&dhcp_universe, 77 },
14647c08596SBrooks Davis 	{ "option-78", "X",				&dhcp_universe, 78 },
14747c08596SBrooks Davis 	{ "option-79", "X",				&dhcp_universe, 79 },
14847c08596SBrooks Davis 	{ "option-80", "X",				&dhcp_universe, 80 },
14947c08596SBrooks Davis 	{ "option-81", "X",				&dhcp_universe, 81 },
15047c08596SBrooks Davis 	{ "option-82", "X",				&dhcp_universe, 82 },
15147c08596SBrooks Davis 	{ "option-83", "X",				&dhcp_universe, 83 },
15247c08596SBrooks Davis 	{ "option-84", "X",				&dhcp_universe, 84 },
15347c08596SBrooks Davis 	{ "nds-servers", "IA",				&dhcp_universe, 85 },
15447c08596SBrooks Davis 	{ "nds-tree-name", "X",				&dhcp_universe, 86 },
15547c08596SBrooks Davis 	{ "nds-context", "X",				&dhcp_universe, 87 },
15647c08596SBrooks Davis 	{ "option-88", "X",				&dhcp_universe, 88 },
15747c08596SBrooks Davis 	{ "option-89", "X",				&dhcp_universe, 89 },
15847c08596SBrooks Davis 	{ "option-90", "X",				&dhcp_universe, 90 },
15947c08596SBrooks Davis 	{ "option-91", "X",				&dhcp_universe, 91 },
16047c08596SBrooks Davis 	{ "option-92", "X",				&dhcp_universe, 92 },
16147c08596SBrooks Davis 	{ "option-93", "X",				&dhcp_universe, 93 },
16247c08596SBrooks Davis 	{ "option-94", "X",				&dhcp_universe, 94 },
16347c08596SBrooks Davis 	{ "option-95", "X",				&dhcp_universe, 95 },
16447c08596SBrooks Davis 	{ "option-96", "X",				&dhcp_universe, 96 },
16547c08596SBrooks Davis 	{ "option-97", "X",				&dhcp_universe, 97 },
16647c08596SBrooks Davis 	{ "option-98", "X",				&dhcp_universe, 98 },
16747c08596SBrooks Davis 	{ "option-99", "X",				&dhcp_universe, 99 },
16847c08596SBrooks Davis 	{ "option-100", "X",				&dhcp_universe, 100 },
16947c08596SBrooks Davis 	{ "option-101", "X",				&dhcp_universe, 101 },
17047c08596SBrooks Davis 	{ "option-102", "X",				&dhcp_universe, 102 },
17147c08596SBrooks Davis 	{ "option-103", "X",				&dhcp_universe, 103 },
17247c08596SBrooks Davis 	{ "option-104", "X",				&dhcp_universe, 104 },
17347c08596SBrooks Davis 	{ "option-105", "X",				&dhcp_universe, 105 },
17447c08596SBrooks Davis 	{ "option-106", "X",				&dhcp_universe, 106 },
17547c08596SBrooks Davis 	{ "option-107", "X",				&dhcp_universe, 107 },
17647c08596SBrooks Davis 	{ "option-108", "X",				&dhcp_universe, 108 },
17747c08596SBrooks Davis 	{ "option-109", "X",				&dhcp_universe, 109 },
17847c08596SBrooks Davis 	{ "option-110", "X",				&dhcp_universe, 110 },
17947c08596SBrooks Davis 	{ "option-111", "X",				&dhcp_universe, 111 },
18047c08596SBrooks Davis 	{ "option-112", "X",				&dhcp_universe, 112 },
18147c08596SBrooks Davis 	{ "option-113", "X",				&dhcp_universe, 113 },
182*130cfcf3SDave Cottlehuber 	{ "url", "t",					&dhcp_universe, 114 },
18347c08596SBrooks Davis 	{ "option-115", "X",				&dhcp_universe, 115 },
18447c08596SBrooks Davis 	{ "option-116", "X",				&dhcp_universe, 116 },
18547c08596SBrooks Davis 	{ "option-117", "X",				&dhcp_universe, 117 },
18647c08596SBrooks Davis 	{ "option-118", "X",				&dhcp_universe, 118 },
187409139f0SJean-Sébastien Pédron 	{ "domain-search", "t",				&dhcp_universe, 119 },
18847c08596SBrooks Davis 	{ "option-120", "X",				&dhcp_universe, 120 },
1892fcc7370SEd Maste 	{ "classless-routes", "BA",			&dhcp_universe, 121 },
19047c08596SBrooks Davis 	{ "option-122", "X",				&dhcp_universe, 122 },
19147c08596SBrooks Davis 	{ "option-123", "X",				&dhcp_universe, 123 },
19247c08596SBrooks Davis 	{ "option-124", "X",				&dhcp_universe, 124 },
19347c08596SBrooks Davis 	{ "option-125", "X",				&dhcp_universe, 125 },
19447c08596SBrooks Davis 	{ "option-126", "X",				&dhcp_universe, 126 },
19547c08596SBrooks Davis 	{ "option-127", "X",				&dhcp_universe, 127 },
19647c08596SBrooks Davis 	{ "option-128", "X",				&dhcp_universe, 128 },
19747c08596SBrooks Davis 	{ "option-129", "X",				&dhcp_universe, 129 },
19847c08596SBrooks Davis 	{ "option-130", "X",				&dhcp_universe, 130 },
19947c08596SBrooks Davis 	{ "option-131", "X",				&dhcp_universe, 131 },
20047c08596SBrooks Davis 	{ "option-132", "X",				&dhcp_universe, 132 },
20147c08596SBrooks Davis 	{ "option-133", "X",				&dhcp_universe, 133 },
20247c08596SBrooks Davis 	{ "option-134", "X",				&dhcp_universe, 134 },
20347c08596SBrooks Davis 	{ "option-135", "X",				&dhcp_universe, 135 },
20447c08596SBrooks Davis 	{ "option-136", "X",				&dhcp_universe, 136 },
20547c08596SBrooks Davis 	{ "option-137", "X",				&dhcp_universe, 137 },
20647c08596SBrooks Davis 	{ "option-138", "X",				&dhcp_universe, 138 },
20747c08596SBrooks Davis 	{ "option-139", "X",				&dhcp_universe, 139 },
20847c08596SBrooks Davis 	{ "option-140", "X",				&dhcp_universe, 140 },
20947c08596SBrooks Davis 	{ "option-141", "X",				&dhcp_universe, 141 },
21047c08596SBrooks Davis 	{ "option-142", "X",				&dhcp_universe, 142 },
21147c08596SBrooks Davis 	{ "option-143", "X",				&dhcp_universe, 143 },
21247c08596SBrooks Davis 	{ "option-144", "X",				&dhcp_universe, 144 },
21347c08596SBrooks Davis 	{ "option-145", "X",				&dhcp_universe, 145 },
21447c08596SBrooks Davis 	{ "option-146", "X",				&dhcp_universe, 146 },
21547c08596SBrooks Davis 	{ "option-147", "X",				&dhcp_universe, 147 },
21647c08596SBrooks Davis 	{ "option-148", "X",				&dhcp_universe, 148 },
21747c08596SBrooks Davis 	{ "option-149", "X",				&dhcp_universe, 149 },
21847c08596SBrooks Davis 	{ "option-150", "X",				&dhcp_universe, 150 },
21947c08596SBrooks Davis 	{ "option-151", "X",				&dhcp_universe, 151 },
22047c08596SBrooks Davis 	{ "option-152", "X",				&dhcp_universe, 152 },
22147c08596SBrooks Davis 	{ "option-153", "X",				&dhcp_universe, 153 },
22247c08596SBrooks Davis 	{ "option-154", "X",				&dhcp_universe, 154 },
22347c08596SBrooks Davis 	{ "option-155", "X",				&dhcp_universe, 155 },
22447c08596SBrooks Davis 	{ "option-156", "X",				&dhcp_universe, 156 },
22547c08596SBrooks Davis 	{ "option-157", "X",				&dhcp_universe, 157 },
22647c08596SBrooks Davis 	{ "option-158", "X",				&dhcp_universe, 158 },
22747c08596SBrooks Davis 	{ "option-159", "X",				&dhcp_universe, 159 },
22847c08596SBrooks Davis 	{ "option-160", "X",				&dhcp_universe, 160 },
22947c08596SBrooks Davis 	{ "option-161", "X",				&dhcp_universe, 161 },
23047c08596SBrooks Davis 	{ "option-162", "X",				&dhcp_universe, 162 },
23147c08596SBrooks Davis 	{ "option-163", "X",				&dhcp_universe, 163 },
23247c08596SBrooks Davis 	{ "option-164", "X",				&dhcp_universe, 164 },
23347c08596SBrooks Davis 	{ "option-165", "X",				&dhcp_universe, 165 },
23447c08596SBrooks Davis 	{ "option-166", "X",				&dhcp_universe, 166 },
23547c08596SBrooks Davis 	{ "option-167", "X",				&dhcp_universe, 167 },
23647c08596SBrooks Davis 	{ "option-168", "X",				&dhcp_universe, 168 },
23747c08596SBrooks Davis 	{ "option-169", "X",				&dhcp_universe, 169 },
23847c08596SBrooks Davis 	{ "option-170", "X",				&dhcp_universe, 170 },
23947c08596SBrooks Davis 	{ "option-171", "X",				&dhcp_universe, 171 },
24047c08596SBrooks Davis 	{ "option-172", "X",				&dhcp_universe, 172 },
24147c08596SBrooks Davis 	{ "option-173", "X",				&dhcp_universe, 173 },
24247c08596SBrooks Davis 	{ "option-174", "X",				&dhcp_universe, 174 },
24347c08596SBrooks Davis 	{ "option-175", "X",				&dhcp_universe, 175 },
24447c08596SBrooks Davis 	{ "option-176", "X",				&dhcp_universe, 176 },
24547c08596SBrooks Davis 	{ "option-177", "X",				&dhcp_universe, 177 },
24647c08596SBrooks Davis 	{ "option-178", "X",				&dhcp_universe, 178 },
24747c08596SBrooks Davis 	{ "option-179", "X",				&dhcp_universe, 179 },
24847c08596SBrooks Davis 	{ "option-180", "X",				&dhcp_universe, 180 },
24947c08596SBrooks Davis 	{ "option-181", "X",				&dhcp_universe, 181 },
25047c08596SBrooks Davis 	{ "option-182", "X",				&dhcp_universe, 182 },
25147c08596SBrooks Davis 	{ "option-183", "X",				&dhcp_universe, 183 },
25247c08596SBrooks Davis 	{ "option-184", "X",				&dhcp_universe, 184 },
25347c08596SBrooks Davis 	{ "option-185", "X",				&dhcp_universe, 185 },
25447c08596SBrooks Davis 	{ "option-186", "X",				&dhcp_universe, 186 },
25547c08596SBrooks Davis 	{ "option-187", "X",				&dhcp_universe, 187 },
25647c08596SBrooks Davis 	{ "option-188", "X",				&dhcp_universe, 188 },
25747c08596SBrooks Davis 	{ "option-189", "X",				&dhcp_universe, 189 },
25847c08596SBrooks Davis 	{ "option-190", "X",				&dhcp_universe, 190 },
25947c08596SBrooks Davis 	{ "option-191", "X",				&dhcp_universe, 191 },
26047c08596SBrooks Davis 	{ "option-192", "X",				&dhcp_universe, 192 },
26147c08596SBrooks Davis 	{ "option-193", "X",				&dhcp_universe, 193 },
26247c08596SBrooks Davis 	{ "option-194", "X",				&dhcp_universe, 194 },
26347c08596SBrooks Davis 	{ "option-195", "X",				&dhcp_universe, 195 },
26447c08596SBrooks Davis 	{ "option-196", "X",				&dhcp_universe, 196 },
26547c08596SBrooks Davis 	{ "option-197", "X",				&dhcp_universe, 197 },
26647c08596SBrooks Davis 	{ "option-198", "X",				&dhcp_universe, 198 },
26747c08596SBrooks Davis 	{ "option-199", "X",				&dhcp_universe, 199 },
26847c08596SBrooks Davis 	{ "option-200", "X",				&dhcp_universe, 200 },
26947c08596SBrooks Davis 	{ "option-201", "X",				&dhcp_universe, 201 },
27047c08596SBrooks Davis 	{ "option-202", "X",				&dhcp_universe, 202 },
27147c08596SBrooks Davis 	{ "option-203", "X",				&dhcp_universe, 203 },
27247c08596SBrooks Davis 	{ "option-204", "X",				&dhcp_universe, 204 },
27347c08596SBrooks Davis 	{ "option-205", "X",				&dhcp_universe, 205 },
27447c08596SBrooks Davis 	{ "option-206", "X",				&dhcp_universe, 206 },
27547c08596SBrooks Davis 	{ "option-207", "X",				&dhcp_universe, 207 },
27647c08596SBrooks Davis 	{ "option-208", "X",				&dhcp_universe, 208 },
27747c08596SBrooks Davis 	{ "option-209", "X",				&dhcp_universe, 209 },
27847c08596SBrooks Davis 	{ "option-210", "X",				&dhcp_universe, 210 },
27947c08596SBrooks Davis 	{ "option-211", "X",				&dhcp_universe, 211 },
28047c08596SBrooks Davis 	{ "option-212", "X",				&dhcp_universe, 212 },
28147c08596SBrooks Davis 	{ "option-213", "X",				&dhcp_universe, 213 },
28247c08596SBrooks Davis 	{ "option-214", "X",				&dhcp_universe, 214 },
28347c08596SBrooks Davis 	{ "option-215", "X",				&dhcp_universe, 215 },
28447c08596SBrooks Davis 	{ "option-216", "X",				&dhcp_universe, 216 },
28547c08596SBrooks Davis 	{ "option-217", "X",				&dhcp_universe, 217 },
28647c08596SBrooks Davis 	{ "option-218", "X",				&dhcp_universe, 218 },
28747c08596SBrooks Davis 	{ "option-219", "X",				&dhcp_universe, 219 },
28847c08596SBrooks Davis 	{ "option-220", "X",				&dhcp_universe, 220 },
28947c08596SBrooks Davis 	{ "option-221", "X",				&dhcp_universe, 221 },
29047c08596SBrooks Davis 	{ "option-222", "X",				&dhcp_universe, 222 },
29147c08596SBrooks Davis 	{ "option-223", "X",				&dhcp_universe, 223 },
29247c08596SBrooks Davis 	{ "option-224", "X",				&dhcp_universe, 224 },
29347c08596SBrooks Davis 	{ "option-225", "X",				&dhcp_universe, 225 },
29447c08596SBrooks Davis 	{ "option-226", "X",				&dhcp_universe, 226 },
29547c08596SBrooks Davis 	{ "option-227", "X",				&dhcp_universe, 227 },
29647c08596SBrooks Davis 	{ "option-228", "X",				&dhcp_universe, 228 },
29747c08596SBrooks Davis 	{ "option-229", "X",				&dhcp_universe, 229 },
29847c08596SBrooks Davis 	{ "option-230", "X",				&dhcp_universe, 230 },
29947c08596SBrooks Davis 	{ "option-231", "X",				&dhcp_universe, 231 },
30047c08596SBrooks Davis 	{ "option-232", "X",				&dhcp_universe, 232 },
30147c08596SBrooks Davis 	{ "option-233", "X",				&dhcp_universe, 233 },
30247c08596SBrooks Davis 	{ "option-234", "X",				&dhcp_universe, 234 },
30347c08596SBrooks Davis 	{ "option-235", "X",				&dhcp_universe, 235 },
30447c08596SBrooks Davis 	{ "option-236", "X",				&dhcp_universe, 236 },
30547c08596SBrooks Davis 	{ "option-237", "X",				&dhcp_universe, 237 },
30647c08596SBrooks Davis 	{ "option-238", "X",				&dhcp_universe, 238 },
30747c08596SBrooks Davis 	{ "option-239", "X",				&dhcp_universe, 239 },
30847c08596SBrooks Davis 	{ "option-240", "X",				&dhcp_universe, 240 },
30947c08596SBrooks Davis 	{ "option-241", "X",				&dhcp_universe, 241 },
31047c08596SBrooks Davis 	{ "option-242", "X",				&dhcp_universe, 242 },
31147c08596SBrooks Davis 	{ "option-243", "X",				&dhcp_universe, 243 },
31247c08596SBrooks Davis 	{ "option-244", "X",				&dhcp_universe, 244 },
31347c08596SBrooks Davis 	{ "option-245", "X",				&dhcp_universe, 245 },
31447c08596SBrooks Davis 	{ "option-246", "X",				&dhcp_universe, 246 },
31547c08596SBrooks Davis 	{ "option-247", "X",				&dhcp_universe, 247 },
31647c08596SBrooks Davis 	{ "option-248", "X",				&dhcp_universe, 248 },
31747c08596SBrooks Davis 	{ "option-249", "X",				&dhcp_universe, 249 },
31847c08596SBrooks Davis 	{ "option-250", "X",				&dhcp_universe, 250 },
31947c08596SBrooks Davis 	{ "option-251", "X",				&dhcp_universe, 251 },
32047c08596SBrooks Davis 	{ "option-252", "X",				&dhcp_universe, 252 },
32147c08596SBrooks Davis 	{ "option-253", "X",				&dhcp_universe, 253 },
32247c08596SBrooks Davis 	{ "option-254", "X",				&dhcp_universe, 254 },
32347c08596SBrooks Davis 	{ "option-end", "e",				&dhcp_universe, 255 },
32447c08596SBrooks Davis };
32547c08596SBrooks Davis 
32647c08596SBrooks Davis /*
32747c08596SBrooks Davis  * Default dhcp option priority list (this is ad hoc and should not be
32847c08596SBrooks Davis  * mistaken for a carefully crafted and optimized list).
32947c08596SBrooks Davis  */
33047c08596SBrooks Davis unsigned char dhcp_option_default_priority_list[] = {
33147c08596SBrooks Davis 	DHO_DHCP_REQUESTED_ADDRESS,
33247c08596SBrooks Davis 	DHO_DHCP_OPTION_OVERLOAD,
33347c08596SBrooks Davis 	DHO_DHCP_MAX_MESSAGE_SIZE,
33447c08596SBrooks Davis 	DHO_DHCP_RENEWAL_TIME,
33547c08596SBrooks Davis 	DHO_DHCP_REBINDING_TIME,
33647c08596SBrooks Davis 	DHO_DHCP_CLASS_IDENTIFIER,
33747c08596SBrooks Davis 	DHO_DHCP_CLIENT_IDENTIFIER,
33847c08596SBrooks Davis 	DHO_SUBNET_MASK,
33947c08596SBrooks Davis 	DHO_TIME_OFFSET,
3402fcc7370SEd Maste 	DHO_CLASSLESS_ROUTES,
34147c08596SBrooks Davis 	DHO_ROUTERS,
34247c08596SBrooks Davis 	DHO_TIME_SERVERS,
34347c08596SBrooks Davis 	DHO_NAME_SERVERS,
34447c08596SBrooks Davis 	DHO_DOMAIN_NAME_SERVERS,
34547c08596SBrooks Davis 	DHO_HOST_NAME,
34647c08596SBrooks Davis 	DHO_LOG_SERVERS,
34747c08596SBrooks Davis 	DHO_COOKIE_SERVERS,
34847c08596SBrooks Davis 	DHO_LPR_SERVERS,
34947c08596SBrooks Davis 	DHO_IMPRESS_SERVERS,
35047c08596SBrooks Davis 	DHO_RESOURCE_LOCATION_SERVERS,
35147c08596SBrooks Davis 	DHO_HOST_NAME,
35247c08596SBrooks Davis 	DHO_BOOT_SIZE,
35347c08596SBrooks Davis 	DHO_MERIT_DUMP,
35447c08596SBrooks Davis 	DHO_DOMAIN_NAME,
35547c08596SBrooks Davis 	DHO_SWAP_SERVER,
35647c08596SBrooks Davis 	DHO_ROOT_PATH,
35747c08596SBrooks Davis 	DHO_EXTENSIONS_PATH,
35847c08596SBrooks Davis 	DHO_IP_FORWARDING,
35947c08596SBrooks Davis 	DHO_NON_LOCAL_SOURCE_ROUTING,
36047c08596SBrooks Davis 	DHO_POLICY_FILTER,
36147c08596SBrooks Davis 	DHO_MAX_DGRAM_REASSEMBLY,
36247c08596SBrooks Davis 	DHO_DEFAULT_IP_TTL,
36347c08596SBrooks Davis 	DHO_PATH_MTU_AGING_TIMEOUT,
36447c08596SBrooks Davis 	DHO_PATH_MTU_PLATEAU_TABLE,
36547c08596SBrooks Davis 	DHO_INTERFACE_MTU,
36647c08596SBrooks Davis 	DHO_ALL_SUBNETS_LOCAL,
36747c08596SBrooks Davis 	DHO_BROADCAST_ADDRESS,
36847c08596SBrooks Davis 	DHO_PERFORM_MASK_DISCOVERY,
36947c08596SBrooks Davis 	DHO_MASK_SUPPLIER,
37047c08596SBrooks Davis 	DHO_ROUTER_DISCOVERY,
37147c08596SBrooks Davis 	DHO_ROUTER_SOLICITATION_ADDRESS,
37247c08596SBrooks Davis 	DHO_STATIC_ROUTES,
37347c08596SBrooks Davis 	DHO_TRAILER_ENCAPSULATION,
37447c08596SBrooks Davis 	DHO_ARP_CACHE_TIMEOUT,
37547c08596SBrooks Davis 	DHO_IEEE802_3_ENCAPSULATION,
37647c08596SBrooks Davis 	DHO_DEFAULT_TCP_TTL,
37747c08596SBrooks Davis 	DHO_TCP_KEEPALIVE_INTERVAL,
37847c08596SBrooks Davis 	DHO_TCP_KEEPALIVE_GARBAGE,
37947c08596SBrooks Davis 	DHO_NIS_DOMAIN,
38047c08596SBrooks Davis 	DHO_NIS_SERVERS,
38147c08596SBrooks Davis 	DHO_NTP_SERVERS,
38247c08596SBrooks Davis 	DHO_VENDOR_ENCAPSULATED_OPTIONS,
38347c08596SBrooks Davis 	DHO_NETBIOS_NAME_SERVERS,
38447c08596SBrooks Davis 	DHO_NETBIOS_DD_SERVER,
38547c08596SBrooks Davis 	DHO_NETBIOS_NODE_TYPE,
38647c08596SBrooks Davis 	DHO_NETBIOS_SCOPE,
38747c08596SBrooks Davis 	DHO_FONT_SERVERS,
38847c08596SBrooks Davis 	DHO_X_DISPLAY_MANAGER,
38947c08596SBrooks Davis 	DHO_DHCP_PARAMETER_REQUEST_LIST,
39038e755fdSBrooks Davis 	DHO_NISPLUS_DOMAIN,
39138e755fdSBrooks Davis 	DHO_NISPLUS_SERVERS,
39238e755fdSBrooks Davis 	DHO_TFTP_SERVER_NAME,
39338e755fdSBrooks Davis 	DHO_BOOTFILE_NAME,
39438e755fdSBrooks Davis 	DHO_MOBILE_IP_HOME_AGENT,
39538e755fdSBrooks Davis 	DHO_SMTP_SERVER,
39638e755fdSBrooks Davis 	DHO_POP_SERVER,
39738e755fdSBrooks Davis 	DHO_NNTP_SERVER,
39838e755fdSBrooks Davis 	DHO_WWW_SERVER,
39938e755fdSBrooks Davis 	DHO_FINGER_SERVER,
40038e755fdSBrooks Davis 	DHO_IRC_SERVER,
40138e755fdSBrooks Davis 	DHO_STREETTALK_SERVER,
40238e755fdSBrooks Davis 	DHO_STREETTALK_DA_SERVER,
40385190f81SConrad Meyer 	DHO_DHCP_USER_CLASS_ID,
404409139f0SJean-Sébastien Pédron 	DHO_DOMAIN_SEARCH,
405*130cfcf3SDave Cottlehuber 	DHO_URL,
40647c08596SBrooks Davis 
40747c08596SBrooks Davis 	/* Presently-undefined options... */
40838e755fdSBrooks Davis 	62, 63, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
40938e755fdSBrooks Davis 	92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105,
410*130cfcf3SDave Cottlehuber 	106, 107, 108, 109, 110, 111, 112, 113,      115, 116, 117,
411409139f0SJean-Sébastien Pédron 	118,      120, 122, 123, 124, 125, 126, 127, 128, 129, 130,
41247c08596SBrooks Davis 	131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142,
41347c08596SBrooks Davis 	143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154,
41447c08596SBrooks Davis 	155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166,
41547c08596SBrooks Davis 	167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178,
41647c08596SBrooks Davis 	179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190,
41747c08596SBrooks Davis 	191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202,
41847c08596SBrooks Davis 	203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214,
41947c08596SBrooks Davis 	215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226,
42047c08596SBrooks Davis 	227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238,
42147c08596SBrooks Davis 	239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250,
42247c08596SBrooks Davis 	251, 252, 253, 254,
42347c08596SBrooks Davis };
42447c08596SBrooks Davis 
42547c08596SBrooks Davis int sizeof_dhcp_option_default_priority_list =
42647c08596SBrooks Davis 	sizeof(dhcp_option_default_priority_list);
42747c08596SBrooks Davis 
42847c08596SBrooks Davis struct hash_table universe_hash;
42947c08596SBrooks Davis 
43047c08596SBrooks Davis void
initialize_universes(void)43147c08596SBrooks Davis initialize_universes(void)
43247c08596SBrooks Davis {
43347c08596SBrooks Davis 	int i;
43447c08596SBrooks Davis 
43547c08596SBrooks Davis 	dhcp_universe.name = "dhcp";
43647c08596SBrooks Davis 	dhcp_universe.hash = new_hash();
43747c08596SBrooks Davis 	if (!dhcp_universe.hash)
43847c08596SBrooks Davis 		error("Can't allocate dhcp option hash table.");
43947c08596SBrooks Davis 	for (i = 0; i < 256; i++) {
44047c08596SBrooks Davis 		dhcp_universe.options[i] = &dhcp_options[i];
44147c08596SBrooks Davis 		add_hash(dhcp_universe.hash,
44279a1d195SAlan Somers 		    (const unsigned char *)dhcp_options[i].name, 0,
44347c08596SBrooks Davis 		    (unsigned char *)&dhcp_options[i]);
44447c08596SBrooks Davis 	}
44547c08596SBrooks Davis 	universe_hash.hash_count = DEFAULT_HASH_SIZE;
44647c08596SBrooks Davis 	add_hash(&universe_hash,
44779a1d195SAlan Somers 	    (const unsigned char *)dhcp_universe.name, 0,
44847c08596SBrooks Davis 	    (unsigned char *)&dhcp_universe);
44947c08596SBrooks Davis }
450