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