summaryrefslogtreecommitdiffstats
path: root/etc/inc/gwlb.inc
diff options
context:
space:
mode:
authorRenato Botelho <garga@FreeBSD.org>2014-11-06 11:54:11 -0200
committerRenato Botelho <garga@FreeBSD.org>2014-11-06 11:54:11 -0200
commit118218cb69b1a8cea2f5915e4c81537b51462c34 (patch)
treeddfc0754fa63de6e678ad13f2d5745f684aa57ae /etc/inc/gwlb.inc
parent049c74ecbfdc508be791e80f42c893034177aac0 (diff)
downloadpfsense-118218cb69b1a8cea2f5915e4c81537b51462c34.zip
pfsense-118218cb69b1a8cea2f5915e4c81537b51462c34.tar.gz
Make sure target has scope when it's a link-local. Fixes #3969
Diffstat (limited to 'etc/inc/gwlb.inc')
-rw-r--r--etc/inc/gwlb.inc12
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
OpenPOWER on IntegriCloud