Make sure target has scope when it's a link-local. Fixes #3969

This commit is contained in:
Renato Botelho 2014-11-06 11:54:11 -02:00
parent 049c74ecbf
commit 118218cb69
1 changed files with 3 additions and 9 deletions

View File

@ -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