summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Lemon <source@isc.org>1999-04-12 22:11:12 +0000
committerTed Lemon <source@isc.org>1999-04-12 22:11:12 +0000
commit5ce6b57615e06ec7b59a6ba4b55f7251321484bf (patch)
treed8dd92709511eadd697ab77b8b8d59906711dcf9
parent7033063307e2cda2104112cc30ef5649a92c53e8 (diff)
downloadisc-dhcp-5ce6b57615e06ec7b59a6ba4b55f7251321484bf.tar.gz
Support expr_known.
-rw-r--r--common/tree.c26
1 files changed, 23 insertions, 3 deletions
diff --git a/common/tree.c b/common/tree.c
index c818732a..e7695db6 100644
--- a/common/tree.c
+++ b/common/tree.c
@@ -22,7 +22,7 @@
#ifndef lint
static char copyright[] =
-"$Id: tree.c,v 1.25 1999/04/05 19:06:50 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium. All rights reserved.\n";
+"$Id: tree.c,v 1.26 1999/04/12 22:11:12 mellon Exp $ Copyright (c) 1995, 1996, 1997, 1998 The Internet Software Consortium. All rights reserved.\n";
#endif /* not lint */
#include "dhcpd.h"
@@ -494,12 +494,26 @@ int evaluate_boolean_expression (result, packet, options, expr)
"evaluate_boolean_expression");
}
#if defined (DEBUG_EXPRESSIONS)
- log_info ("data: exists %s.%s = %s",
+ log_info ("bool: exists %s.%s = %s",
expr -> data.option -> universe -> name,
expr -> data.option -> name, *result ? "true" : "false");
#endif
return 1;
+ case expr_known:
+ if (!packet) {
+#if defined (DEBUG_EXPRESSIONS)
+ log_info ("bool: known = NULL");
+#endif
+ return 0;
+ }
+#if defined (DEBUG_EXPRESSIONS)
+ log_info ("bool: known = %s",
+ packet -> known ? "true" : "false");
+#endif
+ *result = packet -> known;
+ return 1;
+
case expr_substring:
case expr_suffix:
case expr_option:
@@ -522,7 +536,8 @@ int evaluate_boolean_expression (result, packet, options, expr)
return 0;
}
- log_error ("Bogus opcode in evaluate_boolean_expression: %d", expr -> op);
+ log_error ("Bogus opcode in evaluate_boolean_expression: %d",
+ expr -> op);
return 0;
}
@@ -779,6 +794,7 @@ int evaluate_data_expression (result, packet, options, expr)
case expr_or:
case expr_not:
case expr_match:
+ case expr_known:
log_error ("Boolean opcode in evaluate_data_expression: %d",
expr -> op);
return 0;
@@ -812,6 +828,7 @@ int evaluate_numeric_expression (result, packet, options, expr)
case expr_or:
case expr_not:
case expr_match:
+ case expr_known:
log_error ("Boolean opcode in evaluate_numeric_expression: %d",
expr -> op);
return 0;
@@ -1052,6 +1069,7 @@ void expression_dereference (eptr, name)
case expr_option:
case expr_hardware:
case expr_exists:
+ case expr_known:
break;
default:
@@ -1158,6 +1176,7 @@ static int op_val (op)
case expr_extract_int32:
case expr_const_int:
case expr_exists:
+ case expr_known:
return 100;
case expr_equal:
@@ -1202,6 +1221,7 @@ enum expression_context op_context (op)
case expr_extract_int32:
case expr_const_int:
case expr_exists:
+ case expr_known:
return context_any;
case expr_equal: