mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-06 18:04:03 +00:00
bgpd: Handle Delete status when peers flapping for BMP
Memory leak when doing quickly: clear ip bgp * or [no] neighbor X shutdown. Signed-off-by: Donatas Abraitis <donatas.abraitis@gmail.com>
This commit is contained in:
parent
ece7f50d65
commit
60563d0e62
@ -688,22 +688,32 @@ static int bmp_outgoing_packet(struct peer *peer, uint8_t type, bgp_size_t size,
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int bmp_peer_established(struct peer *peer)
|
||||
static int bmp_peer_status_changed(struct peer *peer)
|
||||
{
|
||||
struct bmp_bgp *bmpbgp = bmp_bgp_find(peer->bgp);
|
||||
struct bmp_bgp_peer *bbpeer, *bbdopp;
|
||||
|
||||
frrtrace(1, frr_bgp, bmp_peer_status_changed, peer);
|
||||
|
||||
if (!bmpbgp)
|
||||
return 0;
|
||||
|
||||
if (peer->status == Deleted) {
|
||||
bbpeer = bmp_bgp_peer_find(peer->qobj_node.nid);
|
||||
if (bbpeer) {
|
||||
XFREE(MTYPE_BMP_OPEN, bbpeer->open_rx);
|
||||
XFREE(MTYPE_BMP_OPEN, bbpeer->open_tx);
|
||||
bmp_peerh_del(&bmp_peerh, bbpeer);
|
||||
XFREE(MTYPE_BMP_PEER, bbpeer);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* Check if this peer just went to Established */
|
||||
if ((peer->ostatus != OpenConfirm) || !(peer_established(peer)))
|
||||
return 0;
|
||||
|
||||
if (peer->doppelganger && (peer->doppelganger->status != Deleted)) {
|
||||
struct bmp_bgp_peer *bbpeer, *bbdopp;
|
||||
|
||||
bbpeer = bmp_bgp_peer_get(peer);
|
||||
bbdopp = bmp_bgp_peer_find(peer->doppelganger->qobj_node.nid);
|
||||
if (bbdopp) {
|
||||
@ -2435,7 +2445,7 @@ static int bgp_bmp_module_init(void)
|
||||
{
|
||||
hook_register(bgp_packet_dump, bmp_mirror_packet);
|
||||
hook_register(bgp_packet_send, bmp_outgoing_packet);
|
||||
hook_register(peer_status_changed, bmp_peer_established);
|
||||
hook_register(peer_status_changed, bmp_peer_status_changed);
|
||||
hook_register(peer_backward_transition, bmp_peer_backward);
|
||||
hook_register(bgp_process, bmp_process);
|
||||
hook_register(bgp_inst_config_write, bmp_config_write);
|
||||
|
Loading…
Reference in New Issue
Block a user