diff options
| author | Donald Sharp <sharpd@cumulusnetworks.com> | 2017-10-05 08:06:57 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-10-05 08:06:57 -0400 |
| commit | c1c41b0458192cd73fbdb647582e6c33c241cf20 (patch) | |
| tree | 018ce49a9987acc5bd89fc6f43442fe78c2d31cb /isisd/isis_adjacency.c | |
| parent | 7be1117a287bd5250e3d1fdd6e8375792779234a (diff) | |
| parent | 58e1623702c828d286773da0c188af9ba176c030 (diff) | |
Merge pull request #1286 from opensourcerouting/isis-lsp-queue-improv
isisd: optimize per interface lsp send-queue creation
Diffstat (limited to 'isisd/isis_adjacency.c')
| -rw-r--r-- | isisd/isis_adjacency.c | 19 |
1 files changed, 7 insertions, 12 deletions
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index 0afa65d726..c8b9a66e29 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -214,13 +214,11 @@ void isis_adj_state_change(struct isis_adjacency *adj, } else if (new_state == ISIS_ADJ_DOWN) { listnode_delete(circuit->u.bc.adjdb[level - 1], adj); + circuit->upadjcount[level - 1]--; - if (circuit->upadjcount[level - 1] == 0) { - /* Clean lsp_queue when no adj is up. */ - if (circuit->lsp_queue) - list_delete_all_node( - circuit->lsp_queue); - } + if (circuit->upadjcount[level - 1] == 0) + isis_circuit_lsp_queue_clean(circuit); + isis_event_adjacency_state_change(adj, new_state); del = true; @@ -270,12 +268,9 @@ void isis_adj_state_change(struct isis_adjacency *adj, if (adj->circuit->u.p2p.neighbor == adj) adj->circuit->u.p2p.neighbor = NULL; circuit->upadjcount[level - 1]--; - if (circuit->upadjcount[level - 1] == 0) { - /* Clean lsp_queue when no adj is up. */ - if (circuit->lsp_queue) - list_delete_all_node( - circuit->lsp_queue); - } + if (circuit->upadjcount[level - 1] == 0) + isis_circuit_lsp_queue_clean(circuit); + isis_event_adjacency_state_change(adj, new_state); del = true; |
