summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Wood <david@wood2.org.uk>2016-01-06 09:19:52 +0000
committerDavid Wood <david@wood2.org.uk>2016-01-06 09:19:52 +0000
commit20d6e88a88ae128f2c40a164e9b19e63e3c2e0f5 (patch)
tree807db89eb8d6890a7b72c2276d5408dd82782113
parent5a640581b63121fbc92d721fa45b6b23c3bdebce (diff)
downloadpfsense-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.inc5
-rwxr-xr-xusr/local/sbin/ppp-ipv64
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);
OpenPOWER on IntegriCloud