mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-12 11:18:59 +00:00
zebra: Static route does not reach kernel.
A static route like below: ip route 172.16.1.0/30 192.168.101.162 11 does not move properly to a new interface when the interface used goes down. Zebra reports that it have moved but kernel isn't informed so the route is lost. * zebra_rib.c: (nexthop_active_update) if ifindex has changed, then the route should be considered to have changed. Signed-off-by: Joakim Tjernlund <Joakim.Tjernlund@transmode.se>
This commit is contained in:
parent
3f4ab7f9e9
commit
c3a5606302
@ -905,7 +905,7 @@ static int
|
||||
nexthop_active_update (struct route_node *rn, struct rib *rib, int set)
|
||||
{
|
||||
struct nexthop *nexthop;
|
||||
int prev_active, new_active;
|
||||
int prev_active, prev_index, new_active;
|
||||
|
||||
rib->nexthop_active_num = 0;
|
||||
UNSET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
|
||||
@ -913,9 +913,11 @@ nexthop_active_update (struct route_node *rn, struct rib *rib, int set)
|
||||
for (nexthop = rib->nexthop; nexthop; nexthop = nexthop->next)
|
||||
{
|
||||
prev_active = CHECK_FLAG (nexthop->flags, NEXTHOP_FLAG_ACTIVE);
|
||||
prev_index = nexthop->ifindex;
|
||||
if ((new_active = nexthop_active_check (rn, rib, nexthop, set)))
|
||||
rib->nexthop_active_num++;
|
||||
if (prev_active != new_active)
|
||||
if (prev_active != new_active ||
|
||||
prev_index != nexthop->ifindex)
|
||||
SET_FLAG (rib->flags, ZEBRA_FLAG_CHANGED);
|
||||
}
|
||||
return rib->nexthop_active_num;
|
||||
|
Loading…
Reference in New Issue
Block a user