#ifndef lint
static char copyright[] =
-"$Id: execute.c,v 1.30 2000/03/17 03:59:01 mellon Exp $ Copyright (c) 1998-2000 The Internet Software Consortium. All rights reserved.\n";
+"$Id: execute.c,v 1.31 2000/04/13 21:48:34 mellon Exp $ Copyright (c) 1998-2000 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
case on_statement:
if (lease) {
if (r -> data.on.evtypes & ON_EXPIRY) {
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: on expiry");
+#endif
if (lease -> on_expiry)
executable_statement_dereference
(&lease -> on_expiry, MDL);
r -> data.on.statements, MDL);
}
if (r -> data.on.evtypes & ON_RELEASE) {
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: on release");
+#endif
if (lease -> on_release)
executable_statement_dereference
(&lease -> on_release, MDL);
r -> data.on.statements, MDL);
}
if (r -> data.on.evtypes & ON_COMMIT) {
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: on commit");
+#endif
if (lease -> on_commit)
executable_statement_dereference
(&lease -> on_commit, MDL);
break;
case switch_statement:
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: switch");
+#endif
e = find_matching_case (packet, lease,
in_options, out_options, scope,
r -> data.s_switch.expr,
r -> data.s_switch.statements);
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: switch: case %lx", (unsigned long)e);
+#endif
if (e && !execute_statements (packet, lease,
in_options, out_options,
scope, e))
return 0;
+ break;
/* These have no effect when executed. */
case case_statement:
out_options, scope, r -> data.eval);
#if defined (DEBUG_EXPRESSIONS)
log_debug ("exec: evaluate: %s",
- (status "succeeded" : "failed"));
+ (status ? "succeeded" : "failed"));
#endif
break;
#if defined (DEBUG_EXPRESSIONS)
log_debug ("exec: break");
#endif
- return 0;
+ return 1;
case supersede_option_statement:
#if defined (DEBUG_EXPRESSIONS)
case set_statement:
binding = find_binding (scope, r -> data.set.name);
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: set %s", r -> data.set.name);
+#endif
if (!binding && status) {
binding = dmalloc (sizeof *binding, MDL);
if (binding) {
case unset_statement:
binding = find_binding (scope, r -> data.unset);
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: unset %s", r -> data.unset);
+#endif
if (binding) {
if (binding -> value)
binding_value_dereference
break;
case let_statement:
+#if defined (DEBUG_EXPRESSIONS)
+ log_debug ("exec: let %s", r -> data.let.name);
+#endif
ns = (struct binding_scope *)0;
binding_scope_allocate (&ns, MDL);
e = r;