1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
/* statement.h
Definitions for executable statements... */
/*
* Copyright (c) 2004,2007 by Internet Systems Consortium, Inc. ("ISC")
* Copyright (c) 1996-2003 by Internet Software Consortium
*
* Permission to use, copy, modify, and distribute this software for any
* purpose with or without fee is hereby granted, provided that the above
* copyright notice and this permission notice appear in all copies.
*
* THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
* OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Internet Systems Consortium, Inc.
* 950 Charter Street
* Redwood City, CA 94063
* <info@isc.org>
* https://www.isc.org/
*
* This software has been written for Internet Systems Consortium
* by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc.
* To learn more about Internet Systems Consortium, see
* ``https://www.isc.org/''. To learn more about Vixie Enterprises,
* see ``http://www.vix.com''. To learn more about Nominum, Inc., see
* ``http://www.nominum.com''.
*/
struct executable_statement {
int refcnt;
struct executable_statement *next;
enum statement_op {
null_statement,
if_statement,
add_statement,
eval_statement,
break_statement,
default_option_statement,
supersede_option_statement,
append_option_statement,
prepend_option_statement,
send_option_statement,
statements_statement,
on_statement,
switch_statement,
case_statement,
default_statement,
set_statement,
unset_statement,
let_statement,
define_statement,
log_statement,
return_statement,
execute_statement
} op;
union {
struct {
struct executable_statement *tc, *fc;
struct expression *expr;
} ie;
struct expression *eval;
struct expression *retval;
struct class *add;
struct option_cache *option;
struct option_cache *supersede;
struct option_cache *prepend;
struct option_cache *append;
struct executable_statement *statements;
struct {
int evtypes;
# define ON_COMMIT 1
# define ON_EXPIRY 2
# define ON_RELEASE 4
# define ON_TRANSMISSION 8
struct executable_statement *statements;
} on;
struct {
struct expression *expr;
struct executable_statement *statements;
} s_switch;
struct expression *c_case;
struct {
char *name;
struct expression *expr;
struct executable_statement *statements;
} set, let;
char *unset;
struct {
enum {
log_priority_fatal,
log_priority_error,
log_priority_debug,
log_priority_info
} priority;
struct expression *expr;
} log;
struct {
char *command;
struct expression *arglist;
int argc;
} execute;
} data;
};
|