OSPF: Fixes handling of external routes with immediate gw
The bug caused that received external LSAs with locally reachable next hops were ignored. I wonder why nobody noticed it sooner.
This commit is contained in:
parent
304ac2e861
commit
ef3cac669c
1 changed files with 5 additions and 0 deletions
|
@ -95,6 +95,8 @@ merge_nexthops(struct ospf_proto *p, struct mpnh *s1, struct mpnh *s2, int r1, i
|
||||||
struct mpnh **n = &root;
|
struct mpnh **n = &root;
|
||||||
int count = p->ecmp;
|
int count = p->ecmp;
|
||||||
|
|
||||||
|
ASSERT(p->ecmp);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* r1, r2 signalize whether we can reuse nexthops from s1, s2.
|
* r1, r2 signalize whether we can reuse nexthops from s1, s2.
|
||||||
* New nexthops (s2, new) can be reused if they are not inherited
|
* New nexthops (s2, new) can be reused if they are not inherited
|
||||||
|
@ -153,6 +155,9 @@ fix_device_nexthops(struct ospf_proto *p, const struct mpnh *n, ip_addr gw)
|
||||||
struct mpnh **nn1 = &root1;
|
struct mpnh **nn1 = &root1;
|
||||||
struct mpnh **nn2 = &root2;
|
struct mpnh **nn2 = &root2;
|
||||||
|
|
||||||
|
if (!p->ecmp)
|
||||||
|
return new_nexthop(p, gw, n->iface, n->weight);
|
||||||
|
|
||||||
/* This is a bit tricky. We cannot just copy the list and update n->gw,
|
/* This is a bit tricky. We cannot just copy the list and update n->gw,
|
||||||
because the list should stay sorted, so we create two lists, one with new
|
because the list should stay sorted, so we create two lists, one with new
|
||||||
gateways and one with old ones, and then merge them. */
|
gateways and one with old ones, and then merge them. */
|
||||||
|
|
Loading…
Reference in a new issue