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