From 44b895115e74b68e2654aaac33a2bc5602392770 Mon Sep 17 00:00:00 2001 From: Christian Franke Date: Mon, 5 Mar 2018 21:01:21 +0100 Subject: [PATCH] isisd: P2P adjacencies should only be included in LSPDB/SPF when they are up --- isisd/isis_lsp.c | 3 ++- isisd/isis_spf.c | 2 +- isisd/isis_te.c | 3 ++- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/isisd/isis_lsp.c b/isisd/isis_lsp.c index 34eac676d6..b2ba8b3932 100644 --- a/isisd/isis_lsp.c +++ b/isisd/isis_lsp.c @@ -1034,7 +1034,8 @@ static void lsp_build(struct isis_lsp *lsp, struct isis_area *area) break; case CIRCUIT_T_P2P: { struct isis_adjacency *nei = circuit->u.p2p.neighbor; - if (nei && (level & nei->circuit_t)) { + if (nei && nei->adj_state == ISIS_ADJ_UP + && (level & nei->circuit_t)) { uint8_t ne_id[7]; memcpy(ne_id, nei->sysid, ISIS_SYS_ID_LEN); LSP_PSEUDO_ID(ne_id) = 0; diff --git a/isisd/isis_spf.c b/isisd/isis_spf.c index ee447d01f7..dc86d4c105 100644 --- a/isisd/isis_spf.c +++ b/isisd/isis_spf.c @@ -1152,7 +1152,7 @@ static int isis_spf_preload_tent(struct isis_spftree *spftree, root_sysid, parent); } else if (circuit->circ_type == CIRCUIT_T_P2P) { adj = circuit->u.p2p.neighbor; - if (!adj) + if (!adj || adj->adj_state != ISIS_ADJ_UP) continue; if (!adj_has_mt(adj, spftree->mtid)) continue; diff --git a/isisd/isis_te.c b/isisd/isis_te.c index 079340b4a4..5de936a6ea 100644 --- a/isisd/isis_te.c +++ b/isisd/isis_te.c @@ -549,7 +549,8 @@ void isis_link_params_update(struct isis_circuit *circuit, if ((SUBTLV_TYPE(mtc->rmt_ipaddr) == 0) && (circuit->circ_type == CIRCUIT_T_P2P)) { struct isis_adjacency *adj = circuit->u.p2p.neighbor; - if (adj->ipv4_address_count) { + if (adj && adj->adj_state == ISIS_ADJ_UP + && adj->ipv4_address_count) { set_circuitparams_rmt_ipaddr( mtc, adj->ipv4_addresses[0]); } -- 2.39.5