ISC DHCP 4.4.3-P1
A reference DHCPv4 and DHCPv6 implementation
 
Loading...
Searching...
No Matches
keama.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2017-2022 Internet Systems Consortium, Inc. ("ISC")
3 *
4 * Permission to use, copy, modify, and distribute this software for any
5 * purpose with or without fee is hereby granted, provided that the above
6 * copyright notice and this permission notice appear in all copies.
7 *
8 * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
14 * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
15 *
16 * Internet Systems Consortium, Inc.
17 * PO Box 360
18 * Newmarket, NH 03857 USA
19 * <info@isc.org>
20 * https://www.isc.org/
21 *
22 */
23
24#ifndef EOL
25#define EOL '\n'
26#endif
27
28#include "data.h"
29#include "dhctoken.h"
30
31#include <time.h>
32
33/* Resolution of FQDNs into IPv4 addresses */
34enum resolve {
35 perform = 0, /* resolve */
36 fatal, /* raise a fatal error */
37 pass /* pass the string wth a warning */
38};
39
40extern enum resolve resolve;
41
42/* From includes/dhcp.h */
43
44#define HTYPE_ETHER 1
45#define HTYPE_IEEE802 6
46#define HTYPE_FDDI 8
47
48#define DHO_DHCP_SERVER_IDENTIFIER 54
49#define DHO_VENDOR_CLASS_IDENTIFIER 60
50#define DHO_USER_CLASS 77
51#define DHO_VIVSO_SUBOPTIONS 125
52
53/* From includes/dhcp6.h */
54#define D6O_VENDOR_OPTS 17
55#define MAX_V6RELAY_HOPS 32
56
57/* From includes/dhcpd.h */
58
59extern int local_family;
60
61/* A parsing context. */
62
63struct parse {
64 int lexline;
65 int lexchar;
66 char *token_line;
67 char *prev_line;
68 char *cur_line;
69 const char *tlname;
70 int eol_token;
71
72 /*
73 * In order to give nice output when we have a parsing error
74 * in our file, we keep track of where we are in the line so
75 * that we can show the user.
76 *
77 * We need to keep track of two lines, because we can look
78 * ahead, via the "peek" function, to the next line sometimes.
79 *
80 * The "line1" and "line2" variables act as buffers for this
81 * information. The "lpos" variable tells us where we are in the
82 * line.
83 *
84 * When we "put back" a character from the parsing context, we
85 * do not want to have the character appear twice in the error
86 * output. So, we set a flag, the "ugflag", which the
87 * get_char() function uses to check for this condition.
88 */
89 char line1[81];
90 char line2[81];
91 int lpos;
92 int line;
93 int tlpos;
94 int tline;
95 enum dhcp_token token;
96 int ugflag;
97 char *tval;
98 int tlen;
99 char tokbuf[1500];
100
102 int file;
103 char *inbuf;
104 size_t bufix, buflen;
105 size_t bufsiz;
106
107 /*
108 * Additions for the Kea Migration Assistant.
109 */
110 struct element **stack;
112 size_t stack_top;
114
115 /* don't save below this */
117
118 /* TAILQ_NEXT(self) is the saved state */
120
121};
122
124
125#define PARAMETER 0
126#define TOPLEVEL 1
127#define ROOT_GROUP 2
128#define HOST_DECL 3
129#define SHARED_NET_DECL 4
130#define SUBNET_DECL 5
131#define CLASS_DECL 6
132#define GROUP_DECL 7
133#define POOL_DECL 8
134
135/* Used as an argument to parse_class_decl() */
136#define CLASS_TYPE_VENDOR 0
137#define CLASS_TYPE_USER 1
138#define CLASS_TYPE_CLASS 2
139#define CLASS_TYPE_SUBCLASS 3
140
141#define CLASS_DECL_DELETED 1
142#define CLASS_DECL_DYNAMIC 2
143#define CLASS_DECL_STATIC 4
144#define CLASS_DECL_SUBCLASS 8
145
146/* Hardware buffer size */
147#define HARDWARE_ADDR_LEN 20
148
149/* Expression context */
150
160
161/* Statements */
162
188
189/* Expression tree structure. */
190
258
259/* options */
260
262 kea_unknown = 0, /* known only by ISC DHCP */
263 isc_dhcp_unknown = 1, /* known only by Kea */
264 known = 2, /* known by both ISC DHCP and Kea */
265 special = 3, /* requires special processing */
266 dynamic = 4 /* dynamic entry */
267};
268
269struct option_def { /* ISC DHCP option definition */
270 const char *name; /* option name */
271 const char *format; /* format string */
272 const char *space; /* space (aka universe) */
273 unsigned code; /* code point */
274 enum option_status status; /* status */
275};
276
277struct space_def { /* ISC DHCP space definition */
278 const char *old; /* ISC DHCP space name */
279 const char *name; /* Kea space name */
280 enum option_status status; /* status */
281};
282
283struct space {
284 const char *old; /* ISC DHCP space name */
285 const char *name; /* Kea space name */
286 enum option_status status; /* status */
287 struct element *vendor; /* vendor option */
288 TAILQ_ENTRY(space) next; /* next space */
289};
290
291struct option {
292 const char *old; /* ISC DHCP option name */
293 const char *name; /* Kea option name */
294 const char *format; /* ISC DHCP format string */
295 const struct space *space; /* space (aka universe) */
296 unsigned code; /* code point */
297 enum option_status status; /* status */
298 TAILQ_ENTRY(option) next; /* next option */
299};
300
301/* Kea parse tools */
302void stackPush(struct parse *cfile, struct element *elem);
303
304/* From command line */
305extern char *hook_library_path;
308
309/* From common/parse.c */
310void parse_error(struct parse *, const char *, ...)
311 __attribute__((__format__(__printf__,2,3)))
312 __attribute__((noreturn));
313
314/* conflex.c */
315struct parse *new_parse(int, char *, size_t, const char *, int);
316void end_parse(struct parse *);
317void save_parse_state(struct parse *);
318void restore_parse_state(struct parse *);
319enum dhcp_token next_token(const char **, unsigned *, struct parse *);
320enum dhcp_token peek_token(const char **, unsigned *, struct parse *);
321enum dhcp_token next_raw_token(const char **, unsigned *, struct parse *);
322enum dhcp_token peek_raw_token(const char **, unsigned *, struct parse *);
323/*
324 * Use skip_token when we are skipping a token we have previously
325 * used peek_token on as we know what the result will be in this case.
326 */
327#define skip_token(a,b,c) ((void) next_token((a),(b),(c)))
328
329/* confparse.c */
330size_t conf_file_parse(struct parse *);
331void read_conf_file(struct parse *, const char *, int);
332size_t conf_file_subparse(struct parse *, int);
334void get_permit(struct parse *, struct element *);
335void parse_pool_statement(struct parse *, int);
336void parse_lbrace(struct parse *);
337void parse_host_declaration(struct parse *);
338void parse_class_declaration(struct parse *, int);
340void parse_subnet_declaration(struct parse *);
341void parse_subnet6_declaration(struct parse *);
342void parse_group_declaration(struct parse *);
343void close_group(struct parse *, struct element *);
344struct element *parse_fixed_addr_param(struct parse *, enum dhcp_token);
345void parse_address_range(struct parse *, int, size_t);
346void parse_address_range6(struct parse *, int, size_t);
347void parse_prefix6(struct parse *, int, size_t);
348void parse_fixed_prefix6(struct parse *, size_t);
349void parse_pool6_statement(struct parse *, int);
350struct element *parse_allow_deny(struct parse *, int);
351void parse_server_duid_conf(struct parse *);
352void parse_directive(struct parse *);
353void parse_option_space_dir(struct parse *);
354void parse_option_code_dir(struct parse *, struct option *);
355void parse_option_status_dir(struct parse *, struct option *, enum dhcp_token);
356void parse_option_local_dir(struct parse *, struct option *);
357void parse_option_define_dir(struct parse *, struct option *);
358
359/* parse.c */
360void skip_to_semi(struct parse *);
361void skip_to_rbrace(struct parse *, int);
362void parse_semi(struct parse *);
363void parse_string(struct parse *, char **, unsigned *);
364struct string *parse_host_name(struct parse *);
366struct string *parse_ip_addr(struct parse *);
367struct string *parse_ip6_addr(struct parse *);
368struct string *parse_ip6_addr_txt(struct parse *);
369struct element *parse_hardware_param(struct parse *);
370void parse_lease_time(struct parse *, time_t *);
371struct string *parse_numeric_aggregate(struct parse *,
372 unsigned char *, unsigned *,
373 int, int, unsigned);
374void convert_num(struct parse *, unsigned char *, const char *,
375 int, unsigned);
377 isc_boolean_t *);
378void parse_option_space_decl(struct parse *);
379void parse_option_code_definition(struct parse *, struct option *);
380void parse_vendor_code_definition(struct parse *, struct option *);
381struct string *convert_format(const char *, isc_boolean_t *, isc_boolean_t *);
382struct string *parse_base64(struct parse *);
383struct string *parse_cshl(struct parse *);
384struct string *parse_hexa(struct parse *);
386 struct parse *, isc_boolean_t *,
387 enum expression_context);
389 struct parse *, isc_boolean_t *,
392isc_boolean_t parse_zone(struct element *, struct parse *);
393isc_boolean_t parse_key(struct element *, struct parse *);
395 isc_boolean_t *);
397 isc_boolean_t *);
401 isc_boolean_t *);
403 isc_boolean_t *);
404/* currently unused */
407 isc_boolean_t *);
409 isc_boolean_t *);
414 struct element *, enum expr_op);
415struct string *escape_option_string(unsigned, const char *,
418 struct option *);
420 struct option *, isc_boolean_t);
421struct string * parse_option_textbin(struct parse *, struct option *);
423 struct option *, enum statement_op);
425 struct option *);
427 struct option *, enum statement_op);
428struct string *parse_option_token(struct parse *, const char *,
430 isc_boolean_t *);
431struct string *parse_option_token_binary(struct parse *, const char *);
436int expr_precedence(enum expr_op, struct element *);
437
438/* options.c */
439void spaces_init(void);
440void options_init(void);
441struct space *space_lookup(const char *);
442struct option *option_lookup_name(const char *, const char *);
443struct option *kea_lookup_name(const char *, const char *);
444struct option *option_lookup_code(const char *, unsigned);
445void push_space(struct space *);
446void push_option(struct option *);
447void add_option_data(struct element *, struct element *);
448void merge_option_data(struct element *, struct element *);
449struct comments *get_config_comments(unsigned);
450const char *display_status(enum option_status);
451
452/* json.c */
453struct element *json_parse(struct parse *);
454struct element *json_list_parse(struct parse *);
455struct element *json_map_parse(struct parse *);
456
457/* print.c */
458const char *print_expression(struct element *, isc_boolean_t *);
459const char *print_boolean_expression(struct element *, isc_boolean_t *);
460const char *print_data_expression(struct element *, isc_boolean_t *);
461const char *print_numeric_expression(struct element *, isc_boolean_t *);
462
463/* reduce.c */
465struct element *reduce_data_expression(struct element *);
467
468/* eval */
469struct element *eval_expression(struct element *, isc_boolean_t *);
#define __attribute__(x)
Definition cdefs.h:39
enum dhcp_token next_raw_token(const char **rval, unsigned *rlen, struct parse *cfile)
Definition conflex.c:380
enum dhcp_token peek_raw_token(const char **rval, unsigned *rlen, struct parse *cfile)
Definition conflex.c:454
enum dhcp_token peek_token(const char **rval, unsigned *rlen, struct parse *cfile)
Definition conflex.c:443
enum dhcp_token next_token(const char **rval, unsigned *rlen, struct parse *cfile)
Definition conflex.c:369
isc_result_t end_parse(struct parse **cfile)
Definition conflex.c:103
isc_result_t new_parse(struct parse **cfile, int file, char *inbuf, unsigned buflen, const char *name, int eolp)
Definition conflex.c:41
isc_result_t save_parse_state(struct parse *cfile)
Definition conflex.c:128
isc_result_t restore_parse_state(struct parse *cfile)
Definition conflex.c:159
#define TAILQ_HEAD(name, type)
Definition data.h:34
isc_boolean_t
Definition data.h:150
const char int line
Definition dhcpd.h:3802
const char * file
Definition dhcpd.h:3802
int lexline
Definition dhcrelay.c:51
char * tlname
Definition dhcrelay.c:54
int lexchar
Definition dhcrelay.c:52
char * token_line
Definition dhcrelay.c:53
int local_family
Definition discover.c:59
dhcp_token
Definition dhctoken.h:34
struct parses parses
Definition keama.c:51
char * hook_library_path
Definition keama.c:54
isc_boolean_t use_isc_lifetimes
Definition keama.c:59
isc_boolean_t global_hr
Definition keama.c:60
void parse_lbrace(struct parse *)
Definition confparse.c:1269
isc_boolean_t parse_config_statement(struct element *, struct parse *, struct option *, enum statement_op)
Definition parse.c:4831
struct string * parse_numeric_aggregate(struct parse *, unsigned char *, unsigned *, int, int, unsigned)
Definition parse.c:734
isc_boolean_t numeric_expression(struct element *, struct parse *, isc_boolean_t *)
isc_boolean_t parse_key(struct element *, struct parse *)
Definition parse.c:2210
struct option * option_lookup_code(const char *, unsigned)
Definition options.c:624
struct string * parse_base64(struct parse *)
Definition parse.c:1434
const char * print_expression(struct element *, isc_boolean_t *)
Definition print.c:39
void parse_directive(struct parse *)
Parse (and execute) a directive (extension)
Definition confparse.c:4001
void parse_fixed_prefix6(struct parse *, size_t)
Definition confparse.c:3409
void parse_address_range(struct parse *, int, size_t)
Definition confparse.c:3097
void parse_pool_statement(struct parse *, int)
Parse a pool statement.
Definition confparse.c:1142
isc_boolean_t is_boolean_expression(struct element *)
Definition parse.c:5701
option_status
Definition keama.h:261
@ kea_unknown
Definition keama.h:262
@ dynamic
Definition keama.h:266
@ isc_dhcp_unknown
Definition keama.h:263
@ special
Definition keama.h:265
@ known
Definition keama.h:264
void add_option_data(struct element *, struct element *)
Definition options.c:658
struct string * parse_ip_addr(struct parse *)
Definition parse.c:291
struct element * reduce_boolean_expression(struct element *)
Definition reduce.c:52
void read_conf_file(struct parse *, const char *, int)
Definition confparse.c:480
struct option * option_lookup_name(const char *, const char *)
Definition options.c:579
struct string * parse_option_textbin(struct parse *, struct option *)
Definition parse.c:4169
int expr_precedence(enum expr_op, struct element *)
Definition parse.c:6135
void parse_option_space_dir(struct parse *)
Definition confparse.c:4091
void parse_option_code_dir(struct parse *, struct option *)
Definition confparse.c:4156
isc_boolean_t parse_boolean_expression(struct element *, struct parse *, isc_boolean_t *)
Definition parse.c:2586
isc_boolean_t parse_switch_statement(struct element *, struct parse *, isc_boolean_t *)
Definition parse.c:2375
void parse_host_declaration(struct parse *)
Definition confparse.c:1282
void parse_option_local_dir(struct parse *, struct option *)
Definition confparse.c:4268
struct comments * get_config_comments(unsigned)
Definition options.c:720
isc_boolean_t parse_case_statement(struct element *, struct parse *, isc_boolean_t *, enum expression_context)
Definition parse.c:2437
void parse_vendor_code_definition(struct parse *, struct option *)
Definition parse.c:1283
struct string * parse_domain_list(struct parse *, isc_boolean_t)
Definition parse.c:4646
void push_option(struct option *)
Definition options.c:649
void parse_class_declaration(struct parse *, int)
Definition confparse.c:1584
isc_boolean_t parse_executable_statement(struct element *, struct parse *, isc_boolean_t *, enum expression_context, isc_boolean_t)
Definition parse.c:1590
isc_boolean_t parse_option_data(struct element *, struct parse *, struct option *)
Definition parse.c:3929
size_t conf_file_parse(struct parse *)
struct element * json_map_parse(struct parse *)
Definition json.c:120
struct string * escape_option_string(unsigned, const char *, isc_boolean_t *, isc_boolean_t *)
Definition parse.c:3896
void parse_shared_net_declaration(struct parse *)
Definition confparse.c:2105
void parse_subnet_declaration(struct parse *)
Definition confparse.c:2337
void parse_address_range6(struct parse *, int, size_t)
Definition confparse.c:3212
struct element * reduce_data_expression(struct element *)
Definition reduce.c:375
void parse_lease_time(struct parse *, time_t *)
Definition parse.c:690
resolve
Definition keama.h:34
@ pass
Definition keama.h:37
@ perform
Definition keama.h:35
@ fatal
Definition keama.h:36
struct option * kea_lookup_name(const char *, const char *)
Definition options.c:599
const char * print_data_expression(struct element *, isc_boolean_t *)
Definition print.c:496
struct string * parse_ip_addr_or_hostname(struct parse *, isc_boolean_t)
Definition parse.c:215
isc_boolean_t parse_data_expression(struct element *, struct parse *, isc_boolean_t *)
Definition parse.c:2645
const char * print_numeric_expression(struct element *, isc_boolean_t *)
Definition print.c:1023
void parse_string(struct parse *, char **, unsigned *)
Definition parse.c:156
void parse_option_define_dir(struct parse *, struct option *)
Definition confparse.c:4316
struct element * parse_hardware_param(struct parse *)
Definition parse.c:395
isc_boolean_t parse_option_binary(struct element *, struct parse *, struct option *, isc_boolean_t)
Definition parse.c:4047
void parse_server_duid_conf(struct parse *)
Definition confparse.c:3790
struct element * eval_data_expression(struct element *, isc_boolean_t *)
Definition eval.c:476
const char * print_boolean_expression(struct element *, isc_boolean_t *)
Definition print.c:59
isc_boolean_t is_numeric_expression(struct element *)
Definition parse.c:5758
void parse_subnet6_declaration(struct parse *)
Definition confparse.c:2429
struct element * parse_fixed_addr_param(struct parse *, enum dhcp_token)
Definition confparse.c:3008
isc_boolean_t parse_boolean(struct parse *)
Definition parse.c:3498
isc_boolean_t parse_expression(struct element *, struct parse *, isc_boolean_t *, enum expression_context, struct element *, enum expr_op)
Definition parse.c:3617
void convert_num(struct parse *, unsigned char *, const char *, int, unsigned)
Definition parse.c:840
struct string * parse_cshl(struct parse *)
Definition parse.c:1489
isc_boolean_t parse_option_statement(struct element *, struct parse *, struct option *, enum statement_op)
Definition parse.c:4211
struct element * json_list_parse(struct parse *)
Definition json.c:80
struct string * parse_host_name(struct parse *)
Definition parse.c:196
void skip_to_semi(struct parse *)
Definition parse.c:81
isc_boolean_t parse_executable_statements(struct element *, struct parse *, isc_boolean_t *, enum expression_context)
Definition parse.c:1566
void options_init(void)
Definition options.c:420
void stackPush(struct parse *cfile, struct element *elem)
Definition keama.c:181
struct string * parse_ip6_addr_txt(struct parse *)
Definition parse.c:379
void spaces_init(void)
Definition options.c:400
struct option * parse_option_name(struct parse *, isc_boolean_t, isc_boolean_t *)
Definition parse.c:643
struct element * eval_numeric_expression(struct element *, isc_boolean_t *)
Definition eval.c:1481
isc_boolean_t parse_if_statement(struct element *, struct parse *, isc_boolean_t *)
Definition parse.c:2477
isc_boolean_t parse_on_statement(struct element *, struct parse *, isc_boolean_t *)
Definition parse.c:2309
void parse_pool6_statement(struct parse *, int)
Parse a pool6 statement.
Definition confparse.c:3472
void get_permit(struct parse *, struct element *)
Parse allow and deny statements.
Definition confparse.c:1004
size_t conf_file_subparse(struct parse *, int)
Definition confparse.c:535
statement_op
Definition keama.h:163
@ supersede_option_statement
Definition keama.h:170
@ statements_statement
Definition keama.h:174
@ unset_statement
Definition keama.h:180
@ switch_statement
Definition keama.h:176
@ if_statement
Definition keama.h:165
@ log_statement
Definition keama.h:183
@ null_statement
Definition keama.h:164
@ eval_statement
Definition keama.h:167
@ define_statement
Definition keama.h:182
@ on_statement
Definition keama.h:175
@ default_option_statement
Definition keama.h:169
@ default_statement
Definition keama.h:178
@ let_statement
Definition keama.h:181
@ prepend_option_statement
Definition keama.h:172
@ execute_statement
Definition keama.h:185
@ case_statement
Definition keama.h:177
@ send_option_statement
Definition keama.h:173
@ return_statement
Definition keama.h:184
@ vendor_opt_statement
Definition keama.h:186
@ append_option_statement
Definition keama.h:171
@ break_statement
Definition keama.h:168
@ set_statement
Definition keama.h:179
@ add_statement
Definition keama.h:166
isc_boolean_t parse_non_binary(struct element *, struct parse *, isc_boolean_t *, enum expression_context)
Definition parse.c:2687
void parse_group_declaration(struct parse *)
Definition confparse.c:2520
struct element * parse_allow_deny(struct parse *, int)
Definition confparse.c:3703
struct string * parse_option_token_binary(struct parse *, const char *)
Definition parse.c:4511
isc_boolean_t is_data_expression(struct element *)
Definition parse.c:5722
struct element * eval_boolean_expression(struct element *, isc_boolean_t *)
Definition eval.c:72
void skip_to_rbrace(struct parse *, int)
Definition parse.c:98
void parse_option_code_definition(struct parse *, struct option *)
Definition parse.c:1572
struct string * parse_hexa(struct parse *)
Definition parse.c:1524
struct element * eval_expression(struct element *, isc_boolean_t *)
Definition eval.c:43
struct string * convert_format(const char *, isc_boolean_t *, isc_boolean_t *)
Definition parse.c:1338
struct string * parse_option_token(struct parse *, const char *, isc_boolean_t *, isc_boolean_t *, isc_boolean_t *)
Definition parse.c:4388
void parse_semi(struct parse *)
Definition parse.c:139
void close_group(struct parse *, struct element *)
Definition confparse.c:2589
void parse_error(struct parse *, const char *,...) __attribute__((__format__(__printf__
isc_boolean_t parse_config_data(struct element *, struct parse *, struct option *)
Definition parse.c:4692
struct space * space_lookup(const char *)
Definition options.c:565
struct element * json_parse(struct parse *)
Definition json.c:32
const char * display_status(enum option_status)
Definition options.c:1140
struct element * reduce_numeric_expression(struct element *)
Definition reduce.c:946
@ expr_hw_address
Definition keama.h:206
@ expr_hw_type
Definition keama.h:205
isc_boolean_t parse_statement(struct parse *, int, isc_boolean_t)
Definition confparse.c:584
void parse_option_status_dir(struct parse *, struct option *, enum dhcp_token)
Definition confparse.c:4236
void push_space(struct space *)
Definition options.c:642
struct string * parse_ip6_addr(struct parse *)
Definition parse.c:325
void parse_prefix6(struct parse *, int, size_t)
Definition confparse.c:3333
void merge_option_data(struct element *, struct element *)
Definition options.c:708
isc_boolean_t parse_zone(struct element *, struct parse *)
Definition parse.c:2098
void parse_option_space_decl(struct parse *)
Definition parse.c:1349
const char * format
Definition keama.h:271
enum option_status status
Definition keama.h:274
unsigned code
Definition keama.h:273
const char * name
Definition keama.h:270
const char * space
Definition keama.h:272
Definition tree.h:345
const char * format
Definition tree.h:347
unsigned code
Definition tree.h:349
TAILQ_ENTRY(option) next
enum option_status status
Definition keama.h:297
const char * old
Definition keama.h:292
const struct space * space
Definition keama.h:295
const char * name
Definition tree.h:346
Definition dhcpd.h:288
size_t issue_counter
Definition keama.h:113
int ugflag
Definition dhcpd.h:321
size_t buflen
Definition dhcpd.h:329
TAILQ_ENTRY(parse) next
char line1[81]
Definition dhcpd.h:314
struct comments comments
Definition keama.h:116
int tlen
Definition dhcpd.h:323
int warnings_occurred
Definition dhcpd.h:326
size_t stack_size
Definition keama.h:111
enum dhcp_token token
Definition dhcpd.h:320
size_t bufsiz
Definition dhcpd.h:330
int tlpos
Definition dhcpd.h:318
size_t bufix
Definition dhcpd.h:329
int tline
Definition dhcpd.h:319
size_t stack_top
Definition keama.h:112
char tokbuf[1500]
Definition dhcpd.h:324
char * prev_line
Definition dhcpd.h:292
char * tval
Definition dhcpd.h:322
int eol_token
Definition dhcpd.h:295
char * inbuf
Definition dhcpd.h:328
char * cur_line
Definition dhcpd.h:293
int lpos
Definition dhcpd.h:316
struct element ** stack
Definition keama.h:110
char line2[81]
Definition dhcpd.h:315
const char * name
Definition keama.h:279
const char * old
Definition keama.h:278
enum option_status status
Definition keama.h:280
Definition keama.h:283
struct element * vendor
Definition keama.h:287
TAILQ_ENTRY(space) next
const char * old
Definition keama.h:284
enum option_status status
Definition keama.h:286
const char * name
Definition keama.h:285
Definition data.h:171
expression_context
Definition tree.h:83
@ context_function
Definition tree.h:90
@ context_data
Definition tree.h:86
@ context_dns
Definition tree.h:88
@ context_data_or_numeric
Definition tree.h:89
@ context_boolean
Definition tree.h:85
@ context_numeric
Definition tree.h:87
@ context_any
Definition tree.h:84
expr_op
Definition tree.h:131
@ expr_ucase
Definition tree.h:188
@ expr_funcall
Definition tree.h:177
@ expr_gethostname
Definition tree.h:192
@ expr_extract_int8
Definition tree.h:147
@ expr_ns_not_exists
Definition tree.h:169
@ expr_host_lookup
Definition tree.h:139
@ expr_option
Definition tree.h:143
@ expr_encode_int32
Definition tree.h:152
@ expr_static
Definition tree.h:165
@ expr_binary_and
Definition tree.h:184
@ expr_encode_int16
Definition tree.h:151
@ expr_regex_match
Definition tree.h:190
@ expr_equal
Definition tree.h:135
@ expr_check
Definition tree.h:134
@ expr_none
Definition tree.h:132
@ expr_lease_time
Definition tree.h:163
@ expr_extract_int16
Definition tree.h:148
@ expr_filename
Definition tree.h:174
@ expr_binary_or
Definition tree.h:185
@ expr_pick_first_value
Definition tree.h:162
@ expr_encapsulate
Definition tree.h:155
@ expr_ns_add
Definition tree.h:166
@ expr_concat_dclist
Definition tree.h:194
@ expr_remainder
Definition tree.h:183
@ expr_config_option
Definition tree.h:160
@ expr_not
Definition tree.h:142
@ expr_add
Definition tree.h:179
@ expr_const_int
Definition tree.h:153
@ expr_sname
Definition tree.h:175
@ expr_divide
Definition tree.h:182
@ expr_hardware
Definition tree.h:144
@ expr_concat
Definition tree.h:138
@ expr_or
Definition tree.h:141
@ expr_and
Definition tree.h:140
@ expr_null
Definition tree.h:171
@ expr_dns_transaction
Definition tree.h:164
@ expr_host_decl_name
Definition tree.h:161
@ expr_known
Definition tree.h:156
@ expr_leased_address
Definition tree.h:158
@ expr_lcase
Definition tree.h:189
@ expr_exists
Definition tree.h:154
@ expr_const_data
Definition tree.h:146
@ expr_binary_to_ascii
Definition tree.h:159
@ expr_ns_delete
Definition tree.h:167
@ expr_extract_int32
Definition tree.h:149
@ expr_substring
Definition tree.h:136
@ expr_iregex_match
Definition tree.h:191
@ expr_multiply
Definition tree.h:181
@ expr_suffix
Definition tree.h:137
@ expr_function
Definition tree.h:178
@ expr_packet
Definition tree.h:145
@ expr_encode_int8
Definition tree.h:150
@ expr_variable_exists
Definition tree.h:172
@ expr_match
Definition tree.h:133
@ expr_subtract
Definition tree.h:180
@ expr_binary_xor
Definition tree.h:186
@ expr_arg
Definition tree.h:176
@ expr_not_equal
Definition tree.h:170
@ expr_v6relay
Definition tree.h:193
@ expr_client_state
Definition tree.h:187
@ expr_reverse
Definition tree.h:157
@ expr_variable_reference
Definition tree.h:173
@ expr_ns_exists
Definition tree.h:168