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