diff options
author | Renato Botelho <garga@FreeBSD.org> | 2014-11-06 11:54:11 -0200 |
---|---|---|
committer | Renato Botelho <garga@FreeBSD.org> | 2014-11-06 11:54:11 -0200 |
commit | 118218cb69b1a8cea2f5915e4c81537b51462c34 (patch) | |
tree | ddfc0754fa63de6e678ad13f2d5745f684aa57ae /etc | |
parent | 049c74ecbfdc508be791e80f42c893034177aac0 (diff) | |
download | pfsense-118218cb69b1a8cea2f5915e4c81537b51462c34.zip pfsense-118218cb69b1a8cea2f5915e4c81537b51462c34.tar.gz |
Make sure target has scope when it's a link-local. Fixes #3969
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/gwlb.inc | 12 |
1 files changed, 3 insertions, 9 deletions
diff --git a/etc/inc/gwlb.inc b/etc/inc/gwlb.inc index 35fde30..28a20fa 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 |