1 /* $NetBSD: dhctoken.h,v 1.3 2022/04/03 01:10:58 christos Exp $ */ 2 3 /* dhctoken.h 4 5 Tokens for config file lexer and parser. */ 6 7 /* 8 * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC") 9 * Copyright (c) 1996-2003 by Internet Software Consortium 10 * 11 * This Source Code Form is subject to the terms of the Mozilla Public 12 * License, v. 2.0. If a copy of the MPL was not distributed with this 13 * file, You can obtain one at http://mozilla.org/MPL/2.0/. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 16 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 17 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 18 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 21 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 * 23 * Internet Systems Consortium, Inc. 24 * PO Box 360 25 * Newmarket, NH 03857 USA 26 * <info@isc.org> 27 * https://www.isc.org/ 28 * 29 */ 30 31 /* 32 * The following tokens have been deprecated and aren't in use anymore. 33 * They have been left in place to avoid disturbing the code. 34 * DNS_UPDATE, DNS_DELETE, NS_UPDATE, UPDATED_DNS_RR 35 */ 36 enum dhcp_token { 37 SEMI = ';', 38 DOT = '.', 39 COLON = ':', 40 COMMA = ',', 41 SLASH = '/', 42 LBRACE = '{', 43 RBRACE = '}', 44 LBRACKET = '[', 45 RBRACKET = ']', 46 LPAREN = '(', 47 RPAREN = ')', 48 EQUAL = '=', 49 TILDE = '~', 50 BANG = '!', 51 PERCENT = '%', 52 PLUS = '+', 53 MINUS = '-', 54 ASTERISK = '*', 55 AMPERSAND = '&', 56 PIPE = '|', 57 CARET = '^', 58 ENDOFLINE = '\n', 59 QUESTIONMARK = '?', 60 61 HOST = 256, 62 FIRST_TOKEN = HOST, 63 HARDWARE = 257, 64 FILENAME = 258, 65 FIXED_ADDR = 259, 66 OPTION = 260, 67 ETHERNET = 261, 68 STRING = 262, 69 NUMBER = 263, 70 NUMBER_OR_NAME = 264, 71 NAME = 265, 72 TIMESTAMP = 266, 73 STARTS = 267, 74 ENDS = 268, 75 UID = 269, 76 CLASS = 270, 77 LEASE = 271, 78 RANGE = 272, 79 PACKET = 273, 80 CIADDR = 274, 81 YIADDR = 275, 82 SIADDR = 276, 83 GIADDR = 277, 84 SUBNET = 278, 85 NETMASK = 279, 86 DEFAULT_LEASE_TIME = 280, 87 MAX_LEASE_TIME = 281, 88 VENDOR_CLASS = 282, 89 USER_CLASS = 283, 90 SHARED_NETWORK = 284, 91 SERVER_NAME = 285, 92 DYNAMIC_BOOTP = 286, 93 SERVER_IDENTIFIER = 287, 94 DYNAMIC_BOOTP_LEASE_CUTOFF = 288, 95 DYNAMIC_BOOTP_LEASE_LENGTH = 289, 96 BOOT_UNKNOWN_CLIENTS = 290, 97 NEXT_SERVER = 291, 98 TOKEN_RING = 292, 99 GROUP = 293, 100 ONE_LEASE_PER_CLIENT = 294, 101 GET_LEASE_HOSTNAMES = 295, 102 USE_HOST_DECL_NAMES = 296, 103 SEND = 297, 104 CLIENT_IDENTIFIER = 298, 105 REQUEST = 299, 106 REQUIRE = 300, 107 TIMEOUT = 301, 108 RETRY = 302, 109 SELECT_TIMEOUT = 303, 110 SCRIPT = 304, 111 INTERFACE = 305, 112 RENEW = 306, 113 REBIND = 307, 114 EXPIRE = 308, 115 UNKNOWN_CLIENTS = 309, 116 ALLOW = 310, 117 DENY = 312, 118 BOOTING = 313, 119 DEFAULT = 314, 120 MEDIA = 315, 121 MEDIUM = 316, 122 ALIAS = 317, 123 REBOOT = 318, 124 TOKEN_ABANDONED = 319, 125 BACKOFF_CUTOFF = 320, 126 INITIAL_INTERVAL = 321, 127 NAMESERVER = 322, 128 DOMAIN = 323, 129 SEARCH = 324, 130 SUPERSEDE = 325, 131 APPEND = 326, 132 PREPEND = 327, 133 HOSTNAME = 328, 134 CLIENT_HOSTNAME = 329, 135 REJECT = 330, 136 USE_LEASE_ADDR_FOR_DEFAULT_ROUTE = 331, 137 MIN_LEASE_TIME = 332, 138 MIN_SECS = 333, 139 AND = 334, 140 OR = 335, 141 SUBSTRING = 337, 142 SUFFIX = 338, 143 CHECK = 339, 144 EXTRACT_INT = 340, 145 IF = 341, 146 TOKEN_ADD = 342, 147 BREAK = 343, 148 ELSE = 344, 149 ELSIF = 345, 150 SUBCLASS = 346, 151 MATCH = 347, 152 SPAWN = 348, 153 WITH = 349, 154 EXISTS = 350, 155 POOL = 351, 156 UNKNOWN = 352, 157 CLIENTS = 353, 158 KNOWN = 354, 159 AUTHENTICATED = 355, 160 UNAUTHENTICATED = 356, 161 ALL = 357, 162 DYNAMIC = 358, 163 MEMBERS = 359, 164 OF = 360, 165 PSEUDO = 361, 166 LIMIT = 362, 167 BILLING = 363, 168 PEER = 364, 169 FAILOVER = 365, 170 MY = 366, 171 PARTNER = 367, 172 PRIMARY = 368, 173 SECONDARY = 369, 174 IDENTIFIER = 370, 175 PORT = 371, 176 MAX_TRANSMIT_IDLE = 372, 177 MAX_RESPONSE_DELAY = 373, 178 PARTNER_DOWN = 374, 179 NORMAL = 375, 180 COMMUNICATIONS_INTERRUPTED = 376, 181 POTENTIAL_CONFLICT = 377, 182 RECOVER = 378, 183 TOKEN_FDDI = 379, 184 AUTHORITATIVE = 380, 185 TOKEN_NOT = 381, 186 AUTHENTICATION = 383, 187 IGNORE = 384, 188 ACCEPT = 385, 189 PREFER = 386, 190 DONT = 387, 191 CODE = 388, 192 ARRAY = 389, 193 BOOLEAN = 390, 194 INTEGER = 391, 195 SIGNED = 392, 196 UNSIGNED = 393, 197 IP_ADDRESS = 394, 198 TEXT = 395, 199 STRING_TOKEN = 396, 200 SPACE = 397, 201 CONCAT = 398, 202 ENCODE_INT = 399, 203 REVERSE = 402, 204 LEASED_ADDRESS = 403, 205 BINARY_TO_ASCII = 404, 206 PICK = 405, 207 CONFIG_OPTION = 406, 208 HOST_DECL_NAME = 407, 209 ON = 408, 210 EXPIRY = 409, 211 RELEASE = 410, 212 COMMIT = 411, 213 DNS_UPDATE = 412, 214 LEASE_TIME = 413, 215 STATIC = 414, 216 NEVER = 415, 217 INFINITE = 416, 218 TOKEN_DELETED = 417, 219 UPDATED_DNS_RR = 418, 220 DNS_DELETE = 419, 221 DUPLICATES = 420, 222 DECLINES = 421, 223 TSTP = 422, 224 TSFP = 423, 225 OWNER = 424, 226 IS = 425, 227 HBA = 426, 228 MAX_UNACKED_UPDATES = 427, 229 MCLT = 428, 230 SPLIT = 429, 231 AT = 430, 232 TOKEN_NO = 431, 233 TOKEN_DELETE = 432, 234 NS_UPDATE = 433, 235 UPDATE = 434, 236 SWITCH = 435, 237 CASE = 436, 238 NS_FORMERR = 437, 239 NS_NOERROR = 438, 240 NS_NOTAUTH = 439, 241 NS_NOTIMP = 440, 242 NS_NOTZONE = 441, 243 NS_NXDOMAIN = 442, 244 NS_NXRRSET = 443, 245 NS_REFUSED = 444, 246 NS_SERVFAIL = 445, 247 NS_YXDOMAIN = 446, 248 NS_YXRRSET = 447, 249 TOKEN_NULL = 448, 250 TOKEN_SET = 449, 251 DEFINED = 450, 252 UNSET = 451, 253 EVAL = 452, 254 LET = 453, 255 FUNCTION = 454, 256 DEFINE = 455, 257 ZONE = 456, 258 KEY = 457, 259 SECRET = 458, 260 ALGORITHM = 459, 261 LOAD = 460, 262 BALANCE = 461, 263 TOKEN_MAX = 462, 264 SECONDS = 463, 265 ADDRESS = 464, 266 RESOLUTION_INTERRUPTED = 465, 267 STATE = 466, 268 UNKNOWN_STATE = 567, 269 CLTT = 568, 270 INCLUDE = 569, 271 BINDING = 570, 272 TOKEN_FREE = 571, 273 TOKEN_ACTIVE = 572, 274 TOKEN_EXPIRED = 573, 275 TOKEN_RELEASED = 574, 276 TOKEN_RESET = 575, 277 TOKEN_BACKUP = 576, 278 TOKEN_RESERVED = 577, 279 TOKEN_BOOTP = 578, 280 TOKEN_NEXT = 579, 281 OMAPI = 580, 282 LOG = 581, 283 FATAL = 582, 284 ERROR = 583, 285 TOKEN_DEBUG = 584, 286 INFO = 585, 287 RETURN = 586, 288 PAUSED = 587, 289 RECOVER_DONE = 588, 290 SHUTDOWN = 589, 291 STARTUP = 590, 292 ENCAPSULATE = 591, 293 VENDOR = 592, 294 CLIENT_STATE = 593, 295 INIT_REBOOT = 594, 296 TOKEN_INIT = 595, 297 SELECT = 596, 298 BOUND = 597, 299 RENEWING = 598, 300 REBINDING = 599, 301 RECONTACT_INTERVAL = 600, 302 CLIENT_UPDATES = 601, 303 TOKEN_NEW = 601, 304 TRANSMISSION = 602, 305 TOKEN_CLOSE = 603, 306 TOKEN_CREATE = 604, 307 TOKEN_OPEN = 605, 308 TOKEN_HELP = 606, 309 END_OF_FILE = 607, 310 RECOVER_WAIT = 608, 311 TOKEN_SERVER = 609, 312 CONNECT = 610, 313 REMOVE = 611, 314 REFRESH = 612, 315 DOMAIN_NAME = 613, 316 DO_FORWARD_UPDATE = 614, 317 KNOWN_CLIENTS = 615, 318 ATSFP = 616, 319 LCASE = 617, 320 UCASE = 618, 321 WIDTH = 619, 322 LENGTH = 620, 323 HASH = 621, 324 SIZE = 622, 325 EPOCH = 623, 326 DB_TIME_FORMAT = 624, 327 LOCAL = 625, 328 MAX_LEASE_MISBALANCE = 626, 329 MAX_LEASE_OWNERSHIP = 627, 330 MAX_BALANCE = 628, 331 MIN_BALANCE = 629, 332 DOMAIN_LIST = 630, 333 LEASEQUERY = 631, 334 EXECUTE = 632, 335 IP6_ADDRESS = 633, 336 FIXED_ADDR6 = 634, 337 COMPRESSED = 635, 338 SUBNET6 = 636, 339 HOST_IDENTIFIER = 637, 340 IA_NA = 638, 341 IA_TA = 639, 342 IA_PD = 640, 343 IAADDR = 641, 344 IAPREFIX = 642, 345 LEASE6 = 643, 346 PREFERRED_LIFE = 644, 347 MAX_LIFE = 645, 348 DEFAULT_DUID = 646, 349 SERVER_DUID = 647, 350 LLT = 648, 351 EN = 649, 352 LL = 650, 353 RANGE6 = 651, 354 WHITESPACE = 652, 355 TOKEN_ALSO = 653, 356 AFTER = 654, 357 ZEROLEN = 655, 358 TEMPORARY = 656, 359 PREFIX6 = 657, 360 FIXED_PREFIX6 = 658, 361 ANYCAST_MAC = 659, 362 CONFLICT_DONE = 660, 363 AUTO_PARTNER_DOWN = 661, 364 GETHOSTNAME = 662, 365 REWIND = 663, 366 INITIAL_DELAY = 664, 367 GETHOSTBYNAME = 665, 368 PRIMARY6 = 666, 369 SECONDARY6 = 667, 370 TOKEN_INFINIBAND = 668, 371 POOL6 = 669, 372 V6RELAY = 670, 373 V6RELOPT = 671, 374 PARSE_VENDOR_OPT = 672, 375 AUTHORING_BYTE_ORDER = 673, 376 TOKEN_LITTLE_ENDIAN = 674, 377 TOKEN_BIG_ENDIAN = 675, 378 LEASE_ID_FORMAT = 676, 379 TOKEN_HEX = 677, 380 TOKEN_OCTAL = 678, 381 KEY_ALGORITHM = 679, 382 DISCONNECT = 680 383 }; 384 385 #define is_identifier(x) ((x) >= FIRST_TOKEN && \ 386 (x) != STRING && \ 387 (x) != NUMBER && \ 388 (x) != END_OF_FILE) 389