]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Filter: Improve handling of sets in BGP path masks
authorKazuki Yamaguchi <k@rhe.jp>
Sun, 28 Jun 2020 13:37:01 +0000 (15:37 +0200)
committerOndrej Zajicek (work) <santiago@crfreenet.org>
Sun, 28 Jun 2020 13:37:01 +0000 (15:37 +0200)
Compare the content of PM_ASN_SET in path masks. A reconfiguration
was not properly triggering a reload of affected protocols when the
members of a set in a path mask change.

Also, update the printing code to so that it can display sets in a path
mask.

filter/data.c

index 9547a4c848338bb14d83a8e6516e50895bed5517..7c33d2cb681a72d406f6f3551aecc788e395b98f 100644 (file)
@@ -121,6 +121,11 @@ pm_format(const struct f_path_mask *p, buffer *buf)
       buffer_print(buf, "%u..%u ", p->item[i].from, p->item[i].to);
       break;
 
+    case PM_ASN_SET:
+      tree_format(p->item[i].set, buf);
+      buffer_puts(buf, " ");
+      break;
+
     case PM_ASN_EXPR:
       ASSERT(0);
     }
@@ -221,6 +226,10 @@ pmi_same(const struct f_path_mask_item *mi1, const struct f_path_mask_item *mi2)
       if (mi1->to != mi2->to)
        return 0;
       break;
+    case PM_ASN_SET:
+      if (!same_tree(mi1->set, mi2->set))
+       return 0;
+      break;
   }
 
   return 1;