]> git.puffer.fish Git - matthieu/frr.git/commitdiff
isisd: P2P adjacencies should only be included in LSPDB/SPF when they are up
authorChristian Franke <chris@opensourcerouting.org>
Mon, 5 Mar 2018 20:01:21 +0000 (21:01 +0100)
committerChristian Franke <chris@opensourcerouting.org>
Sat, 10 Mar 2018 17:38:03 +0000 (18:38 +0100)
isisd/isis_lsp.c
isisd/isis_spf.c
isisd/isis_te.c

index 34eac676d6d6a0cd7c66bbc9e8078d21ecc6076c..b2ba8b3932bf95c7eaef13a171a947cf4e7d029a 100644 (file)
@@ -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;
index ee447d01f7c64dbe8535e025ae1e22304dec0a73..dc86d4c1056715f0dfefaa1a864f607f4e6bd4cf 100644 (file)
@@ -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;
index 079340b4a4cc3046fd0a02d9363bdc288363d319..5de936a6ea9f3184be9135a103930e85c6143f8f 100644 (file)
@@ -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]);
                        }