From: Ondrej Zajicek Date: Wed, 17 Mar 2010 23:10:35 +0000 (+0100) Subject: Fixes behavior of defined() on bgp_community attribute. X-Git-Tag: v1.2.2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e;p=thirdparty%2Fbird.git Fixes behavior of defined() on bgp_community attribute. --- diff --git a/filter/filter.c b/filter/filter.c index 81bfd4e5e..bfb480ab7 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");