mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-02 23:38:55 +00:00
bgpd: Honor origin change in bgp aggregates
When the origin changed we must honor and update the aggregate to the peer. This code adds a bit of code to the bgp_aggregate_info_same code to see if the origin has changed and to indicate that it has. Fixes: #2993 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
This commit is contained in:
parent
7cbe25ab95
commit
21720617e2
@ -5456,7 +5456,8 @@ static void bgp_aggregate_free(struct bgp_aggregate *aggregate)
|
||||
XFREE(MTYPE_BGP_AGGREGATE, aggregate);
|
||||
}
|
||||
|
||||
static int bgp_aggregate_info_same(struct bgp_info *ri, struct aspath *aspath,
|
||||
static int bgp_aggregate_info_same(struct bgp_info *ri, uint8_t origin,
|
||||
struct aspath *aspath,
|
||||
struct community *comm)
|
||||
{
|
||||
static struct aspath *ae = NULL;
|
||||
@ -5467,6 +5468,9 @@ static int bgp_aggregate_info_same(struct bgp_info *ri, struct aspath *aspath,
|
||||
if (!ri)
|
||||
return 0;
|
||||
|
||||
if (origin != ri->attr->origin)
|
||||
return 0;
|
||||
|
||||
if (!aspath_cmp(ri->attr->aspath, (aspath) ? aspath : ae))
|
||||
return 0;
|
||||
|
||||
@ -5501,7 +5505,8 @@ static void bgp_aggregate_install(struct bgp *bgp, afi_t afi, safi_t safi,
|
||||
* If the aggregate information has not changed
|
||||
* no need to re-install it again.
|
||||
*/
|
||||
if (bgp_aggregate_info_same(rn->info, aspath, community)) {
|
||||
if (bgp_aggregate_info_same(rn->info, origin, aspath,
|
||||
community)) {
|
||||
bgp_unlock_node(rn);
|
||||
|
||||
if (aspath)
|
||||
|
Loading…
Reference in New Issue
Block a user