summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Machek <pavel@ucw.cz>2000-04-17 13:49:21 +0200
committerPavel Machek <pavel@ucw.cz>2000-04-17 13:49:21 +0200
commit2bd2de0188f6a0c1c9482cfc15e35c2b1b81c81a (patch)
treeff7459ee6734c293a5ab98071b386030d6421dba
parent5a2455886db55ae2d1eb8934c7686b4f6586f83c (diff)
downloadbird-2bd2de0188f6a0c1c9482cfc15e35c2b1b81c81a.tar
bird-2bd2de0188f6a0c1c9482cfc15e35c2b1b81c81a.zip
pair ~ community list matching works.
-rw-r--r--filter/filter.c2
-rw-r--r--filter/test.conf2
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()