diff options
-rw-r--r-- | filter/filter.c | 2 | ||||
-rw-r--r-- | filter/test.conf | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/filter/filter.c b/filter/filter.c index f7b130a..6dc2ffd 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -63,6 +63,8 @@ val_simple_in_range(struct f_val v1, struct f_val v2) { if ((v1.type == T_PATH) && (v2.type == T_PATH_MASK)) return as_path_match(v1.val.ad, v2.val.path_mask); + if ((v1.type == T_PAIR) && (v2.type == T_CLIST)) + return int_set_contains(v2.val.ad, v1.val.i); if ((v1.type == T_IP) && (v2.type == T_PREFIX)) return !(ipa_compare(ipa_and(v2.val.px.ip, ipa_mkmask(v2.val.px.len)), ipa_and(v1.val.px.ip, ipa_mkmask(v2.val.px.len)))); diff --git a/filter/test.conf b/filter/test.conf index f266828..9e6e31d 100644 --- a/filter/test.conf +++ b/filter/test.conf @@ -52,8 +52,10 @@ clist l; l = add( l, (1,2) ); l = add( l, (2,3) ); print "Community list (1,2) (2,3) ", l; + print "Should be true: ", (2,3) ~ l; l = delete( l, (2,3) ); print "Community list (1,2) ", l; + print "Should be false: ", (2,3) ~ l; } function startup() |