diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-12-15 15:31:25 +0100 |
---|---|---|
committer | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2016-12-15 15:37:27 +0100 |
commit | 7d95c44572d79ef15ec8b0220950b4e4374c6bc6 (patch) | |
tree | 3fb9dc82ef4f37de44da177001a2f892a5f9058a /proto/ospf/rt.c | |
parent | 9e7d3a781075b39a7e0f97e63b6f313955daa661 (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/ospf/rt.c')
-rw-r--r-- | proto/ospf/rt.c | 3 |
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; |