From e0cea5ebc255537b11f01eb10a398f7c46396cb3 Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Mon, 12 Nov 2018 16:10:44 +0100 Subject: [PATCH] dhcp: IPv6 relay uses find_interface_networkv6() --- src/etc/inc/services.inc | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index fee3c28cb..6b560af4a 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -1625,17 +1625,20 @@ function services_dhcrelay6_configure($verbose = false) $srvifaces = array(); foreach ($srvips as $srcidx => $srvip) { unset($destif); + + /* XXX runs multiple times because of server address loop :( */ foreach ($iflist as $ifname => $unused) { - $subnet = get_interface_ipv6($ifname); - if (!is_ipaddrv6($subnet)) { + $realif = get_real_interface($ifname, 'inet6'); + $subnet = find_interface_networkv6($realif); + if (!is_subnetv6($subnet)) { continue; } - $subnet .= "/" . get_interface_subnetv6($ifname); if (ip_in_subnet($srvip, $subnet)) { - $destif = get_real_interface($ifname); + $destif = $realif; break; } } + if (!isset($destif)) { if (isset($config['staticroutes']['route'])) { foreach ($config['staticroutes']['route'] as $rtent) {