diff options
Diffstat (limited to 'filter')
-rw-r--r-- | filter/config.Y | 2 | ||||
-rw-r--r-- | filter/filter.c | 4 |
2 files changed, 4 insertions, 2 deletions
diff --git a/filter/config.Y b/filter/config.Y index b410397..8f41f44 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -235,7 +235,7 @@ constant: | TEXT { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_STRING; $$->a2.p = $1; } | pair { $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_PAIR; $$->a2.i = $1; } | ipa { NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; *val = $1; } - | prefix {NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; *val = $1; } + | prefix_s {NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; *val = $1; } | '[' set_items ']' { printf( "We've got a set here..." ); $$ = f_new_inst(); $$->code = 'c'; $$->a1.i = T_SET; $$->a2.p = build_tree($2); printf( "ook\n" ); } ; diff --git a/filter/filter.c b/filter/filter.c index a6030ae..0dc4b21 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -6,6 +6,8 @@ * Can be freely distributed and used under the terms of the GNU GPL. * * Notice that pair is stored as integer: first << 16 | second + * + * FIXME: Check if prefixes are really prefixes. */ #include <stdio.h> @@ -111,7 +113,7 @@ val_in_range(struct f_val v1, struct f_val v2) if (res != CMP_ERROR) return res; - if (((v1.type == T_INT) || (v1.type == T_IP)) && (v2.type == T_SET)) { + if (((v1.type == T_INT) || ((v1.type == T_IP) || (v1.type == T_PREFIX)) && (v2.type == T_SET))) { struct f_tree *n; n = find_tree(v2.val.t, v1); if (!n) |