diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 83a08ba34..bde321e96 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -640,6 +640,9 @@ function _interfaces_gif_configure($gif) } elseif (is_ipaddrv6($gif['remote-addr'])) { $realifip = get_interface_ipv6(!empty($gif['ipaddr']) ? $gif['ipaddr'] : $gif['if']); $realifgw = $gateways->getInterfaceGateway(explode('_vip', $gif['if'])[0], 'inet6'); + if (is_linklocal($realifgw) && strpos($realifgw, '%') === false) { + $realifgw .= '%' . get_real_interface(explode('_vip', $gif['if'])[0], 'inet6'); + } } interfaces_bring_up(get_real_interface(explode('_vip', $gif['if'])[0])); /* XXX overreach? */