From 118218cb69b1a8cea2f5915e4c81537b51462c34 Mon Sep 17 00:00:00 2001 From: Renato Botelho Date: Thu, 6 Nov 2014 11:54:11 -0200 Subject: [PATCH] Make sure target has scope when it's a link-local. Fixes #3969 --- etc/inc/gwlb.inc | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/etc/inc/gwlb.inc b/etc/inc/gwlb.inc index 35fde30db..28a20fa75 100644 --- a/etc/inc/gwlb.inc +++ b/etc/inc/gwlb.inc @@ -205,19 +205,13 @@ EOD; * ICMP6 response would not find its way back home... */ $gwifip = find_interface_ipv6($gateway['interface'], true); - if (is_linklocal($gateway['monitor'])) { - if (!strstr($gateway['monitor'], '%')) { - $gateway['monitor'] .= "%{$gateway['interface']}"; - } - } else { - // Monitor is a routable address, so use a routable address for the "src" part - $gwifip = find_interface_ipv6($gateway['interface'], true); - } } - /* Make sure srcip has scope defined when it's ll */ + /* Make sure srcip and target have scope defined when they are ll */ if (is_linklocal($gwifip) && !strstr($gwifip, '%')) $gwifip .= '%' . $gateway['interface']; + if (is_linklocal($gateway['monitor']) && !strstr($gateway['monitor'], '%')) + $gateway['monitor'] .= "%{$gateway['interface']}"; if (!is_ipaddrv6($gwifip)) continue; //Skip this target