]> git.ipfire.org Git - thirdparty/dhcp.git/blame - includes/dhctoken.h
Fix a buffer overflow problem (not a security issue). Thanks to Joe.
[thirdparty/dhcp.git] / includes / dhctoken.h
CommitLineData
d7837182
TL
1/* dhctoken.h
2
3 Tokens for config file lexer and parser. */
4
5/*
f39b6e00 6 * Copyright (c) 1996-1999 Internet Software Consortium.
49733f31 7 * All rights reserved.
d7837182 8 *
49733f31
TL
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
d7837182 12 *
49733f31
TL
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. Neither the name of The Internet Software Consortium nor the names
19 * of its contributors may be used to endorse or promote products derived
20 * from this software without specific prior written permission.
d7837182 21 *
49733f31
TL
22 * THIS SOFTWARE IS PROVIDED BY THE INTERNET SOFTWARE CONSORTIUM AND
23 * CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
24 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
25 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26 * DISCLAIMED. IN NO EVENT SHALL THE INTERNET SOFTWARE CONSORTIUM OR
27 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
30 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
31 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
32 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
33 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
34 * SUCH DAMAGE.
35 *
36 * This software has been written for the Internet Software Consortium
37 * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
38 * To learn more about the Internet Software Consortium, see
39 * ``http://www.isc.org/''. To learn more about Vixie Enterprises,
40 * see ``http://www.vix.com''. To learn more about Nominum, Inc., see
41 * ``http://www.nominum.com''.
d7837182
TL
42 */
43
983ea35c
TL
44enum dhcp_token {
45 SEMI = ';',
46 DOT = '.',
47 COLON = ':',
48 COMMA = ',',
49 SLASH = '/',
50 LBRACE = '{',
51 RBRACE = '}',
52 LPAREN = '(',
53 RPAREN = ')',
54 EQUAL = '=',
2b965a44 55 BANG = '!',
3bbe2135 56 PERCENT = '%',
811e0e67
TL
57 PLUS = '+',
58 MINUS = '-',
59 ASTERISK = '*',
d7837182 60
983ea35c
TL
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 BOOTP = 311,
118 DENY = 312,
119 BOOTING = 313,
120 DEFAULT = 314,
121 MEDIA = 315,
122 MEDIUM = 316,
123 ALIAS = 317,
124 REBOOT = 318,
125 ABANDONED = 319,
126 BACKOFF_CUTOFF = 320,
127 INITIAL_INTERVAL = 321,
128 NAMESERVER = 322,
129 DOMAIN = 323,
130 SEARCH = 324,
131 SUPERSEDE = 325,
132 APPEND = 326,
133 PREPEND = 327,
134 HOSTNAME = 328,
135 CLIENT_HOSTNAME = 329,
136 REJECT = 330,
137 USE_LEASE_ADDR_FOR_DEFAULT_ROUTE = 331,
138 MIN_LEASE_TIME = 332,
139 MIN_SECS = 333,
140 AND = 334,
141 OR = 335,
983ea35c
TL
142 SUBSTRING = 337,
143 SUFFIX = 338,
144 CHECK = 339,
145 EXTRACT_INT = 340,
146 IF = 341,
8a04c615 147 TOKEN_ADD = 342,
983ea35c
TL
148 BREAK = 343,
149 ELSE = 344,
150 ELSIF = 345,
151 SUBCLASS = 346,
152 MATCH = 347,
153 SPAWN = 348,
154 WITH = 349,
155 EXISTS = 350,
f197003d
TL
156 POOL = 351,
157 UNKNOWN = 352,
158 CLIENTS = 353,
159 KNOWN = 354,
160 AUTHENTICATED = 355,
161 UNAUTHENTICATED = 356,
162 ALL = 357,
163 DYNAMIC = 358,
164 MEMBERS = 359,
165 OF = 360,
166 PSEUDO = 361,
00a7748f
TL
167 LIMIT = 362,
168 BILLING = 363,
c66b869e
TL
169 PEER = 364,
170 FAILOVER = 365,
171 MY = 366,
172 PARTNER = 367,
173 PRIMARY = 368,
174 SECONDARY = 369,
175 IDENTIFIER = 370,
176 PORT = 371,
177 MAX_TRANSMIT_IDLE = 372,
178 MAX_RESPONSE_DELAY = 373,
179 PARTNER_DOWN = 374,
180 NORMAL = 375,
181 COMMUNICATIONS_INTERRUPTED = 376,
182 POTENTIAL_CONFLICT = 377,
183 RECOVER = 378,
6b6126fb
TL
184 FDDI = 379,
185 AUTHORITATIVE = 380,
186 TOKEN_NOT = 381,
40d08f51
TL
187 AUTHENTICATION = 383,
188 IGNORE = 384,
189 ACCEPT = 385,
190 PREFER = 386,
191 DONT = 387,
1e382a09
TL
192 CODE = 388,
193 ARRAY = 389,
194 BOOLEAN = 390,
195 INTEGER = 391,
196 SIGNED = 392,
197 UNSIGNED = 393,
198 IP_ADDRESS = 394,
199 TEXT = 395,
200 STRING_TOKEN = 396,
6cad5838 201 SPACE = 397,
b7afba03 202 CONCAT = 398,
3cb23d09 203 ENCODE_INT = 399,
da38df14
TL
204 REVERSE = 402,
205 LEASED_ADDRESS = 403,
206 BINARY_TO_ASCII = 404,
d7d2cbe8 207 PICK = 405,
79a65726
TL
208 CONFIG_OPTION = 406,
209 HOST_DECL_NAME = 407,
210 ON = 408,
211 EXPIRY = 409,
212 RELEASE = 410,
213 COMMIT = 411,
069e9f4c
TL
214 DNS_UPDATE = 412,
215 LEASE_TIME = 413,
1c5d5731 216 STATIC = 414,
be1ee858
TL
217 NEVER = 415,
218 INFINITE = 416,
07dc11f8 219 DELETED = 417,
846d7d54 220 UPDATED_DNS_RR = 418,
337b3e52 221 DNS_DELETE = 419,
3d201338 222 DUPLICATES = 420,
679c2655
TL
223 DECLINES = 421,
224 TSTP = 422,
225 TSFP = 423,
226 OWNER = 424,
227 IS = 425,
228 HBA = 426,
229 MAX_UNACKED_UPDATES = 427,
230 MCLT = 428,
231 SPLIT = 429,
232 AT = 430,
233 NO = 431,
375841eb
TL
234 TOKEN_DELETE = 432,
235 NS_UPDATE = 433,
236 UPDATE = 434,
237 SWITCH = 435,
238 CASE = 436,
239 NS_FORMERR = 437,
240 NS_NOERROR = 438,
241 NS_NOTAUTH = 439,
242 NS_NOTIMP = 440,
243 NS_NOTZONE = 441,
244 NS_NXDOMAIN = 442,
245 NS_NXRRSET = 443,
246 NS_REFUSED = 444,
247 NS_SERVFAIL = 445,
248 NS_YXDOMAIN = 446,
249 NS_YXRRSET = 447,
250 TOKEN_NULL = 448,
251 TOKEN_SET = 449,
252 DEFINED = 450,
253 UNSET = 451,
254 EVAL = 452,
255 LET = 453,
256 FUNCTION = 454,
257 DEFINE = 455,
258 ZONE = 456,
259 KEY = 457,
260 SECRET = 458,
34bc835a
TL
261 ALGORITHM = 459,
262 LOAD = 460,
263 BALANCE = 461,
264 TOKEN_MAX = 462,
265 SECONDS = 463,
822e866a
TL
266 ADDRESS = 464,
267 POTENTIAL_CONFLICT_NIC = 465,
268 STATE = 466,
8c8e27c5 269 UNKNOWN_STATE = 567,
20916cae
TL
270 CLTT = 568,
271 INCLUDE = 569
983ea35c 272};
d7837182
TL
273
274#define is_identifier(x) ((x) >= FIRST_TOKEN && \
d7837182 275 (x) != STRING && \
f4e348de
TL
276 (x) != NUMBER && \
277 (x) != EOF)