includes/statement.h

Go to the documentation of this file.
00001 /* statement.h
00002 
00003    Definitions for executable statements... */
00004 
00005 /*
00006  * Copyright (c) 2004,2007,2009,2014 by Internet Systems Consortium, Inc. ("ISC")
00007  * Copyright (c) 1996-2003 by Internet Software Consortium
00008  *
00009  * Permission to use, copy, modify, and distribute this software for any
00010  * purpose with or without fee is hereby granted, provided that the above
00011  * copyright notice and this permission notice appear in all copies.
00012  *
00013  * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES
00014  * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
00015  * MERCHANTABILITY AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR
00016  * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
00017  * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
00018  * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT
00019  * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
00020  *
00021  *   Internet Systems Consortium, Inc.
00022  *   950 Charter Street
00023  *   Redwood City, CA 94063
00024  *   <info@isc.org>
00025  *   https://www.isc.org/
00026  *
00027  */
00028 
00029 struct executable_statement {
00030         int refcnt;
00031         struct executable_statement *next;
00032         enum statement_op {
00033                 null_statement,
00034                 if_statement,
00035                 add_statement,
00036                 eval_statement,
00037                 break_statement,
00038                 default_option_statement,
00039                 supersede_option_statement,
00040                 append_option_statement,
00041                 prepend_option_statement,
00042                 send_option_statement,
00043                 statements_statement,
00044                 on_statement,
00045                 switch_statement,
00046                 case_statement,
00047                 default_statement,
00048                 set_statement,
00049                 unset_statement,
00050                 let_statement,
00051                 define_statement,
00052                 log_statement,
00053                 return_statement,
00054                 execute_statement
00055         } op;
00056         union {
00057                 struct {
00058                         struct executable_statement *tc, *fc;
00059                         struct expression *expr;
00060                 } ie;
00061                 struct expression *eval;
00062                 struct expression *retval;
00063                 struct class *add;
00064                 struct option_cache *option;
00065                 struct option_cache *supersede;
00066                 struct option_cache *prepend;
00067                 struct option_cache *append;
00068                 struct executable_statement *statements;
00069                 struct {
00070                         int evtypes;
00071 #                       define ON_COMMIT  1
00072 #                       define ON_EXPIRY  2
00073 #                       define ON_RELEASE 4
00074 #                       define ON_TRANSMISSION 8
00075                         struct executable_statement *statements;
00076                 } on;
00077                 struct {
00078                         struct expression *expr;
00079                         struct executable_statement *statements;
00080                 } s_switch;
00081                 struct expression *c_case;
00082                 struct {
00083                         char *name;
00084                         struct expression *expr;
00085                         struct executable_statement *statements;
00086                 } set, let;
00087                 char *unset;
00088                 struct {
00089                         enum {
00090                                 log_priority_fatal,
00091                                 log_priority_error,
00092                                 log_priority_debug,
00093                                 log_priority_info
00094                         } priority;
00095                         struct expression *expr;
00096                 } log;
00097                 struct {
00098                         char *command;
00099                         struct expression *arglist;
00100                         int argc;
00101                 } execute;
00102         } data;
00103 };
00104 

Generated on 5 Apr 2014 for ISC DHCP by  doxygen 1.6.1