BGP: Fix handling of transitive extended communities
Transitive extended communities should be removed on external sessions, the old code them in all cases. Thanks to Jean-Daniel Pauget for the original patch.
This commit is contained in:
parent
5ce881be82
commit
ec331acf48
1 changed files with 15 additions and 5 deletions
|
@ -717,6 +717,8 @@ bgp_decode_mp_unreach_nlri(struct bgp_parse_state *s, uint code UNUSED, uint fla
|
|||
static void
|
||||
bgp_export_ext_community(struct bgp_export_state *s, eattr *a)
|
||||
{
|
||||
if (!s->proto->is_interior)
|
||||
{
|
||||
struct adata *ad = ec_set_del_nontrans(s->pool, a->u.ptr);
|
||||
|
||||
if (ad->length == 0)
|
||||
|
@ -724,6 +726,14 @@ bgp_export_ext_community(struct bgp_export_state *s, eattr *a)
|
|||
|
||||
ec_set_sort_x(ad);
|
||||
a->u.ptr = ad;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (a->u.ptr->length == 0)
|
||||
UNSET(a);
|
||||
|
||||
a->u.ptr = ec_set_sort(s->pool, a->u.ptr);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
Loading…
Reference in a new issue