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