diff --git a/src/etc/inc/services.inc b/src/etc/inc/services.inc index c21051f43..56b49d1e4 100644 --- a/src/etc/inc/services.inc +++ b/src/etc/inc/services.inc @@ -1104,9 +1104,10 @@ function services_dhcpdv6_configure($blacklist = array(), $verbose = false) $trackifname = $config['interfaces'][$ifname]['track6-interface']; $trackcfg = $config['interfaces'][$trackifname]; $pdlen = calculate_ipv6_delegation_length($trackifname); - $dhcpdv6cfg[$ifname] = array(); - $dhcpdv6cfg[$ifname]['enable'] = true; - if (!isset($config['interfaces'][$ifname]['dhcpd6track6allowoverride']) || !isset($config['dhcpdv6'][$ifname]['enable'])) { + if (!isset($config['interfaces'][$ifname]['dhcpd6track6allowoverride'])) { + $dhcpdv6cfg[$ifname] = array(); + $dhcpdv6cfg[$ifname]['enable'] = true; + /* fixed range */ $ifcfgipv6arr = $ifcfgipv6arr = explode(':', $ifcfgipv6); $ifcfgipv6arr[7] = '1000'; @@ -1136,14 +1137,10 @@ function services_dhcpdv6_configure($blacklist = array(), $verbose = false) } } else { /* get config entry and marry it to the live prefix */ - $dhcpdv6cfg[$ifname]['range'] = array(); - $dhcpdv6cfg[$ifname]['range']['from'] = make_ipv6_64_address($ifcfgipv6, $config['dhcpdv6'][$ifname]['range']['from']); - $dhcpdv6cfg[$ifname]['range']['to'] = make_ipv6_64_address($ifcfgipv6, $config['dhcpdv6'][$ifname]['range']['to']); - - $dhcpdv6cfg[$ifname]['prefixrange'] = array(); - $dhcpdv6cfg[$ifname]['prefixrange']['prefixlength'] = $config['dhcpdv6'][$ifname]['prefixrange']['prefixlength']; - $dhcpdv6cfg[$ifname]['prefixrange']['from'] = $config['dhcpdv6'][$ifname]['prefixrange']['from']; - $dhcpdv6cfg[$ifname]['prefixrange']['to'] = $config['dhcpdv6'][$ifname]['prefixrange']['to']; + $dhcpdv6cfg[$ifname]['range'] = array( + 'from' => make_ipv6_64_address($ifcfgipv6, $dhcpdv6cfg[$ifname]['range']['from']), + 'to' => make_ipv6_64_address($ifcfgipv6, $dhcpdv6cfg[$ifname]['range']['to']), + ); } } } @@ -1186,7 +1183,6 @@ EOD; $dhcpv6num = 0; foreach ($dhcpdv6cfg as $dhcpv6if => $dhcpv6ifconf) { - $ifcfgv6 = $config['interfaces'][$dhcpv6if]; $newzone = array(); if (!isset($dhcpv6ifconf['enable']) || !isset($Iflist[$dhcpv6if])) { @@ -1227,7 +1223,7 @@ EOD; if (is_ipaddrv6($ifcfgipv6)) { $dhcpdv6conf .= "\nsubnet6 {$subnetv6}/{$ifcfgsnv6}"; } elseif (!empty($dhcpv6ifconf['range']['from'])) { - $subnet6 = gen_subnetv6($dhcpv6ifconf['range']['from'], '64', !isset($dhcpdv6cfg[$ifname]['dhcpd6track6allowoverride'])); + $subnet6 = gen_subnetv6($dhcpv6ifconf['range']['from'], '64', !isset($config['interfaces'][$dhcpv6if]['dhcpd6track6allowoverride'])); $dhcpdv6conf .= "\nsubnet6 {$subnet6}/64"; } $dhcpdv6conf .= " {\n";