diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2010-03-18 00:10:35 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2010-03-18 00:10:35 +0100 |
commit | 74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e (patch) | |
tree | d6a11b64a328925df0de933b0ef797272aa8b3f2 /filter | |
parent | 1528d30aebc462a13861d7cdb827e74556f3aa91 (diff) | |
download | bird-74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e.tar bird-74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e.zip |
Fixes behavior of defined() on bgp_community attribute.
Diffstat (limited to 'filter')
-rw-r--r-- | filter/filter.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/filter/filter.c b/filter/filter.c index 81bfd4e..bfb480a 100644 --- a/filter/filter.c +++ b/filter/filter.c @@ -607,12 +607,6 @@ interpret(struct f_inst *what) e = ea_find( (*f_rte)->attrs->eattrs, what->a2.i ); if (!e) { - /* A special case: undefined int_set looks like empty int_set */ - if ((what->aux & EAF_TYPE_MASK) == EAF_TYPE_INT_SET) { - res.type = T_CLIST; - res.val.ad = adata_empty(f_pool); - break; - } /* Undefined value */ res.type = T_VOID; break; @@ -821,7 +815,11 @@ interpret(struct f_inst *what) case P('C','a'): /* Community list add or delete */ TWOARGS; - if (v1.type != T_CLIST) + + /* Replace undefined value with empty community list */ + if (v1.type == T_VOID) + v1.val.ad = adata_empty(f_pool); + else if (v1.type != T_CLIST) runtime("Can't add/delete to non-clist"); if (v2.type != T_PAIR) runtime("Can't add/delete non-pair"); |