interfaces: immediately enable SLAAC during IPv6 initiation

This improves PPPoE responsivenes for IPv6 acquire using
SLAAC on the "IPv4 interface".  Tests ok according to an
user and the impact on existing setups is low.

PR: https://forum.opnsense.org/index.php?topic=21506.0
This commit is contained in:
Franco Fichtner 2021-02-28 21:48:05 +01:00
parent 8a82febe64
commit f1afe998ad

View File

@ -2458,6 +2458,16 @@ function interface_configure($verbose = false, $interface = 'wan', $reload = fal
switch ($wancfg['ipaddrv6']) {
case 'slaac':
case 'dhcp6':
$realifv6 = get_real_interface($interface, 'inet6');
/* accept router advertisements for this interface */
set_single_sysctl('net.inet6.ip6.accept_rtadv', '1');
log_error("Accept router advertisements on interface {$realifv6}");
mwexecf('/sbin/ifconfig %s inet6 accept_rtadv -ifdisabled', $realifv6);
/* Enable RFC6204w support for IPv6 Customer Edge (CE) router */
set_single_sysctl('net.inet6.ip6.rfc6204w3', '1');
if (!isset($wancfg['dhcp6usev4iface'])) {
interface_dhcpv6_prepare($interface, $wancfg);
interface_dhcpv6_configure($interface, $wancfg);
@ -2478,6 +2488,8 @@ function interface_configure($verbose = false, $interface = 'wan', $reload = fal
}
break;
}
/* XXX we do not disable accept_rtadv on $realifv6 != $realif where unused */
}
if (!empty($wancfg['mtu'])) {
@ -2885,14 +2897,6 @@ function interface_dhcpv6_configure($interface = 'wan', $wancfg)
$realifv6 = get_real_interface($interface, 'inet6');
/* accept router advertisements for this interface */
set_single_sysctl('net.inet6.ip6.accept_rtadv', '1');
log_error("Accept router advertisements on interface {$realifv6}");
mwexecf('/sbin/ifconfig %s inet6 accept_rtadv -ifdisabled', $realifv6);
/* Enable RFC6204w support for IPv6 Customer Edge (CE) router */
set_single_sysctl('net.inet6.ip6.rfc6204w3', '1');
/* always kill rtsold in case of reconfigure */
killbypid('/var/run/rtsold.pid', 'TERM', true);