summaryrefslogtreecommitdiffstats
path: root/ospfd/ospf_spf.c
diff options
context:
space:
mode:
authorLou Berger <lberger@labn.net>2022-07-14 13:40:39 +0200
committerLou Berger <lberger@labn.net>2022-07-16 16:28:42 +0200
commitb976af1b093faf2723257a185070c48cb5de6813 (patch)
treed9fa59d3b43dde0904359d8e3c5e48e7d785ecd4 /ospfd/ospf_spf.c
parentMerge pull request #11564 from kuldeepkash/multicast_pim_bsm (diff)
downloadfrr-b976af1b093faf2723257a185070c48cb5de6813.tar.xz
frr-b976af1b093faf2723257a185070c48cb5de6813.zip
ospfd: free unreachable router LSA node so that it is not left unreachable
allows for an LSA to be unreachable via one link and reachable via another Signed-off-by: Lou Berger <lberger@labn.net>
Diffstat (limited to 'ospfd/ospf_spf.c')
-rw-r--r--ospfd/ospf_spf.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/ospfd/ospf_spf.c b/ospfd/ospf_spf.c
index 44549b980..74a567427 100644
--- a/ospfd/ospf_spf.c
+++ b/ospfd/ospf_spf.c
@@ -1464,8 +1464,13 @@ static void ospf_spf_next(struct vertex *v, struct ospf_area *area,
if (ospf_nexthop_calculation(area, v, w, l, distance,
lsa_pos))
vertex_pqueue_add(candidate, w);
- else if (IS_DEBUG_OSPF_EVENT)
- zlog_debug("Nexthop Calc failed");
+ else {
+ listnode_delete(area->spf_vertex_list, w);
+ ospf_vertex_free(w);
+ w_lsa->stat = LSA_SPF_NOT_EXPLORED;
+ if (IS_DEBUG_OSPF_EVENT)
+ zlog_debug("Nexthop Calc failed");
+ }
} else if (w_lsa->stat != LSA_SPF_IN_SPFTREE) {
w = w_lsa->stat;
if (w->distance < distance) {