1 1.2 christos /* $NetBSD: statement.h,v 1.3 2022/04/03 01:10:58 christos Exp $ */ 2 1.1 christos 3 1.1 christos /* statement.h 4 1.1 christos 5 1.1 christos Definitions for executable statements... */ 6 1.1 christos 7 1.1 christos /* 8 1.3 christos * Copyright (C) 2004-2022 Internet Systems Consortium, Inc. ("ISC") 9 1.1 christos * Copyright (c) 1996-2003 by Internet Software Consortium 10 1.1 christos * 11 1.1 christos * This Source Code Form is subject to the terms of the Mozilla Public 12 1.1 christos * License, v. 2.0. If a copy of the MPL was not distributed with this 13 1.1 christos * file, You can obtain one at http://mozilla.org/MPL/2.0/. 14 1.1 christos * 15 1.1 christos * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES 16 1.1 christos * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 17 1.1 christos * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR 18 1.1 christos * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 19 1.1 christos * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 20 1.1 christos * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT 21 1.1 christos * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 22 1.1 christos * 23 1.1 christos * Internet Systems Consortium, Inc. 24 1.3 christos * PO Box 360 25 1.3 christos * Newmarket, NH 03857 USA 26 1.1 christos * <info (at) isc.org> 27 1.1 christos * https://www.isc.org/ 28 1.1 christos * 29 1.1 christos */ 30 1.1 christos 31 1.1 christos struct executable_statement { 32 1.1 christos int refcnt; 33 1.1 christos struct executable_statement *next; 34 1.1 christos enum statement_op { 35 1.1 christos null_statement, 36 1.1 christos if_statement, 37 1.1 christos add_statement, 38 1.1 christos eval_statement, 39 1.1 christos break_statement, 40 1.1 christos default_option_statement, 41 1.1 christos supersede_option_statement, 42 1.1 christos append_option_statement, 43 1.1 christos prepend_option_statement, 44 1.1 christos send_option_statement, 45 1.1 christos statements_statement, 46 1.1 christos on_statement, 47 1.1 christos switch_statement, 48 1.1 christos case_statement, 49 1.1 christos default_statement, 50 1.1 christos set_statement, 51 1.1 christos unset_statement, 52 1.1 christos let_statement, 53 1.1 christos define_statement, 54 1.1 christos log_statement, 55 1.1 christos return_statement, 56 1.1 christos execute_statement, 57 1.1 christos vendor_opt_statement 58 1.1 christos } op; 59 1.1 christos union { 60 1.1 christos struct { 61 1.1 christos struct executable_statement *tc, *fc; 62 1.1 christos struct expression *expr; 63 1.1 christos } ie; 64 1.1 christos struct expression *eval; 65 1.1 christos struct expression *retval; 66 1.1 christos struct class *add; 67 1.1 christos struct option_cache *option; 68 1.1 christos struct option_cache *supersede; 69 1.1 christos struct option_cache *prepend; 70 1.1 christos struct option_cache *append; 71 1.1 christos struct executable_statement *statements; 72 1.1 christos struct { 73 1.1 christos int evtypes; 74 1.1 christos # define ON_COMMIT 1 75 1.1 christos # define ON_EXPIRY 2 76 1.1 christos # define ON_RELEASE 4 77 1.1 christos # define ON_TRANSMISSION 8 78 1.1 christos struct executable_statement *statements; 79 1.1 christos } on; 80 1.1 christos struct { 81 1.1 christos struct expression *expr; 82 1.1 christos struct executable_statement *statements; 83 1.1 christos } s_switch; 84 1.1 christos struct expression *c_case; 85 1.1 christos struct { 86 1.1 christos char *name; 87 1.1 christos struct expression *expr; 88 1.1 christos struct executable_statement *statements; 89 1.1 christos } set, let; 90 1.1 christos char *unset; 91 1.1 christos struct { 92 1.1 christos enum { 93 1.1 christos log_priority_fatal, 94 1.1 christos log_priority_error, 95 1.1 christos log_priority_debug, 96 1.1 christos log_priority_info 97 1.1 christos } priority; 98 1.1 christos struct expression *expr; 99 1.1 christos } log; 100 1.1 christos struct { 101 1.1 christos char *command; 102 1.1 christos struct expression *arglist; 103 1.1 christos int argc; 104 1.1 christos } execute; 105 1.1 christos } data; 106 1.1 christos }; 107