mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 16:20:08 +00:00
bgpd: allow derived router-id update if previously 0x0
Problem found that if a router-id was not defined or derived initially, the bgp->router_id would be set to 0x0 and used for determining auto-rd values. When bgp received a subsequent router-id update from zebra, bgp would not completely process the update since it was treated as updating an already derived router-id with a new value, which is not desired. This also could leave the auto rd/rt inforamation missing or invalid in some cases. This fix allows updating the derived router-id if the previous value was 0/0. Ticket: CM-31441 Signed-off-by: Don Slice <dslice@nvidia.com>
This commit is contained in:
parent
b3382a4c64
commit
63b70c84b7
20
bgpd/bgpd.c
20
bgpd/bgpd.c
@ -289,7 +289,15 @@ void bgp_router_id_zebra_bump(vrf_id_t vrf_id, const struct prefix *router_id)
|
||||
bgp->name_pretty,
|
||||
bgp->vrf_id,
|
||||
inet_ntoa(*addr));
|
||||
bgp_router_id_set(bgp, addr, false);
|
||||
/*
|
||||
* if old router-id was 0x0, set flag
|
||||
* to use this new value
|
||||
*/
|
||||
bgp_router_id_set(bgp, addr,
|
||||
(bgp->router_id.s_addr
|
||||
== INADDR_ANY)
|
||||
? true
|
||||
: false);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -312,7 +320,15 @@ void bgp_router_id_zebra_bump(vrf_id_t vrf_id, const struct prefix *router_id)
|
||||
bgp->name_pretty,
|
||||
bgp->vrf_id,
|
||||
inet_ntoa(*addr));
|
||||
bgp_router_id_set(bgp, addr, false);
|
||||
/*
|
||||
* if old router-id was 0x0, set flag
|
||||
* to use this new value
|
||||
*/
|
||||
bgp_router_id_set(bgp, addr,
|
||||
(bgp->router_id.s_addr
|
||||
== INADDR_ANY)
|
||||
? true
|
||||
: false);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user