From 74e9331fe0892c4c96b4c4d7db3f14bb7e9d928e Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Thu, 18 Mar 2010 00:10:35 +0100 Subject: [PATCH] Fixes behavior of defined() on bgp_community attribute. --- filter/filter.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/filter/filter.c b/filter/filter.c index 81bfd4e5..bfb480ab 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");