Merge pull request #18639 from FRRouting/mergify/bp/stable/9.1/pr-15716

isisd: Fix memory leaks when the transition of neighbor state from non-UP to DOWN (backport #15716)
This commit is contained in:
Donald Sharp 2025-04-11 08:39:59 -04:00 committed by GitHub
commit 94203c4774
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -358,12 +358,15 @@ void isis_adj_state_change(struct isis_adjacency **padj,
* purposes */ * purposes */
adj->last_flap = time(NULL); adj->last_flap = time(NULL);
adj->flaps++; adj->flaps++;
} else if (old_state == ISIS_ADJ_UP) { } else {
circuit->adj_state_changes++; if (old_state == ISIS_ADJ_UP) {
circuit->adj_state_changes++;
circuit->upadjcount[level - 1]--; circuit->upadjcount[level - 1]--;
if (circuit->upadjcount[level - 1] == 0) if (circuit->upadjcount[level - 1] == 0)
isis_tx_queue_clean(circuit->tx_queue); isis_tx_queue_clean(
circuit->tx_queue);
}
if (new_state == ISIS_ADJ_DOWN) { if (new_state == ISIS_ADJ_DOWN) {
listnode_delete( listnode_delete(
@ -409,10 +412,13 @@ void isis_adj_state_change(struct isis_adjacency **padj,
master, send_l2_csnp, circuit, master, send_l2_csnp, circuit,
0, &circuit->t_send_csnp[1]); 0, &circuit->t_send_csnp[1]);
} }
} else if (old_state == ISIS_ADJ_UP) { } else {
circuit->upadjcount[level - 1]--; if (old_state == ISIS_ADJ_UP) {
if (circuit->upadjcount[level - 1] == 0) circuit->upadjcount[level - 1]--;
isis_tx_queue_clean(circuit->tx_queue); if (circuit->upadjcount[level - 1] == 0)
isis_tx_queue_clean(
circuit->tx_queue);
}
if (new_state == ISIS_ADJ_DOWN) { if (new_state == ISIS_ADJ_DOWN) {
if (adj->circuit->u.p2p.neighbor == adj) if (adj->circuit->u.p2p.neighbor == adj)