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:
parent
9e7d3a7810
commit
7d95c44572
1 changed files with 2 additions and 1 deletions
|
@ -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;
|
||||||
|
|
Loading…
Reference in a new issue