ospf6d: always remove the result of a previous SPF calculation
This is needed to avoid stale routes in some cases; the regression was
introduced by commit 1d19234e79c77a7d55194b513f2a77c6a691bc2c.
* ospf6_spf.c: (ospf6_spf_calculation) Call ospf6_spf_table_finish()
before possibly returning if no router-LSA is found for the root of
the SPF tree.
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index beb6d7f..a4a5b72 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -391,6 +391,8 @@
caddr_t lsdesc;
struct ospf6_lsa *lsa;
+ ospf6_spf_table_finish (result_table);
+
/* Install the calculating router itself as the root of the SPF tree */
/* construct root vertex */
lsa = ospf6_lsdb_lookup (htons (OSPF6_LSTYPE_ROUTER), htonl (0),
@@ -402,8 +404,6 @@
candidate_list = pqueue_create ();
candidate_list->cmp = ospf6_vertex_cmp;
- ospf6_spf_table_finish (result_table);
-
root = ospf6_vertex_create (lsa);
root->area = oa;
root->cost = 0;