]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Fixes behavior of defined() on bgp_community attribute.
authorOndrej Zajicek <santiago@crfreenet.org>
Wed, 17 Mar 2010 23:10:35 +0000 (00:10 +0100)
committerOndrej Zajicek <santiago@crfreenet.org>
Wed, 17 Mar 2010 23:10:35 +0000 (00:10 +0100)
filter/filter.c

index 81bfd4e5e3c99365c1c617f8f5194833a7fd005f..bfb480ab7862dc47c5f20aafb25713dc46a9bfe0 100644 (file)
@@ -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");