summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-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