Filter: Improve handling of sets in BGP path masks

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.
This commit is contained in:
Kazuki Yamaguchi 2020-06-28 15:37:01 +02:00 committed by Ondrej Zajicek (work)
parent 4ef0a96639
commit a948cf9a5c

View 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;