Filter: Update 'gw' to handle IPv6 link-local addresses

When a link-local address is set, use the existing iface for scope.

Thanks to Marcel Krüger for the bugreport.
This commit is contained in:
Ondrej Zajicek (work) 2021-03-15 18:35:23 +01:00
parent 0d1a11cca3
commit 94abefc00b

View file

@ -559,7 +559,8 @@
case SA_GW:
{
ip_addr ip = v1.val.ip;
neighbor *n = neigh_find(rta->src->proto, ip, NULL, 0);
struct iface *ifa = ipa_is_link_local(ip) ? rta->nh.iface : NULL;
neighbor *n = neigh_find(rta->src->proto, ip, ifa, 0);
if (!n || (n->scope == SCOPE_HOST))
runtime( "Invalid gw address" );