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");