diff options
author | Lou Berger <lberger@labn.net> | 2022-07-14 13:40:39 +0200 |
---|---|---|
committer | Lou Berger <lberger@labn.net> | 2022-07-16 16:28:42 +0200 |
commit | b976af1b093faf2723257a185070c48cb5de6813 (patch) | |
tree | d9fa59d3b43dde0904359d8e3c5e48e7d785ecd4 /ospfd/ospf_spf.c | |
parent | Merge pull request #11564 from kuldeepkash/multicast_pim_bsm (diff) | |
download | frr-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.c | 9 |
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) { |