diff options
author | Ted Lemon <source@isc.org> | 1999-04-12 22:11:12 +0000 |
---|---|---|
committer | Ted Lemon <source@isc.org> | 1999-04-12 22:11:12 +0000 |
commit | 5ce6b57615e06ec7b59a6ba4b55f7251321484bf (patch) | |
tree | d8dd92709511eadd697ab77b8b8d59906711dcf9 | |
parent | 7033063307e2cda2104112cc30ef5649a92c53e8 (diff) | |
download | isc-dhcp-5ce6b57615e06ec7b59a6ba4b55f7251321484bf.tar.gz |
Support expr_known.
-rw-r--r-- | common/tree.c | 26 |
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: |