mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 16:04:49 +00:00
ospf6d: fix regression detected by topotest
With the old API, ospf6d always needed to send a nexthop address and a nexthop interface when advertising a route to zebra. In the case where the nexthop address didn't exist (e.g. connected route), zebra would take care of ignore it in the zread_ipv6_add() function. Now, if we have a nexthop interface but not a nexthop address, we not only can but we should send a nexthop of type NEXTHOP_TYPE_IFINDEX. zebra won't fix bad nexthops anymore because the clients have a proper API to send correct messages. Signed-off-by: Renato Westphal <renato@opensourcerouting.org>
This commit is contained in:
parent
744899219f
commit
b30f3b91d4
@ -305,14 +305,16 @@ void ospf6_route_zebra_copy_nexthops(struct ospf6_route *route,
|
|||||||
zlog_debug(" nexthop: %s%%%.*s(%d)", buf,
|
zlog_debug(" nexthop: %s%%%.*s(%d)", buf,
|
||||||
IFNAMSIZ, ifname, nh->ifindex);
|
IFNAMSIZ, ifname, nh->ifindex);
|
||||||
}
|
}
|
||||||
if (i < entries) {
|
if (i >= entries)
|
||||||
nexthops[i].gate.ipv6 = nh->address;
|
|
||||||
nexthops[i].ifindex = nh->ifindex;
|
|
||||||
nexthops[i].type = NEXTHOP_TYPE_IPV6_IFINDEX;
|
|
||||||
i++;
|
|
||||||
} else {
|
|
||||||
return;
|
return;
|
||||||
}
|
|
||||||
|
nexthops[i].ifindex = nh->ifindex;
|
||||||
|
if (!IN6_IS_ADDR_UNSPECIFIED(&nh->address)) {
|
||||||
|
nexthops[i].gate.ipv6 = nh->address;
|
||||||
|
nexthops[i].type = NEXTHOP_TYPE_IPV6_IFINDEX;
|
||||||
|
} else
|
||||||
|
nexthops[i].type = NEXTHOP_TYPE_IFINDEX;
|
||||||
|
i++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user