diff options
| author | Donald Sharp <sharpd@nvidia.com> | 2021-10-24 15:02:11 -0400 |
|---|---|---|
| committer | Donald Sharp <sharpd@nvidia.com> | 2021-10-24 15:09:30 -0400 |
| commit | 6e26b2e21f1f742bd0b4f40b4535c75b03b49a89 (patch) | |
| tree | 3d056262300ad99ba16d7c653c5b5473c98dfa03 | |
| parent | cbdf0306139d64f3967e8f8ba321a39f32281b56 (diff) | |
bgpd: When issuing `no ... ebgp-multihop` always resets
When removing the command `no neighbor <X> ebgp-multihop <Y>`
the bgp code was always resetting the connection even if
the command would do nothing.
Fixes: #6464
Signed-off-by: Donald Sharp <sharpd@nvidia.com>
| -rw-r--r-- | bgpd/bgpd.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/bgpd/bgpd.c b/bgpd/bgpd.c index b191029d2f..c5a5e49a48 100644 --- a/bgpd/bgpd.c +++ b/bgpd/bgpd.c @@ -4775,6 +4775,7 @@ int peer_ebgp_multihop_unset(struct peer *peer) { struct peer_group *group; struct listnode *node, *nnode; + int ttl; if (peer->sort == BGP_PEER_IBGP) return 0; @@ -4783,9 +4784,14 @@ int peer_ebgp_multihop_unset(struct peer *peer) return BGP_ERR_NO_EBGP_MULTIHOP_WITH_TTLHACK; if (peer_group_active(peer)) - peer->ttl = peer->group->conf->ttl; + ttl = peer->group->conf->ttl; else - peer->ttl = BGP_DEFAULT_TTL; + ttl = BGP_DEFAULT_TTL; + + if (ttl == peer->ttl) + return 0; + + peer->ttl = ttl; if (!CHECK_FLAG(peer->sflags, PEER_STATUS_GROUP)) { if (BGP_IS_VALID_STATE_FOR_NOTIF(peer->status)) |
