mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-27 11:44:16 +00:00
Merge pull request #14109 from taspelund/noreset_update_src
bgpd: skip reset when removing dup update-source
This commit is contained in:
commit
1aa34e5fb7
13
bgpd/bgpd.c
13
bgpd/bgpd.c
@ -5393,16 +5393,29 @@ void peer_update_source_unset(struct peer *peer)
|
|||||||
{
|
{
|
||||||
struct peer *member;
|
struct peer *member;
|
||||||
struct listnode *node, *nnode;
|
struct listnode *node, *nnode;
|
||||||
|
bool src_unchanged = false;
|
||||||
|
|
||||||
if (!CHECK_FLAG(peer->flags, PEER_FLAG_UPDATE_SOURCE))
|
if (!CHECK_FLAG(peer->flags, PEER_FLAG_UPDATE_SOURCE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/* Inherit configuration from peer-group if peer is member. */
|
/* Inherit configuration from peer-group if peer is member. */
|
||||||
if (peer_group_active(peer)) {
|
if (peer_group_active(peer)) {
|
||||||
|
/* Don't reset peer if the update_source we'll inherit from
|
||||||
|
* the peer-group matches the peer's existing update_source
|
||||||
|
*/
|
||||||
|
src_unchanged =
|
||||||
|
(peer->update_source &&
|
||||||
|
peer->group->conf->update_source &&
|
||||||
|
sockunion_cmp(peer->update_source,
|
||||||
|
peer->group->conf->update_source) == 0);
|
||||||
|
|
||||||
peer_flag_inherit(peer, PEER_FLAG_UPDATE_SOURCE);
|
peer_flag_inherit(peer, PEER_FLAG_UPDATE_SOURCE);
|
||||||
PEER_SU_ATTR_INHERIT(peer, peer->group, update_source);
|
PEER_SU_ATTR_INHERIT(peer, peer->group, update_source);
|
||||||
PEER_STR_ATTR_INHERIT(peer, peer->group, update_if,
|
PEER_STR_ATTR_INHERIT(peer, peer->group, update_if,
|
||||||
MTYPE_PEER_UPDATE_SOURCE);
|
MTYPE_PEER_UPDATE_SOURCE);
|
||||||
|
|
||||||
|
if (src_unchanged)
|
||||||
|
return;
|
||||||
} else {
|
} else {
|
||||||
/* Otherwise remove flag and configuration from peer. */
|
/* Otherwise remove flag and configuration from peer. */
|
||||||
peer_flag_unset(peer, PEER_FLAG_UPDATE_SOURCE);
|
peer_flag_unset(peer, PEER_FLAG_UPDATE_SOURCE);
|
||||||
|
Loading…
Reference in New Issue
Block a user