File:  [ELWIX - Embedded LightWeight unIX -] / embedaddon / dhcp / includes / statement.h
Revision 1.1.1.1 (vendor branch): download - view: text, annotated - select for diffs - revision graph
Tue Oct 9 09:06:54 2012 UTC (12 years ago) by misho
Branches: dhcp, MAIN
CVS tags: v4_1_R7p0, v4_1_R7, v4_1_R4, HEAD
dhcp 4.1 r7

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

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>