summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndres Petralli <a.petralli@live.com>2013-12-23 20:20:32 -0800
committerAndres Petralli <a.petralli@live.com>2013-12-23 20:20:32 -0800
commit87019fc4e0f0fdd4e344b26ace61380ea4972793 (patch)
tree4a19ff092b0bad4d312bca9568e87ef9cf651752
parentd8b37f910e2b864e3eaa159aeacbbd37c40198a9 (diff)
downloadpfsense-87019fc4e0f0fdd4e344b26ace61380ea4972793.zip
pfsense-87019fc4e0f0fdd4e344b26ace61380ea4972793.tar.gz
Enabling advanced RFC 2136 configuration for DHCPd service
This change adds the ability to configure RFC 2136 domain name updates using a hmac-md5 keyname/key.
-rw-r--r--etc/inc/services.inc143
-rwxr-xr-xusr/local/www/services_dhcp.php24
-rwxr-xr-xusr/local/www/services_dhcp_edit.php21
-rw-r--r--usr/local/www/services_dhcpv6.php20
4 files changed, 165 insertions, 43 deletions
diff --git a/etc/inc/services.inc b/etc/inc/services.inc
index cb79d72..182a76a 100644
--- a/etc/inc/services.inc
+++ b/etc/inc/services.inc
@@ -408,6 +408,7 @@ log-facility local7;
one-lease-per-client true;
deny duplicates;
ping-check true;
+update-conflict-detection false;
EOD;
@@ -837,48 +838,20 @@ EOD;
$dhcpdifs[] = get_real_interface($dhcpif);
if ($newzone['domain-name'])
+ {
+ if ($need_ddns_updates)
+ {
+ $newzone['dns-servers'] = array($dhcpifconf['ddnsdomainprimary']);
+ }
$ddns_zones[] = $newzone;
+ }
}
if ($need_ddns_updates) {
$dhcpdconf .= "ddns-update-style interim;\n";
- $dhcpdconf .= "update-static-leases on;\n";
-
- if (is_array($ddns_zones)) {
- $added_zones = array();
- foreach ($ddns_zones as $zone) {
- if (!is_array($zone) || empty($zone) || !is_array($zone['dns-servers']))
- continue;
- $primary = $zone['dns-servers'][0];
- $secondary = empty($zone['dns-servers'][1]) ? "" : $zone['dns-servers'][1];
- // Make sure we aren't using any invalid or IPv6 DNS servers.
- if (!is_ipaddrv4($primary)) {
- if (is_ipaddrv4($secondary)) {
- $primary = $secondary;
- $secondary = "";
- } else {
- continue;
- }
- }
- // We don't need to add zones multiple times.
- if (!in_array($zone['domain-name'], $added_zones)) {
- $dhcpdconf .= "zone {$zone['domain-name']} {\n";
- $dhcpdconf .= " primary {$primary};\n";
- if (is_ipaddrv4($secondary))
- $dhcpdconf .= " secondary {$secondary};\n";
- $dhcpdconf .= "}\n";
- $added_zones[] = $zone['domain-name'];
- }
- if (!in_array($zone['ptr-domain'], $added_zones)) {
- $dhcpdconf .= "zone {$zone['ptr-domain']} {\n";
- $dhcpdconf .= " primary {$primary};\n";
- if (is_ipaddrv4($secondary))
- $dhcpdconf .= " secondary {$secondary};\n";
- $dhcpdconf .= "}\n";
- $added_zones[] = $zone['ptr-domain'];
- }
- }
- }
+
+ $dhcpdconf .= dhcpdkey($dhcpifconf);
+ $dhcpdconf .= dhcpdzones($ddns_zones, $dhcpifconf);
}
/* write dhcpd.conf */
@@ -905,6 +878,69 @@ EOD;
return 0;
}
+function dhcpdkey($dhcpifconf)
+{
+ $dhcpdconf = "";
+ if ($dhcpifconf['ddnsdomainkeyname'] <> "" && $dhcpifconf['ddnsdomainkey'] <> "")
+ {
+ $dhcpdconf .= "key {$dhcpifconf['ddnsdomainkeyname']} {\n";
+ $dhcpdconf .= " algorithm hmac-md5;\n";
+ $dhcpdconf .= " secret {$dhcpifconf['ddnsdomainkey']};\n";
+ $dhcpdconf .= "}\n";
+ }
+
+ return $dhcpdconf;
+}
+
+function dhcpdzones($ddns_zones, $dhcpifconf)
+{
+ $dhcpdconf = "";
+
+ if (is_array($ddns_zones)) {
+ $added_zones = array();
+ foreach ($ddns_zones as $zone) {
+ if (!is_array($zone) || empty($zone) || !is_array($zone['dns-servers']))
+ continue;
+ $primary = $zone['dns-servers'][0];
+ $secondary = empty($zone['dns-servers'][1]) ? "" : $zone['dns-servers'][1];
+
+ // Make sure we aren't using any invalid or IPv6 DNS servers.
+ if (!is_ipaddrv4($primary)) {
+ if (is_ipaddrv4($secondary)) {
+ $primary = $secondary;
+ $secondary = "";
+ } else {
+ continue;
+ }
+ }
+
+ // We don't need to add zones multiple times.
+ if ($zone['domain-name'] && !in_array($zone['domain-name'], $added_zones)) {
+ $dhcpdconf .= "zone {$zone['domain-name']}. {\n";
+ $dhcpdconf .= " primary {$primary};\n";
+ if (is_ipaddrv4($secondary))
+ $dhcpdconf .= " secondary {$secondary};\n";
+ if($dhcpifconf['ddnsdomainkeyname'] <> "" && $dhcpifconf['ddnsdomainkey'] <> "")
+ $dhcpdconf .= " key {$dhcpifconf['ddnsdomainkeyname']};\n";
+ $dhcpdconf .= "}\n";
+ $added_zones[] = $zone['domain-name'];
+ }
+ if ($zone['ptr-domain'] && !in_array($zone['ptr-domain'], $added_zones)) {
+ $dhcpdconf .= "zone {$zone['ptr-domain']} {\n";
+ $dhcpdconf .= " primary {$primary};\n";
+ if (is_ipaddrv4($secondary))
+ $dhcpdconf .= " secondary {$secondary};\n";
+ if($dhcpifconf['ddnsdomainkeyname'] <> "" && $dhcpifconf['ddnsdomainkey'] <> "")
+ $dhcpdconf .= " key {$dhcpifconf['ddnsdomainkeyname']};\n";
+ $dhcpdconf .= "}\n";
+ $added_zones[] = $zone['ptr-domain'];
+ }
+ }
+ }
+
+ return $dhcpdconf;
+}
+
function services_dhcpdv6_configure() {
global $config, $g;
@@ -1015,10 +1051,10 @@ option domain-search-list code 119 = text;
default-lease-time 7200;
max-lease-time 86400;
log-facility local7;
-ddns-update-style none;
one-lease-per-client true;
deny duplicates;
ping-check true;
+update-conflict-detection false;
EOD;
@@ -1031,8 +1067,12 @@ EOD;
$dhcpdv6ifs = array();
$dhcpv6num = 0;
+ $nsupdate = false;
+
foreach ($dhcpdv6cfg as $dhcpv6if => $dhcpv6ifconf) {
+ $ddns_zones = array();
+
$ifcfgv6 = $config['interfaces'][$dhcpv6if];
if (!isset($dhcpv6ifconf['enable']) || !isset($Iflist[$dhcpv6if]))
@@ -1052,15 +1092,16 @@ EOD;
$dnscfgv6 .= " option domain-name \"{$dhcpv6ifconf['domain']}\";\n";
}
- if ($dhcpv6ifconf['domainsearchlist'] <> "") {
+ if ($dhcpv6ifconf['domainsearchlist'] <> "") {
$dnscfgv6 .= " option domain-search \"" . join("\",\"", preg_split("/[ ;]+/", $dhcpv6ifconf['domainsearchlist'])) . "\";\n";
- }
+ }
if (isset($dhcpv6ifconf['ddnsupdate'])) {
if($dhcpv6ifconf['ddnsdomain'] <> "") {
$dnscfgv6 .= " ddns-domainname \"{$dhcpv6ifconf['ddnsdomain']}\";\n";
}
$dnscfgv6 .= " ddns-update-style interim;\n";
+ $nsupdate = true;
}
if (is_array($dhcpv6ifconf['dnsserver']) && ($dhcpv6ifconf['dnsserver'][0])) {
@@ -1078,6 +1119,13 @@ EOD;
$dnscfgv6 .= " option dhcp6.name-servers " . join(",", $dns_arrv6) . ";";
}
+ if ($dhcpv6ifconf['domain']) {
+ $newzone = array();
+ $newzone['domain-name'] = $dhcpv6ifconf['domain'];
+ $newzone['dns-servers'][] = $dhcpv6ifconf['ddnsdomainprimary'];
+ $ddns_zones[] = $newzone;
+ }
+
if (is_ipaddrv6($ifcfgipv6)) {
$dhcpdv6conf .= "subnet6 {$subnetv6}/{$ifcfgsnv6}";
} else {
@@ -1178,6 +1226,12 @@ EOD;
}
}
+ if ($dhcpv6ifconf['domain'])
+ {
+ $dhcpdv6conf .= dhcpdkey($dhcpv6ifconf);
+ $dhcpdv6conf .= dhcpdzones($ddns_zones, $dhcpv6ifconf);
+ }
+
if ($config['dhcpdv6'][$dhcpv6if]['ramode'] <> "unmanaged") {
if(preg_match("/poes/si", $dhcpv6if)) {
/* magic here */
@@ -1196,6 +1250,15 @@ EOD;
}
}
+ if ($nsupdate)
+ {
+ $dhcpdv6conf .= "ddns-update-style interim;\n";
+ }
+ else
+ {
+ $dhcpdv6conf .= "ddns-update-style none;\n";
+ }
+
/* write dhcpdv6.conf */
if (!@file_put_contents("{$g['dhcpd_chroot_path']}/etc/dhcpdv6.conf", $dhcpdv6conf)) {
log_error("Error: cannot open {$g['dhcpd_chroot_path']}/etc/dhcpdv6.conf in services_dhcpdv6_configure().\n");
diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php
index 2566cd8..b364768 100755
--- a/usr/local/www/services_dhcp.php
+++ b/usr/local/www/services_dhcp.php
@@ -184,6 +184,9 @@ if (is_array($dhcpdconf)) {
list($pconfig['dns1'],$pconfig['dns2']) = $dhcpdconf['dnsserver'];
$pconfig['denyunknown'] = isset($dhcpdconf['denyunknown']);
$pconfig['ddnsdomain'] = $dhcpdconf['ddnsdomain'];
+ $pconfig['ddnsdomainprimary'] = $dhcpdconf['ddnsdomainprimary'];
+ $pconfig['ddnsdomainkeyname'] = $dhcpdconf['ddnsdomainkeyname'];
+ $pconfig['ddnsdomainkey'] = $dhcpdconf['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($dhcpdconf['ddnsupdate']);
$pconfig['mac_allow'] = $dhcpdconf['mac_allow'];
$pconfig['mac_deny'] = $dhcpdconf['mac_deny'];
@@ -280,6 +283,11 @@ if ($_POST) {
$input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time.");
if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain'])))
$input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration.");
+ if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary'])))
+ $input_errors[] = gettext("A valid primary domain name server IP address must be specified for the dynamic domain name.");
+ if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) ||
+ ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey']))
+ $input_errors[] = gettext("You must specify both a valid domain key and key name.");
if ($_POST['domainsearchlist']) {
$domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']);
foreach ($domain_array as $curdomain) {
@@ -471,6 +479,9 @@ if ($_POST) {
$dhcpdconf['domainsearchlist'] = $_POST['domainsearchlist'];
$dhcpdconf['denyunknown'] = ($_POST['denyunknown']) ? true : false;
$dhcpdconf['ddnsdomain'] = $_POST['ddnsdomain'];
+ $dhcpdconf['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
+ $dhcpdconf['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname'];
+ $dhcpdconf['ddnsdomainkey'] = $_POST['ddnsdomainkey'];
$dhcpdconf['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false;
$dhcpdconf['mac_allow'] = $_POST['mac_allow'];
$dhcpdconf['mac_deny'] = $_POST['mac_deny'];
@@ -612,6 +623,9 @@ include("head.inc");
document.iform.staticarp.disabled = endis;
document.iform.dhcpleaseinlocaltime.disabled = endis;
document.iform.ddnsdomain.disabled = endis;
+ document.iform.ddnsdomainprimary.disabled = endis;
+ document.iform.ddnsdomainkeyname.disabled = endis;
+ document.iform.ddnsdomainkey.disabled = endis;
document.iform.ddnsupdate.disabled = endis;
document.iform.mac_allow.disabled = endis;
document.iform.mac_deny.disabled = endis;
@@ -890,14 +904,14 @@ include("head.inc");
<td width="22%" valign="top" class="vncell"><?=gettext("Gateway");?></td>
<td width="78%" class="vtable">
<input name="gateway" type="text" class="formfld host" id="gateway" size="20" value="<?=htmlspecialchars($pconfig['gateway']);?>"><br>
- <?=gettext("The default is to use the IP on this interface of the firewall as the gateway. Specify an alternate gateway here if this is not the correct gateway for your network. Type \"none\" for no gateway assignment.");?>
+ <?=gettext("The default is to use the IP on this interface of the firewall as the gateway. Specify an alternate gateway here if this is not the correct gateway for your network. Type \"none\" for no gateway assignment.");?>
</td>
</tr>
<tr>
<td width="22%" valign="top" class="vncell"><?=gettext("Domain name");?></td>
<td width="78%" class="vtable">
<input name="domain" type="text" class="formfld unknown" id="domain" size="20" value="<?=htmlspecialchars($pconfig['domain']);?>"><br>
- <?=gettext("The default is to use the domain name of this system as the default domain name provided by DHCP. You may specify an alternate domain name here.");?>
+ <?=gettext("The default is to use the domain name of this system as the default domain name provided by DHCP. You may specify an alternate domain name here.");?>
</td>
</tr>
<tr>
@@ -996,6 +1010,12 @@ include("head.inc");
<input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br />
<?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br />
<?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br>
+ <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br />
+ <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?>
</div>
</td>
</tr>
diff --git a/usr/local/www/services_dhcp_edit.php b/usr/local/www/services_dhcp_edit.php
index da77afc..d7ade1c 100755
--- a/usr/local/www/services_dhcp_edit.php
+++ b/usr/local/www/services_dhcp_edit.php
@@ -107,6 +107,9 @@ if (isset($id) && $a_maps[$id]) {
list($pconfig['wins1'],$pconfig['wins2']) = $a_maps[$id]['winsserver'];
list($pconfig['dns1'],$pconfig['dns2']) = $a_maps[$id]['dnsserver'];
$pconfig['ddnsdomain'] = $a_maps[$id]['ddnsdomain'];
+ $pconfig['ddnsdomainprimary'] = $a_maps[$id]['ddnsdomainprimary'];
+ $pconfig['ddnsdomainkeyname'] = $a_maps[$id]['ddnsdomainkeyname'];
+ $pconfig['ddnsdomainkey'] = $a_maps[$id]['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($a_maps[$id]['ddnsupdate']);
list($pconfig['ntp1'],$pconfig['ntp2']) = $a_maps[$id]['ntpserver'];
$pconfig['tftp'] = $a_maps[$id]['tftp'];
@@ -128,6 +131,9 @@ if (isset($id) && $a_maps[$id]) {
$pconfig['dns1'] = $_GET['dns1'];
$pconfig['dns2'] = $_GET['dns2'];
$pconfig['ddnsdomain'] = $_GET['ddnsdomain'];
+ $pconfig['ddnsdomainprimary'] = $_GET['ddnsdomainprimary'];
+ $pconfig['ddnsdomainkeyname'] = $_GET['ddnsdomainkeyname'];
+ $pconfig['ddnsdomainkey'] = $_GET['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($_GET['ddnsupdate']);
$pconfig['ntp1'] = $_GET['ntp1'];
$pconfig['ntp2'] = $_GET['ntp2'];
@@ -180,7 +186,6 @@ if ($_POST) {
continue;
if ((($mapent['hostname'] == $_POST['hostname']) && $mapent['hostname']) || (($mapent['mac'] == $_POST['mac']) && $mapent['mac']) || (($mapent['ipaddr'] == $_POST['ipaddr']) && $mapent['ipaddr'] ) || (($mapent['cid'] == $_POST['cid']) && $mapent['cid'])) {
-
$input_errors[] = gettext("This Hostname, IP, MAC address or Client identifier already exists.");
break;
}
@@ -230,6 +235,11 @@ if ($_POST) {
$input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time.");
if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain'])))
$input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration.");
+ if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary'])))
+ $input_errors[] = gettext("A valid primary domain name server IP address must be specified for the dynamic domain name.");
+ if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) ||
+ ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey']))
+ $input_errors[] = gettext("You must specify both a valid domain key and key name.");
if ($_POST['domainsearchlist']) {
$domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']);
foreach ($domain_array as $curdomain) {
@@ -276,6 +286,9 @@ if ($_POST) {
$mapent['domain'] = $_POST['domain'];
$mapent['domainsearchlist'] = $_POST['domainsearchlist'];
$mapent['ddnsdomain'] = $_POST['ddnsdomain'];
+ $mapent['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
+ $mapent['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname'];
+ $mapent['ddnsdomainkey'] = $_POST['ddnsdomainkey'];
$mapent['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false;
unset($mapent['ntpserver']);
@@ -473,6 +486,12 @@ include("head.inc");
<input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br />
<?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br />
<?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br>
+ <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br />
+ <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?>
</div>
</td>
</tr>
diff --git a/usr/local/www/services_dhcpv6.php b/usr/local/www/services_dhcpv6.php
index 238497f..b123e12 100644
--- a/usr/local/www/services_dhcpv6.php
+++ b/usr/local/www/services_dhcpv6.php
@@ -109,6 +109,9 @@ if (is_array($config['dhcpdv6'][$if])){
list($pconfig['dns1'],$pconfig['dns2']) = $config['dhcpdv6'][$if]['dnsserver'];
$pconfig['enable'] = isset($config['dhcpdv6'][$if]['enable']);
$pconfig['ddnsdomain'] = $config['dhcpdv6'][$if]['ddnsdomain'];
+ $pconfig['ddnsdomainprimary'] = $config['dhcpdv6'][$if]['ddnsdomainprimary'];
+ $pconfig['ddnsdomainkeyname'] = $config['dhcpdv6'][$if]['ddnsdomainkeyname'];
+ $pconfig['ddnsdomainkey'] = $config['dhcpdv6'][$if]['ddnsdomainkey'];
$pconfig['ddnsupdate'] = isset($config['dhcpdv6'][$if]['ddnsupdate']);
list($pconfig['ntp1'],$pconfig['ntp2']) = $config['dhcpdv6'][$if]['ntpserver'];
$pconfig['tftp'] = $config['dhcpdv6'][$if]['tftp'];
@@ -192,6 +195,11 @@ if ($_POST) {
$input_errors[] = gettext("The maximum lease time must be at least 60 seconds and higher than the default lease time.");
if (($_POST['ddnsdomain'] && !is_domain($_POST['ddnsdomain'])))
$input_errors[] = gettext("A valid domain name must be specified for the dynamic DNS registration.");
+ if (($_POST['ddnsdomain'] && !is_ipaddrv4($_POST['ddnsdomainprimary'])))
+ $input_errors[] = gettext("A valid primary domain name server IPv4 address must be specified for the dynamic domain name.");
+ if (($_POST['ddnsdomainkey'] && !$_POST['ddnsdomainkeyname']) ||
+ ($_POST['ddnsdomainkeyname'] && !$_POST['ddnsdomainkey']))
+ $input_errors[] = gettext("You must specify both a valid domain key and key name.");
if ($_POST['domainsearchlist']) {
$domain_array=preg_split("/[ ;]+/",$_POST['domainsearchlist']);
foreach ($domain_array as $curdomain) {
@@ -294,6 +302,9 @@ if ($_POST) {
$config['dhcpdv6'][$if]['domainsearchlist'] = $_POST['domainsearchlist'];
$config['dhcpdv6'][$if]['enable'] = ($_POST['enable']) ? true : false;
$config['dhcpdv6'][$if]['ddnsdomain'] = $_POST['ddnsdomain'];
+ $config['dhcpdv6'][$if]['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
+ $config['dhcpdv6'][$if]['ddnsdomainkeyname'] = $_POST['ddnsdomainkeyname'];
+ $config['dhcpdv6'][$if]['ddnsdomainkey'] = $_POST['ddnsdomainkey'];
$config['dhcpdv6'][$if]['ddnsupdate'] = ($_POST['ddnsupdate']) ? true : false;
unset($config['dhcpdv6'][$if]['ntpserver']);
@@ -396,6 +407,9 @@ include("head.inc");
document.iform.domain.disabled = endis;
document.iform.domainsearchlist.disabled = endis;
document.iform.ddnsdomain.disabled = endis;
+ document.iform.ddnsdomainprimary.disabled = endis;
+ document.iform.ddnsdomainkeyname.disabled = endis;
+ document.iform.ddnsdomainkey.disabled = endis;
document.iform.ddnsupdate.disabled = endis;
document.iform.ntp1.disabled = endis;
document.iform.ntp2.disabled = endis;
@@ -682,6 +696,12 @@ display_top_tabs($tab_array);
<input name="ddnsdomain" type="text" class="formfld unknown" id="ddnsdomain" size="28" value="<?=htmlspecialchars($pconfig['ddnsdomain']);?>"><br />
<?=gettext("Note: Leave blank to disable dynamic DNS registration.");?><br />
<?=gettext("Enter the dynamic DNS domain which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainprimary" type="text" class="formfld unknown" id="ddnsdomainprimary" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainprimary']);?>"><br>
+ <?=gettext("Enter the primary domain name server IP address for the dynamic domain name.");?><br />
+ <input name="ddnsdomainkeyname" type="text" class="formfld unknown" id="ddnsdomainkeyname" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkeyname']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key name which will be used to register client names in the DNS server.");?>
+ <input name="ddnsdomainkey" type="text" class="formfld unknown" id="ddnsdomainkey" size="20" value="<?=htmlspecialchars($pconfig['ddnsdomainkey']);?>"><br />
+ <?=gettext("Enter the dynamic DNS domain key secret which will be used to register client names in the DNS server.");?>
</div>
</td>
</tr>
OpenPOWER on IntegriCloud