diff options
Diffstat (limited to 'isisd/isis_adjacency.c')
| -rw-r--r-- | isisd/isis_adjacency.c | 24 | 
1 files changed, 15 insertions, 9 deletions
diff --git a/isisd/isis_adjacency.c b/isisd/isis_adjacency.c index 430bee92bf..b81a0cc2f0 100644 --- a/isisd/isis_adjacency.c +++ b/isisd/isis_adjacency.c @@ -358,12 +358,15 @@ void isis_adj_state_change(struct isis_adjacency **padj,  				 * purposes */  				adj->last_flap = time(NULL);  				adj->flaps++; -			} else if (old_state == ISIS_ADJ_UP) { -				circuit->adj_state_changes++; +			} else { +				if (old_state == ISIS_ADJ_UP) { +					circuit->adj_state_changes++; -				circuit->upadjcount[level - 1]--; -				if (circuit->upadjcount[level - 1] == 0) -					isis_tx_queue_clean(circuit->tx_queue); +					circuit->upadjcount[level - 1]--; +					if (circuit->upadjcount[level - 1] == 0) +						isis_tx_queue_clean( +							circuit->tx_queue); +				}  				if (new_state == ISIS_ADJ_DOWN) {  					listnode_delete( @@ -409,10 +412,13 @@ void isis_adj_state_change(struct isis_adjacency **padj,  						master, send_l2_csnp, circuit,  						0, &circuit->t_send_csnp[1]);  				} -			} else if (old_state == ISIS_ADJ_UP) { -				circuit->upadjcount[level - 1]--; -				if (circuit->upadjcount[level - 1] == 0) -					isis_tx_queue_clean(circuit->tx_queue); +			} else { +				if (old_state == ISIS_ADJ_UP) { +					circuit->upadjcount[level - 1]--; +					if (circuit->upadjcount[level - 1] == 0) +						isis_tx_queue_clean( +							circuit->tx_queue); +				}  				if (new_state == ISIS_ADJ_DOWN) {  					if (adj->circuit->u.p2p.neighbor == adj)  | 
