xref: /netbsd-src/external/mpl/dhcp/dist/includes/dhctoken.h (revision f407d9293b6650aa8c33d6a995f797bb6aaefd90)
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