mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-07-09 11:05:04 +00:00
Merge pull request #14325 from donaldsharp/peerhash_take_two
bgpd: Add peers back to peer hash when peer_xfer_conn fails
This commit is contained in:
commit
2ed81c8ef8
@ -2137,6 +2137,7 @@ bgp_establish(struct peer_connection *connection)
|
||||
struct peer *other;
|
||||
int status;
|
||||
struct peer *peer = connection->peer;
|
||||
struct peer *orig = peer;
|
||||
|
||||
other = peer->doppelganger;
|
||||
hash_release(peer->bgp->peerhash, peer);
|
||||
@ -2146,6 +2147,17 @@ bgp_establish(struct peer_connection *connection)
|
||||
peer = peer_xfer_conn(peer);
|
||||
if (!peer) {
|
||||
flog_err(EC_BGP_CONNECT, "%%Neighbor failed in xfer_conn");
|
||||
|
||||
/*
|
||||
* A failure of peer_xfer_conn but not putting the peers
|
||||
* back in the hash ends up with a situation where incoming
|
||||
* connections are rejected, as that the peer is not found
|
||||
* when a lookup is done
|
||||
*/
|
||||
(void)hash_get(orig->bgp->peerhash, orig, hash_alloc_intern);
|
||||
if (other)
|
||||
(void)hash_get(other->bgp->peerhash, other,
|
||||
hash_alloc_intern);
|
||||
return BGP_FSM_FAILURE;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user