1*13df4856Schristos /* $NetBSD: dhctoken.h,v 1.3 2022/04/03 01:10:58 christos Exp $ */ 23965be93Schristos 33965be93Schristos /* dhctoken.h 43965be93Schristos 53965be93Schristos Tokens for config file lexer and parser. */ 63965be93Schristos 73965be93Schristos /* 8*13df4856Schristos * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC") 93965be93Schristos * Copyright (c) 1996-2003 by Internet Software Consortium 103965be93Schristos * 113965be93Schristos * This Source Code Form is subject to the terms of the Mozilla Public 123965be93Schristos * License, v. 2.0. If a copy of the MPL was not distributed with this 133965be93Schristos * file, You can obtain one at http://mozilla.org/MPL/2.0/. 143965be93Schristos * 153965be93Schristos * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 163965be93Schristos * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 173965be93Schristos * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 183965be93Schristos * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 193965be93Schristos * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 203965be93Schristos * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 213965be93Schristos * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 223965be93Schristos * 233965be93Schristos * Internet Systems Consortium, Inc. 24*13df4856Schristos * PO Box 360 25*13df4856Schristos * Newmarket, NH 03857 USA 263965be93Schristos * <info@isc.org> 273965be93Schristos * https://www.isc.org/ 283965be93Schristos * 293965be93Schristos */ 303965be93Schristos 313965be93Schristos /* 323965be93Schristos * The following tokens have been deprecated and aren't in use anymore. 333965be93Schristos * They have been left in place to avoid disturbing the code. 343965be93Schristos * DNS_UPDATE, DNS_DELETE, NS_UPDATE, UPDATED_DNS_RR 353965be93Schristos */ 363965be93Schristos enum dhcp_token { 373965be93Schristos SEMI = ';', 383965be93Schristos DOT = '.', 393965be93Schristos COLON = ':', 403965be93Schristos COMMA = ',', 413965be93Schristos SLASH = '/', 423965be93Schristos LBRACE = '{', 433965be93Schristos RBRACE = '}', 443965be93Schristos LBRACKET = '[', 453965be93Schristos RBRACKET = ']', 463965be93Schristos LPAREN = '(', 473965be93Schristos RPAREN = ')', 483965be93Schristos EQUAL = '=', 493965be93Schristos TILDE = '~', 503965be93Schristos BANG = '!', 513965be93Schristos PERCENT = '%', 523965be93Schristos PLUS = '+', 533965be93Schristos MINUS = '-', 543965be93Schristos ASTERISK = '*', 553965be93Schristos AMPERSAND = '&', 563965be93Schristos PIPE = '|', 573965be93Schristos CARET = '^', 583965be93Schristos ENDOFLINE = '\n', 593965be93Schristos QUESTIONMARK = '?', 603965be93Schristos 613965be93Schristos HOST = 256, 623965be93Schristos FIRST_TOKEN = HOST, 633965be93Schristos HARDWARE = 257, 643965be93Schristos FILENAME = 258, 653965be93Schristos FIXED_ADDR = 259, 663965be93Schristos OPTION = 260, 673965be93Schristos ETHERNET = 261, 683965be93Schristos STRING = 262, 693965be93Schristos NUMBER = 263, 703965be93Schristos NUMBER_OR_NAME = 264, 713965be93Schristos NAME = 265, 723965be93Schristos TIMESTAMP = 266, 733965be93Schristos STARTS = 267, 743965be93Schristos ENDS = 268, 753965be93Schristos UID = 269, 763965be93Schristos CLASS = 270, 773965be93Schristos LEASE = 271, 783965be93Schristos RANGE = 272, 793965be93Schristos PACKET = 273, 803965be93Schristos CIADDR = 274, 813965be93Schristos YIADDR = 275, 823965be93Schristos SIADDR = 276, 833965be93Schristos GIADDR = 277, 843965be93Schristos SUBNET = 278, 853965be93Schristos NETMASK = 279, 863965be93Schristos DEFAULT_LEASE_TIME = 280, 873965be93Schristos MAX_LEASE_TIME = 281, 883965be93Schristos VENDOR_CLASS = 282, 893965be93Schristos USER_CLASS = 283, 903965be93Schristos SHARED_NETWORK = 284, 913965be93Schristos SERVER_NAME = 285, 923965be93Schristos DYNAMIC_BOOTP = 286, 933965be93Schristos SERVER_IDENTIFIER = 287, 943965be93Schristos DYNAMIC_BOOTP_LEASE_CUTOFF = 288, 953965be93Schristos DYNAMIC_BOOTP_LEASE_LENGTH = 289, 963965be93Schristos BOOT_UNKNOWN_CLIENTS = 290, 973965be93Schristos NEXT_SERVER = 291, 983965be93Schristos TOKEN_RING = 292, 993965be93Schristos GROUP = 293, 1003965be93Schristos ONE_LEASE_PER_CLIENT = 294, 1013965be93Schristos GET_LEASE_HOSTNAMES = 295, 1023965be93Schristos USE_HOST_DECL_NAMES = 296, 1033965be93Schristos SEND = 297, 1043965be93Schristos CLIENT_IDENTIFIER = 298, 1053965be93Schristos REQUEST = 299, 1063965be93Schristos REQUIRE = 300, 1073965be93Schristos TIMEOUT = 301, 1083965be93Schristos RETRY = 302, 1093965be93Schristos SELECT_TIMEOUT = 303, 1103965be93Schristos SCRIPT = 304, 1113965be93Schristos INTERFACE = 305, 1123965be93Schristos RENEW = 306, 1133965be93Schristos REBIND = 307, 1143965be93Schristos EXPIRE = 308, 1153965be93Schristos UNKNOWN_CLIENTS = 309, 1163965be93Schristos ALLOW = 310, 1173965be93Schristos DENY = 312, 1183965be93Schristos BOOTING = 313, 1193965be93Schristos DEFAULT = 314, 1203965be93Schristos MEDIA = 315, 1213965be93Schristos MEDIUM = 316, 1223965be93Schristos ALIAS = 317, 1233965be93Schristos REBOOT = 318, 1243965be93Schristos TOKEN_ABANDONED = 319, 1253965be93Schristos BACKOFF_CUTOFF = 320, 1263965be93Schristos INITIAL_INTERVAL = 321, 1273965be93Schristos NAMESERVER = 322, 1283965be93Schristos DOMAIN = 323, 1293965be93Schristos SEARCH = 324, 1303965be93Schristos SUPERSEDE = 325, 1313965be93Schristos APPEND = 326, 1323965be93Schristos PREPEND = 327, 1333965be93Schristos HOSTNAME = 328, 1343965be93Schristos CLIENT_HOSTNAME = 329, 1353965be93Schristos REJECT = 330, 1363965be93Schristos USE_LEASE_ADDR_FOR_DEFAULT_ROUTE = 331, 1373965be93Schristos MIN_LEASE_TIME = 332, 1383965be93Schristos MIN_SECS = 333, 1393965be93Schristos AND = 334, 1403965be93Schristos OR = 335, 1413965be93Schristos SUBSTRING = 337, 1423965be93Schristos SUFFIX = 338, 1433965be93Schristos CHECK = 339, 1443965be93Schristos EXTRACT_INT = 340, 1453965be93Schristos IF = 341, 1463965be93Schristos TOKEN_ADD = 342, 1473965be93Schristos BREAK = 343, 1483965be93Schristos ELSE = 344, 1493965be93Schristos ELSIF = 345, 1503965be93Schristos SUBCLASS = 346, 1513965be93Schristos MATCH = 347, 1523965be93Schristos SPAWN = 348, 1533965be93Schristos WITH = 349, 1543965be93Schristos EXISTS = 350, 1553965be93Schristos POOL = 351, 1563965be93Schristos UNKNOWN = 352, 1573965be93Schristos CLIENTS = 353, 1583965be93Schristos KNOWN = 354, 1593965be93Schristos AUTHENTICATED = 355, 1603965be93Schristos UNAUTHENTICATED = 356, 1613965be93Schristos ALL = 357, 1623965be93Schristos DYNAMIC = 358, 1633965be93Schristos MEMBERS = 359, 1643965be93Schristos OF = 360, 1653965be93Schristos PSEUDO = 361, 1663965be93Schristos LIMIT = 362, 1673965be93Schristos BILLING = 363, 1683965be93Schristos PEER = 364, 1693965be93Schristos FAILOVER = 365, 1703965be93Schristos MY = 366, 1713965be93Schristos PARTNER = 367, 1723965be93Schristos PRIMARY = 368, 1733965be93Schristos SECONDARY = 369, 1743965be93Schristos IDENTIFIER = 370, 1753965be93Schristos PORT = 371, 1763965be93Schristos MAX_TRANSMIT_IDLE = 372, 1773965be93Schristos MAX_RESPONSE_DELAY = 373, 1783965be93Schristos PARTNER_DOWN = 374, 1793965be93Schristos NORMAL = 375, 1803965be93Schristos COMMUNICATIONS_INTERRUPTED = 376, 1813965be93Schristos POTENTIAL_CONFLICT = 377, 1823965be93Schristos RECOVER = 378, 1833965be93Schristos TOKEN_FDDI = 379, 1843965be93Schristos AUTHORITATIVE = 380, 1853965be93Schristos TOKEN_NOT = 381, 1863965be93Schristos AUTHENTICATION = 383, 1873965be93Schristos IGNORE = 384, 1883965be93Schristos ACCEPT = 385, 1893965be93Schristos PREFER = 386, 1903965be93Schristos DONT = 387, 1913965be93Schristos CODE = 388, 1923965be93Schristos ARRAY = 389, 1933965be93Schristos BOOLEAN = 390, 1943965be93Schristos INTEGER = 391, 1953965be93Schristos SIGNED = 392, 1963965be93Schristos UNSIGNED = 393, 1973965be93Schristos IP_ADDRESS = 394, 1983965be93Schristos TEXT = 395, 1993965be93Schristos STRING_TOKEN = 396, 2003965be93Schristos SPACE = 397, 2013965be93Schristos CONCAT = 398, 2023965be93Schristos ENCODE_INT = 399, 2033965be93Schristos REVERSE = 402, 2043965be93Schristos LEASED_ADDRESS = 403, 2053965be93Schristos BINARY_TO_ASCII = 404, 2063965be93Schristos PICK = 405, 2073965be93Schristos CONFIG_OPTION = 406, 2083965be93Schristos HOST_DECL_NAME = 407, 2093965be93Schristos ON = 408, 2103965be93Schristos EXPIRY = 409, 2113965be93Schristos RELEASE = 410, 2123965be93Schristos COMMIT = 411, 2133965be93Schristos DNS_UPDATE = 412, 2143965be93Schristos LEASE_TIME = 413, 2153965be93Schristos STATIC = 414, 2163965be93Schristos NEVER = 415, 2173965be93Schristos INFINITE = 416, 2183965be93Schristos TOKEN_DELETED = 417, 2193965be93Schristos UPDATED_DNS_RR = 418, 2203965be93Schristos DNS_DELETE = 419, 2213965be93Schristos DUPLICATES = 420, 2223965be93Schristos DECLINES = 421, 2233965be93Schristos TSTP = 422, 2243965be93Schristos TSFP = 423, 2253965be93Schristos OWNER = 424, 2263965be93Schristos IS = 425, 2273965be93Schristos HBA = 426, 2283965be93Schristos MAX_UNACKED_UPDATES = 427, 2293965be93Schristos MCLT = 428, 2303965be93Schristos SPLIT = 429, 2313965be93Schristos AT = 430, 2323965be93Schristos TOKEN_NO = 431, 2333965be93Schristos TOKEN_DELETE = 432, 2343965be93Schristos NS_UPDATE = 433, 2353965be93Schristos UPDATE = 434, 2363965be93Schristos SWITCH = 435, 2373965be93Schristos CASE = 436, 2383965be93Schristos NS_FORMERR = 437, 2393965be93Schristos NS_NOERROR = 438, 2403965be93Schristos NS_NOTAUTH = 439, 2413965be93Schristos NS_NOTIMP = 440, 2423965be93Schristos NS_NOTZONE = 441, 2433965be93Schristos NS_NXDOMAIN = 442, 2443965be93Schristos NS_NXRRSET = 443, 2453965be93Schristos NS_REFUSED = 444, 2463965be93Schristos NS_SERVFAIL = 445, 2473965be93Schristos NS_YXDOMAIN = 446, 2483965be93Schristos NS_YXRRSET = 447, 2493965be93Schristos TOKEN_NULL = 448, 2503965be93Schristos TOKEN_SET = 449, 2513965be93Schristos DEFINED = 450, 2523965be93Schristos UNSET = 451, 2533965be93Schristos EVAL = 452, 2543965be93Schristos LET = 453, 2553965be93Schristos FUNCTION = 454, 2563965be93Schristos DEFINE = 455, 2573965be93Schristos ZONE = 456, 2583965be93Schristos KEY = 457, 2593965be93Schristos SECRET = 458, 2603965be93Schristos ALGORITHM = 459, 2613965be93Schristos LOAD = 460, 2623965be93Schristos BALANCE = 461, 2633965be93Schristos TOKEN_MAX = 462, 2643965be93Schristos SECONDS = 463, 2653965be93Schristos ADDRESS = 464, 2663965be93Schristos RESOLUTION_INTERRUPTED = 465, 2673965be93Schristos STATE = 466, 2683965be93Schristos UNKNOWN_STATE = 567, 2693965be93Schristos CLTT = 568, 2703965be93Schristos INCLUDE = 569, 2713965be93Schristos BINDING = 570, 2723965be93Schristos TOKEN_FREE = 571, 2733965be93Schristos TOKEN_ACTIVE = 572, 2743965be93Schristos TOKEN_EXPIRED = 573, 2753965be93Schristos TOKEN_RELEASED = 574, 2763965be93Schristos TOKEN_RESET = 575, 2773965be93Schristos TOKEN_BACKUP = 576, 2783965be93Schristos TOKEN_RESERVED = 577, 2793965be93Schristos TOKEN_BOOTP = 578, 2803965be93Schristos TOKEN_NEXT = 579, 2813965be93Schristos OMAPI = 580, 2823965be93Schristos LOG = 581, 2833965be93Schristos FATAL = 582, 2843965be93Schristos ERROR = 583, 2853965be93Schristos TOKEN_DEBUG = 584, 2863965be93Schristos INFO = 585, 2873965be93Schristos RETURN = 586, 2883965be93Schristos PAUSED = 587, 2893965be93Schristos RECOVER_DONE = 588, 2903965be93Schristos SHUTDOWN = 589, 2913965be93Schristos STARTUP = 590, 2923965be93Schristos ENCAPSULATE = 591, 2933965be93Schristos VENDOR = 592, 2943965be93Schristos CLIENT_STATE = 593, 2953965be93Schristos INIT_REBOOT = 594, 2963965be93Schristos TOKEN_INIT = 595, 2973965be93Schristos SELECT = 596, 2983965be93Schristos BOUND = 597, 2993965be93Schristos RENEWING = 598, 3003965be93Schristos REBINDING = 599, 3013965be93Schristos RECONTACT_INTERVAL = 600, 3023965be93Schristos CLIENT_UPDATES = 601, 3033965be93Schristos TOKEN_NEW = 601, 3043965be93Schristos TRANSMISSION = 602, 3053965be93Schristos TOKEN_CLOSE = 603, 3063965be93Schristos TOKEN_CREATE = 604, 3073965be93Schristos TOKEN_OPEN = 605, 3083965be93Schristos TOKEN_HELP = 606, 3093965be93Schristos END_OF_FILE = 607, 3103965be93Schristos RECOVER_WAIT = 608, 3113965be93Schristos TOKEN_SERVER = 609, 3123965be93Schristos CONNECT = 610, 3133965be93Schristos REMOVE = 611, 3143965be93Schristos REFRESH = 612, 3153965be93Schristos DOMAIN_NAME = 613, 3163965be93Schristos DO_FORWARD_UPDATE = 614, 3173965be93Schristos KNOWN_CLIENTS = 615, 3183965be93Schristos ATSFP = 616, 3193965be93Schristos LCASE = 617, 3203965be93Schristos UCASE = 618, 3213965be93Schristos WIDTH = 619, 3223965be93Schristos LENGTH = 620, 3233965be93Schristos HASH = 621, 3243965be93Schristos SIZE = 622, 3253965be93Schristos EPOCH = 623, 3263965be93Schristos DB_TIME_FORMAT = 624, 3273965be93Schristos LOCAL = 625, 3283965be93Schristos MAX_LEASE_MISBALANCE = 626, 3293965be93Schristos MAX_LEASE_OWNERSHIP = 627, 3303965be93Schristos MAX_BALANCE = 628, 3313965be93Schristos MIN_BALANCE = 629, 3323965be93Schristos DOMAIN_LIST = 630, 3333965be93Schristos LEASEQUERY = 631, 3343965be93Schristos EXECUTE = 632, 3353965be93Schristos IP6_ADDRESS = 633, 3363965be93Schristos FIXED_ADDR6 = 634, 3373965be93Schristos COMPRESSED = 635, 3383965be93Schristos SUBNET6 = 636, 3393965be93Schristos HOST_IDENTIFIER = 637, 3403965be93Schristos IA_NA = 638, 3413965be93Schristos IA_TA = 639, 3423965be93Schristos IA_PD = 640, 3433965be93Schristos IAADDR = 641, 3443965be93Schristos IAPREFIX = 642, 3453965be93Schristos LEASE6 = 643, 3463965be93Schristos PREFERRED_LIFE = 644, 3473965be93Schristos MAX_LIFE = 645, 3483965be93Schristos DEFAULT_DUID = 646, 3493965be93Schristos SERVER_DUID = 647, 3503965be93Schristos LLT = 648, 3513965be93Schristos EN = 649, 3523965be93Schristos LL = 650, 3533965be93Schristos RANGE6 = 651, 3543965be93Schristos WHITESPACE = 652, 3553965be93Schristos TOKEN_ALSO = 653, 3563965be93Schristos AFTER = 654, 3573965be93Schristos ZEROLEN = 655, 3583965be93Schristos TEMPORARY = 656, 3593965be93Schristos PREFIX6 = 657, 3603965be93Schristos FIXED_PREFIX6 = 658, 3613965be93Schristos ANYCAST_MAC = 659, 3623965be93Schristos CONFLICT_DONE = 660, 3633965be93Schristos AUTO_PARTNER_DOWN = 661, 3643965be93Schristos GETHOSTNAME = 662, 3653965be93Schristos REWIND = 663, 3663965be93Schristos INITIAL_DELAY = 664, 3673965be93Schristos GETHOSTBYNAME = 665, 3683965be93Schristos PRIMARY6 = 666, 3693965be93Schristos SECONDARY6 = 667, 3703965be93Schristos TOKEN_INFINIBAND = 668, 3713965be93Schristos POOL6 = 669, 3723965be93Schristos V6RELAY = 670, 3733965be93Schristos V6RELOPT = 671, 3743965be93Schristos PARSE_VENDOR_OPT = 672, 3753965be93Schristos AUTHORING_BYTE_ORDER = 673, 3763965be93Schristos TOKEN_LITTLE_ENDIAN = 674, 3773965be93Schristos TOKEN_BIG_ENDIAN = 675, 3783965be93Schristos LEASE_ID_FORMAT = 676, 3793965be93Schristos TOKEN_HEX = 677, 3803965be93Schristos TOKEN_OCTAL = 678, 381*13df4856Schristos KEY_ALGORITHM = 679, 382*13df4856Schristos DISCONNECT = 680 3833965be93Schristos }; 3843965be93Schristos 3853965be93Schristos #define is_identifier(x) ((x) >= FIRST_TOKEN && \ 3863965be93Schristos (x) != STRING && \ 3873965be93Schristos (x) != NUMBER && \ 3883965be93Schristos (x) != END_OF_FILE) 389