ISC DHCP  4.4.2b1
A reference DHCPv4 and DHCPv6 implementation
dhctoken.h
Go to the documentation of this file.
1 /* dhctoken.h
2 
3  Tokens for config file lexer and parser. */
4 
5 /*
6  * Copyright (c) 2004-2016 by Internet Systems Consortium, Inc. ("ISC")
7  * Copyright (c) 1996-2003 by Internet Software Consortium
8  *
9  * Permission to use, copy, modify, and distribute this software for any
10  * purpose with or without fee is hereby granted, provided that the above
11  * copyright notice and this permission notice appear in all copies.
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  * 950 Charter Street
23  * Redwood City, CA 94063
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 /*
35  * For the Kea Migration Assistant only '[' and ']' where added for
36  * the JSON test parser (no required cast to int in switches on tokens)
37  */
38 enum dhcp_token {
39  SEMI = ';',
40  DOT = '.',
41  COLON = ':',
42  COMMA = ',',
43  SLASH = '/',
44  LBRACE = '{',
45  RBRACE = '}',
46  LBRACKET = '[',
47  RBRACKET = ']',
48  LPAREN = '(',
49  RPAREN = ')',
50  EQUAL = '=',
51  TILDE = '~',
52  BANG = '!',
53  PERCENT = '%',
54  PLUS = '+',
55  MINUS = '-',
56  ASTERISK = '*',
57  AMPERSAND = '&',
58  PIPE = '|',
59  CARET = '^',
60  ENDOFLINE = '\n',
61  QUESTIONMARK = '?',
62 
63  HOST = 256,
65  HARDWARE = 257,
66  FILENAME = 258,
67  FIXED_ADDR = 259,
68  OPTION = 260,
69  ETHERNET = 261,
70  STRING = 262,
71  NUMBER = 263,
73  NAME = 265,
74  TIMESTAMP = 266,
75  STARTS = 267,
76  ENDS = 268,
77  UID = 269,
78  CLASS = 270,
79  LEASE = 271,
80  RANGE = 272,
81  PACKET = 273,
82  CIADDR = 274,
83  YIADDR = 275,
84  SIADDR = 276,
85  GIADDR = 277,
86  SUBNET = 278,
87  NETMASK = 279,
90  VENDOR_CLASS = 282,
91  USER_CLASS = 283,
93  SERVER_NAME = 285,
99  NEXT_SERVER = 291,
100  TOKEN_RING = 292,
101  GROUP = 293,
105  SEND = 297,
107  REQUEST = 299,
108  REQUIRE = 300,
109  TIMEOUT = 301,
110  RETRY = 302,
112  SCRIPT = 304,
113  INTERFACE = 305,
114  RENEW = 306,
115  REBIND = 307,
116  EXPIRE = 308,
118  ALLOW = 310,
119  DENY = 312,
120  BOOTING = 313,
121  DEFAULT = 314,
122  MEDIA = 315,
123  MEDIUM = 316,
124  ALIAS = 317,
125  REBOOT = 318,
129  NAMESERVER = 322,
130  DOMAIN = 323,
131  SEARCH = 324,
132  SUPERSEDE = 325,
133  APPEND = 326,
134  PREPEND = 327,
135  HOSTNAME = 328,
137  REJECT = 330,
140  MIN_SECS = 333,
141  AND = 334,
142  OR = 335,
143  SUBSTRING = 337,
144  SUFFIX = 338,
145  CHECK = 339,
146  EXTRACT_INT = 340,
147  IF = 341,
148  TOKEN_ADD = 342,
149  BREAK = 343,
150  ELSE = 344,
151  ELSIF = 345,
152  SUBCLASS = 346,
153  MATCH = 347,
154  SPAWN = 348,
155  WITH = 349,
156  EXISTS = 350,
157  POOL = 351,
158  UNKNOWN = 352,
159  CLIENTS = 353,
160  KNOWN = 354,
163  ALL = 357,
164  DYNAMIC = 358,
165  MEMBERS = 359,
166  OF = 360,
167  PSEUDO = 361,
168  LIMIT = 362,
169  BILLING = 363,
170  PEER = 364,
171  FAILOVER = 365,
172  MY = 366,
173  PARTNER = 367,
174  PRIMARY = 368,
175  SECONDARY = 369,
176  IDENTIFIER = 370,
177  PORT = 371,
181  NORMAL = 375,
184  RECOVER = 378,
185  TOKEN_FDDI = 379,
187  TOKEN_NOT = 381,
189  IGNORE = 384,
190  ACCEPT = 385,
191  PREFER = 386,
192  DONT = 387,
193  CODE = 388,
194  ARRAY = 389,
195  BOOLEAN = 390,
196  INTEGER = 391,
197  SIGNED = 392,
198  UNSIGNED = 393,
199  IP_ADDRESS = 394,
200  TEXT = 395,
202  SPACE = 397,
203  CONCAT = 398,
204  ENCODE_INT = 399,
205  REVERSE = 402,
208  PICK = 405,
211  ON = 408,
212  EXPIRY = 409,
213  RELEASE = 410,
214  COMMIT = 411,
215  DNS_UPDATE = 412,
216  LEASE_TIME = 413,
217  STATIC = 414,
218  NEVER = 415,
219  INFINITE = 416,
222  DNS_DELETE = 419,
223  DUPLICATES = 420,
224  DECLINES = 421,
225  TSTP = 422,
226  TSFP = 423,
227  OWNER = 424,
228  IS = 425,
229  HBA = 426,
231  MCLT = 428,
232  SPLIT = 429,
233  AT = 430,
234  TOKEN_NO = 431,
236  NS_UPDATE = 433,
237  UPDATE = 434,
238  SWITCH = 435,
239  CASE = 436,
240  NS_FORMERR = 437,
241  NS_NOERROR = 438,
242  NS_NOTAUTH = 439,
243  NS_NOTIMP = 440,
244  NS_NOTZONE = 441,
245  NS_NXDOMAIN = 442,
246  NS_NXRRSET = 443,
247  NS_REFUSED = 444,
248  NS_SERVFAIL = 445,
249  NS_YXDOMAIN = 446,
250  NS_YXRRSET = 447,
251  TOKEN_NULL = 448,
252  TOKEN_SET = 449,
253  DEFINED = 450,
254  UNSET = 451,
255  EVAL = 452,
256  LET = 453,
257  FUNCTION = 454,
258  DEFINE = 455,
259  ZONE = 456,
260  KEY = 457,
261  SECRET = 458,
262  ALGORITHM = 459,
263  LOAD = 460,
264  BALANCE = 461,
265  TOKEN_MAX = 462,
266  SECONDS = 463,
267  ADDRESS = 464,
269  STATE = 466,
271  CLTT = 568,
272  INCLUDE = 569,
273  BINDING = 570,
274  TOKEN_FREE = 571,
278  TOKEN_RESET = 575,
281  TOKEN_BOOTP = 578,
282  TOKEN_NEXT = 579,
283  OMAPI = 580,
284  LOG = 581,
285  FATAL = 582,
286  ERROR = 583,
287  TOKEN_DEBUG = 584,
288  INFO = 585,
289  RETURN = 586,
290  PAUSED = 587,
292  SHUTDOWN = 589,
293  STARTUP = 590,
294  ENCAPSULATE = 591,
295  VENDOR = 592,
297  INIT_REBOOT = 594,
298  TOKEN_INIT = 595,
299  SELECT = 596,
300  BOUND = 597,
301  RENEWING = 598,
302  REBINDING = 599,
305  TOKEN_NEW = 601,
307  TOKEN_CLOSE = 603,
309  TOKEN_OPEN = 605,
310  TOKEN_HELP = 606,
311  END_OF_FILE = 607,
314  CONNECT = 610,
315  REMOVE = 611,
316  REFRESH = 612,
317  DOMAIN_NAME = 613,
320  ATSFP = 616,
321  LCASE = 617,
322  UCASE = 618,
323  WIDTH = 619,
324  LENGTH = 620,
325  HASH = 621,
326  SIZE = 622,
327  EPOCH = 623,
329  LOCAL = 625,
332  MAX_BALANCE = 628,
333  MIN_BALANCE = 629,
334  DOMAIN_LIST = 630,
335  LEASEQUERY = 631,
336  EXECUTE = 632,
337  IP6_ADDRESS = 633,
338  FIXED_ADDR6 = 634,
339  COMPRESSED = 635,
340  SUBNET6 = 636,
342  IA_NA = 638,
343  IA_TA = 639,
344  IA_PD = 640,
345  IAADDR = 641,
346  IAPREFIX = 642,
347  LEASE6 = 643,
349  MAX_LIFE = 645,
351  SERVER_DUID = 647,
352  LLT = 648,
353  EN = 649,
354  LL = 650,
355  RANGE6 = 651,
356  WHITESPACE = 652,
357  TOKEN_ALSO = 653,
358  AFTER = 654,
359  ZEROLEN = 655,
360  TEMPORARY = 656,
361  PREFIX6 = 657,
363  ANYCAST_MAC = 659,
366  GETHOSTNAME = 662,
367  REWIND = 663,
370  PRIMARY6 = 666,
371  SECONDARY6 = 667,
373  POOL6 = 669,
374  V6RELAY = 670,
375  V6RELOPT = 671,
381  TOKEN_HEX = 677,
382  TOKEN_OCTAL = 678,
384 };
385 
386 #define is_identifier(x) ((x) >= FIRST_TOKEN && \
387  (x) != STRING && \
388  (x) != NUMBER && \
389  (x) != END_OF_FILE)
Definition: dhctoken.h:50
Definition: dhctoken.h:146
Definition: dhctoken.h:252
Definition: dhctoken.h:267
Definition: dhctoken.h:151
Definition: dhctoken.h:284
Definition: dhctoken.h:51
Definition: dhctoken.h:143
Definition: dhctoken.h:38
Definition: dhctoken.h:48
Definition: dhctoken.h:153
Definition: dhctoken.h:235
dhcp_token
Definition: dhctoken.h:34
Definition: dhctoken.h:46
Definition: dhctoken.h:207
Definition: dhctoken.h:137
Definition: dhctoken.h:75
Definition: dhctoken.h:229
Definition: dhctoken.h:224
Definition: dhctoken.h:188
Definition: dhctoken.h:55
Definition: dhctoken.h:259
Definition: dhctoken.h:251
Definition: dhctoken.h:159
Definition: dhctoken.h:74
Definition: dhctoken.h:349
Definition: dhctoken.h:47
Definition: dhctoken.h:222
Definition: dhctoken.h:173
Definition: dhctoken.h:59
Definition: dhctoken.h:76
Definition: dhctoken.h:280
Definition: dhctoken.h:256
Definition: dhctoken.h:73
Definition: dhctoken.h:204
Definition: dhctoken.h:225
Definition: dhctoken.h:321
Definition: dhctoken.h:35
Definition: dhctoken.h:255
Definition: dhctoken.h:39
Definition: dhctoken.h:138
Definition: dhctoken.h:221
Definition: dhctoken.h:348
Definition: dhctoken.h:36
Definition: dhctoken.h:101
Definition: dhctoken.h:69
Definition: dhctoken.h:350
Definition: dhctoken.h:168
Definition: dhctoken.h:37
Definition: dhctoken.h:227
Definition: dhctoken.h:322
Definition: dhctoken.h:97
Definition: dhctoken.h:54
Definition: dhctoken.h:72
Definition: dhctoken.h:166
Definition: dhctoken.h:189
Definition: dhctoken.h:196
Definition: dhctoken.h:115
Definition: dhctoken.h:162