summaryrefslogtreecommitdiffstats
path: root/src/usr/local/www/services_dhcp.php
diff options
context:
space:
mode:
authorBrett Keller <blkeller@comcast.net>2016-12-22 12:27:24 -0600
committerRenato Botelho <renato@netgate.com>2016-12-27 17:38:02 -0200
commitc729f32a842660903dbe243ade8c73ac206bb3ef (patch)
tree0010db32206258ddbea4ef383a09e2aea8da988a /src/usr/local/www/services_dhcp.php
parentde5081346e994a7afcf0654ecbf368acb4a6e91f (diff)
downloadpfsense-c729f32a842660903dbe243ade8c73ac206bb3ef.zip
pfsense-c729f32a842660903dbe243ade8c73ac206bb3ef.tar.gz
Add new "Ignore client identifiers" DHCP feature
Exposes the underlying dhcpd configuration option "ignore-client-uids" in the pfSense "Services / DHCP Server" GUI by adding an "Ignore client identifiers" checkbox. As of ISC dhcpd version 4.3.0+, there is a new configuration statement available, "ignore-client-uids". According to the ISC's documentation, "If the 'ignore-client-uids' statement is present and has a value of 'true' or 'on', the UID for clients will not be recorded." While this behavior does not strictly adhere to the DHCP specification, it can be very useful in environments where devices on the network dual boot or PXE boot. Normally, if the network stacks in a single device's different operating systems (including PXE firmware) make DHCP requests with differing client identifiers, the server will treat each request with a unique identifier as having come from a unique client, even when they come from the same device. Thus, different operating systems on the same device and NIC might hold different leases with different IP addresses. Once activated, the "ignore-client-uids" option tells the DHCP server not to record client identifiers in new DHCP leases, which forces the server to fall back on hardware (MAC) addresses to uniquely identify clients. Now different operating systems on the same device and NIC will hold the same lease (based on MAC address), which should keep a device's IP address consistent regardless of its currently running operating system. Same as with most other general and pool-specific DHCP server options in pfSense, note that turning on this option only affects new leases. Any leases that existed prior to enabling this option will still contain their respective client identifiers. Manually deleting older leases or flushing the entire lease table can expedite a full migration to the new server behavior, if desired. (cherry picked from commit 11ee0c6d6f311215411cc0d15298ad075864ad2e)
Diffstat (limited to 'src/usr/local/www/services_dhcp.php')
-rw-r--r--src/usr/local/www/services_dhcp.php9
1 files changed, 9 insertions, 0 deletions
diff --git a/src/usr/local/www/services_dhcp.php b/src/usr/local/www/services_dhcp.php
index 67ddb16..06ee9db 100644
--- a/src/usr/local/www/services_dhcp.php
+++ b/src/usr/local/www/services_dhcp.php
@@ -215,6 +215,7 @@ if (is_array($dhcpdconf)) {
list($pconfig['dns1'], $pconfig['dns2'], $pconfig['dns3'], $pconfig['dns4']) = $dhcpdconf['dnsserver'];
$pconfig['ignorebootp'] = isset($dhcpdconf['ignorebootp']);
$pconfig['denyunknown'] = isset($dhcpdconf['denyunknown']);
+ $pconfig['ignoreclientuids'] = isset($dhcpdconf['ignoreclientuids']);
$pconfig['nonak'] = isset($dhcpdconf['nonak']);
$pconfig['ddnsdomain'] = $dhcpdconf['ddnsdomain'];
$pconfig['ddnsdomainprimary'] = $dhcpdconf['ddnsdomainprimary'];
@@ -588,6 +589,7 @@ if (isset($_POST['save'])) {
$dhcpdconf['domainsearchlist'] = $_POST['domainsearchlist'];
$dhcpdconf['ignorebootp'] = ($_POST['ignorebootp']) ? true : false;
$dhcpdconf['denyunknown'] = ($_POST['denyunknown']) ? true : false;
+ $dhcpdconf['ignoreclientuids'] = ($_POST['ignoreclientuids']) ? true : false;
$dhcpdconf['nonak'] = ($_POST['nonak']) ? true : false;
$dhcpdconf['ddnsdomain'] = $_POST['ddnsdomain'];
$dhcpdconf['ddnsdomainprimary'] = $_POST['ddnsdomainprimary'];
@@ -855,6 +857,13 @@ $section->addInput(new Form_Checkbox(
$pconfig['nonak']
))->setHelp("This option is not compatible with failover and cannot be enabled when a Failover Peer IP address is configured.");
+$section->addInput(new Form_Checkbox(
+ 'ignoreclientuids',
+ 'Ignore client identifiers',
+ 'If a client includes a unique identifier in its DHCP request, that UID will not be recorded in its lease.',
+ $pconfig['ignoreclientuids']
+))->setHelp("This option may be useful when a client can dual boot using different client identifiers but the same hardware (MAC) address. Note that the resulting server behavior violates the official DHCP specification.");
+
if (is_numeric($pool) || ($act == "newpool")) {
$section->addInput(new Form_Input(
OpenPOWER on IntegriCloud