From f1afe998ad689b799a38b638b7fdbfa4a4ce6dbf Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Sun, 28 Feb 2021 21:48:05 +0100 Subject: [PATCH] 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 --- src/etc/inc/interfaces.inc | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 7ba49fdc3..b7567e958 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -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);