summaryrefslogtreecommitdiff
path: root/proto
diff options
context:
space:
mode:
authorOndrej Zajicek (work) <santiago@crfreenet.org>2016-12-15 15:31:25 +0100
committerOndrej Zajicek (work) <santiago@crfreenet.org>2016-12-15 15:37:27 +0100
commit7d95c44572d79ef15ec8b0220950b4e4374c6bc6 (patch)
tree3fb9dc82ef4f37de44da177001a2f892a5f9058a /proto
parent9e7d3a781075b39a7e0f97e63b6f313955daa661 (diff)
OSPF: Fix ECMP external merging
The variable nfa is not cleaned before each loop iteration and can have a wrong value of nfa.nhs_reuse from the previous step. Thanks to Bernardo Figueiredo for the bugreport and analysis.
Diffstat (limited to 'proto')
-rw-r--r--proto/ospf/rt.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/proto/ospf/rt.c b/proto/ospf/rt.c
index 21aaf144..368e3d05 100644
--- a/proto/ospf/rt.c
+++ b/proto/ospf/rt.c
@@ -1405,7 +1405,6 @@ ospf_ext_spf(struct ospf_proto *p)
struct top_hash_entry *en;
struct ospf_lsa_ext_local rt;
ort *nf1, *nf2;
- orta nfa = {};
ip_addr rtid;
u32 br_metric;
struct ospf_area *atmp;
@@ -1414,6 +1413,8 @@ ospf_ext_spf(struct ospf_proto *p)
WALK_SLIST(en, p->lsal)
{
+ orta nfa = {};
+
/* 16.4. (1) */
if ((en->lsa_type != LSA_T_EXT) && (en->lsa_type != LSA_T_NSSA))
continue;