summaryrefslogtreecommitdiff
path: root/ospf6d
diff options
context:
space:
mode:
authorTom Goff <thomas.goff@boeing.com>2011-12-14 14:11:29 +0400
committerDenis Ovsienko <infrastation@yandex.ru>2011-12-14 14:11:29 +0400
commitb48cebbba0dc01ad7d1fbd7cbcc39a11e1ae972d (patch)
treea2fbe8ca90af5b9a7482de1483df40f70fb6e120 /ospf6d
parentbb915f5fa60de1a5b7e6089fcfc680281a590463 (diff)
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.
Diffstat (limited to 'ospf6d')
-rw-r--r--ospf6d/ospf6_spf.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/ospf6d/ospf6_spf.c b/ospf6d/ospf6_spf.c
index beb6d7f7..a4a5b721 100644
--- a/ospf6d/ospf6_spf.c
+++ b/ospf6d/ospf6_spf.c
@@ -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;