diff options
author | Renato Botelho <renato@netgate.com> | 2016-02-19 10:28:29 -0200 |
---|---|---|
committer | Renato Botelho <renato@netgate.com> | 2016-02-19 10:57:32 -0200 |
commit | 15db02a6abe5c0af41174c08a41a50e3c9eb9018 (patch) | |
tree | e202876fac2a4bf23dd721ea6b767f1baeb900b6 /src | |
parent | a3d07046d882fc8af83290060ea3440838c21bc4 (diff) | |
download | pfsense-15db02a6abe5c0af41174c08a41a50e3c9eb9018.zip pfsense-15db02a6abe5c0af41174c08a41a50e3c9eb9018.tar.gz |
Ticket #3029
Teach services_dhcpdv6_configure() to deal with PD length != 64
Diffstat (limited to 'src')
-rw-r--r-- | src/etc/inc/services.inc | 24 |
1 files changed, 15 insertions, 9 deletions
diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index 4e121e9..f37cf07 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -1344,6 +1344,12 @@ EOD; $ifcfgsnv6 = get_interface_subnetv6($dhcpv6if); $subnetv6 = gen_subnetv6($ifcfgipv6, $ifcfgsnv6); + if ($ifcfgv6['ipaddrv6'] == 'track6') { + $trackifname = $config['interfaces'][$ifname]['track6-interface']; + $trackcfg = $config['interfaces'][$trackifname]; + $pdlen = 64 - $trackcfg['dhcp6-ia-pd-len']; + } + if ($is_olsr_enabled == true) { if ($dhcpv6ifconf['netmask']) { $subnetmask = gen_subnet_maskv6($dhcpv6ifconf['netmask']); @@ -1423,8 +1429,8 @@ EOD; $range_from = $dhcpv6ifconf['range']['from']; $range_to = $dhcpv6ifconf['range']['to']; if ($ifcfgv6['ipaddrv6'] == 'track6') { - $range_from = merge_ipv6_delegated_prefix($ifcfgipv6, $range_from); - $range_to = merge_ipv6_delegated_prefix($ifcfgipv6, $range_to); + $range_from = merge_ipv6_delegated_prefix($ifcfgipv6, $range_from, $pdlen); + $range_to = merge_ipv6_delegated_prefix($ifcfgipv6, $range_to, $pdlen); } $dhcpdv6conf .= <<<EOD @@ -1439,8 +1445,8 @@ EOD; if (is_ipaddrv6($dhcpv6ifconf['dns6ip'])) { $dns6ip = $dhcpv6ifconf['dns6ip']; if ($ifcfgv6['ipaddrv6'] == 'track6' && - Net_IPv6::isInNetmask($dns6ip, '::', 64)) { - $dns6ip = merge_ipv6_delegated_prefix($ifcfgipv6, $dns6ip); + Net_IPv6::isInNetmask($dns6ip, '::', $pdlen)) { + $dns6ip = merge_ipv6_delegated_prefix($ifcfgipv6, $dns6ip, $pdlen); } $dhcpdv6conf .= " option dhcp6.name-servers {$dns6ip};\n"; } @@ -1462,8 +1468,8 @@ EOD; continue; } if ($ifcfgv6['ipaddrv6'] == 'track6' && - Net_IPv6::isInNetmask($ntpserver, '::', 64)) { - $ntpserver =merge_ipv6_delegated_prefix($ifcfgipv6, $ntpserver); + Net_IPv6::isInNetmask($ntpserver, '::', $pdlen)) { + $ntpserver = merge_ipv6_delegated_prefix($ifcfgipv6, $ntpserver, $pdlen); } $ntpservers[] = $ntpserver; } @@ -1491,8 +1497,8 @@ EOD; if ($dhcpv6ifconf['ldap'] <> "") { $ldapserver = $dhcpv6ifconf['ldap']; if ($ifcfgv6['ipaddrv6'] == 'track6' && - Net_IPv6::isInNetmask($ldapserver, '::', 64)) { - $ldapserver = merge_ipv6_delegated_prefix($ifcfgipv6, $ldapserver); + Net_IPv6::isInNetmask($ldapserver, '::', $pdlen)) { + $ldapserver = merge_ipv6_delegated_prefix($ifcfgipv6, $ldapserver, $pdlen); } $dhcpdv6conf .= " option ldap-server \"{$ldapserver}\";\n"; } @@ -1519,7 +1525,7 @@ EOD; if ($sm['ipaddrv6']) { $ipaddrv6 = $sm['ipaddrv6']; if ($ifcfgv6['ipaddrv6'] == 'track6') { - $ipaddrv6 = merge_ipv6_delegated_prefix($ifcfgipv6, $ipaddrv6); + $ipaddrv6 = merge_ipv6_delegated_prefix($ifcfgipv6, $ipaddrv6, $pdlen); } $dhcpdv6conf .= " fixed-address6 {$ipaddrv6};\n"; } |