summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--isisd/isis_lsp.c3
-rw-r--r--isisd/isis_spf.c2
-rw-r--r--isisd/isis_te.c3
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]);
}