diff options
author | David Wood <david@wood2.org.uk> | 2016-01-06 09:19:52 +0000 |
---|---|---|
committer | David Wood <david@wood2.org.uk> | 2016-01-06 09:19:52 +0000 |
commit | 20d6e88a88ae128f2c40a164e9b19e63e3c2e0f5 (patch) | |
tree | 807db89eb8d6890a7b72c2276d5408dd82782113 | |
parent | 5a640581b63121fbc92d721fa45b6b23c3bdebce (diff) | |
download | pfsense-20d6e88a88ae128f2c40a164e9b19e63e3c2e0f5.zip pfsense-20d6e88a88ae128f2c40a164e9b19e63e3c2e0f5.tar.gz |
Attempt to ensure interface_dhcpv6_configure() is called at the most appropriate time
* ppp-ipv6 for PPP type with dhcp6usev4iface (or PPP without dhcp6usev4iface, as dhcp6usev4iface appears to be a no-op on this type of connection)
* rc.newwanip for non-PPP type with dhcp6usev4iface (no change in this commit)
* interface_configure() in all other cases
-rw-r--r-- | etc/inc/interfaces.inc | 5 | ||||
-rwxr-xr-x | usr/local/sbin/ppp-ipv6 | 4 |
2 files changed, 5 insertions, 4 deletions
diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 8baebf9..6eb6f6f 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -3050,8 +3050,9 @@ function interface_configure($interface = "wan", $reloadall = false, $linkupeven case 'slaac': case 'dhcp6': // N.B. PPP connections using PPP as the IPv6 parent interface are excluded because the ppp-ipv6 script - // calls interface_dhcpv6_configure() for these connections after IPv6CP is up - if (!(interface_isppp_type($interface) && isset($wancfg['dhcp6usev4iface']))) { + // calls interface_dhcpv6_configure() for these connections after IPv6CP is up, whilst rc.newwanip + // handles all non-PPP connections with 'dhcp6usev4iface' set + if (!(isset($wancfg['dhcp6usev4iface']) || $wancfg['ipaddr']==='ppp')) { interface_dhcpv6_configure($interface, $wancfg); } break; diff --git a/usr/local/sbin/ppp-ipv6 b/usr/local/sbin/ppp-ipv6 index b1cac73..b7bb9f2 100755 --- a/usr/local/sbin/ppp-ipv6 +++ b/usr/local/sbin/ppp-ipv6 @@ -26,7 +26,7 @@ function interface_ipv6_lower($interface_real) { case 'slaac': case 'dhcp6': // Take no action if dhcp6 is active on the parent interface, not the PPP interface - if ($ifcfg['ipaddrv6']==='dhcp6' && !isset($ifcfg['dhcp6usev4iface'])) { + if ($ifcfg['ipaddrv6']==='dhcp6' && !(isset($ifcfg['dhcp6usev4iface']) || $ifcfg['ipaddr']==='ppp')) { break; } // bring down dhcp6c if it is running @@ -70,7 +70,7 @@ function interface_ipv6_raise($interface_real) { case 'slaac': case 'dhcp6': // Take no action if dhcp6 is active on the parent interface, not the PPP interface - if ($ifcfg['ipaddrv6']==='dhcp6' && !isset($ifcfg['dhcp6usev4iface'])) { + if ($ifcfg['ipaddrv6']==='dhcp6' && !(isset($ifcfg['dhcp6usev4iface']) || $ifcfg['ipaddr']==='ppp')) { break; } $pidv6 = find_dhcp6c_process($interface_real); |