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 1d19234e79.

* 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.
This commit is contained in:
Tom Goff 2011-12-14 14:11:29 +04:00 committed by Denis Ovsienko
parent bb915f5fa6
commit b48cebbba0

View File

@ -391,6 +391,8 @@ ospf6_spf_calculation (u_int32_t router_id,
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 @@ ospf6_spf_calculation (u_int32_t router_id,
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;