0
0
mirror of https://gitlab.nic.cz/labs/bird.git synced 2024-12-22 09:41:54 +00:00

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.
This commit is contained in:
Ondrej Zajicek (work) 2016-12-15 15:31:25 +01:00
parent 9e7d3a7810
commit 7d95c44572

View File

@ -1405,7 +1405,6 @@ ospf_ext_spf(struct ospf_proto *p)
struct top_hash_entry *en; struct top_hash_entry *en;
struct ospf_lsa_ext_local rt; struct ospf_lsa_ext_local rt;
ort *nf1, *nf2; ort *nf1, *nf2;
orta nfa = {};
ip_addr rtid; ip_addr rtid;
u32 br_metric; u32 br_metric;
struct ospf_area *atmp; struct ospf_area *atmp;
@ -1414,6 +1413,8 @@ ospf_ext_spf(struct ospf_proto *p)
WALK_SLIST(en, p->lsal) WALK_SLIST(en, p->lsal)
{ {
orta nfa = {};
/* 16.4. (1) */ /* 16.4. (1) */
if ((en->lsa_type != LSA_T_EXT) && (en->lsa_type != LSA_T_NSSA)) if ((en->lsa_type != LSA_T_EXT) && (en->lsa_type != LSA_T_NSSA))
continue; continue;