diff options
author | jim-p <jimp@pfsense.org> | 2016-09-28 11:12:42 -0400 |
---|---|---|
committer | jim-p <jimp@pfsense.org> | 2016-09-28 11:12:42 -0400 |
commit | 632e5f504fed668c328eea3c0af702d1b4998289 (patch) | |
tree | 37d7c6b47ec2daf58a762525b43efe87b29aab87 /src/usr/local | |
parent | ba868cff5137e18774a934986ad9fffff8081f4e (diff) | |
download | pfsense-632e5f504fed668c328eea3c0af702d1b4998289.zip pfsense-632e5f504fed668c328eea3c0af702d1b4998289.tar.gz |
Apply static ARP entries more consistently when adding and removing static mapping entries. Fixes #6821
Diffstat (limited to 'src/usr/local')
-rw-r--r-- | src/usr/local/www/services_dhcp.php | 4 | ||||
-rw-r--r-- | src/usr/local/www/services_dhcp_edit.php | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/src/usr/local/www/services_dhcp.php b/src/usr/local/www/services_dhcp.php index 5c90fe3..2419b00 100644 --- a/src/usr/local/www/services_dhcp.php +++ b/src/usr/local/www/services_dhcp.php @@ -632,6 +632,10 @@ if ($act == "delpool") { if ($act == "del") { if ($a_maps[$_GET['id']]) { + /* Remove staic ARP entry, if necessary */ + if (isset($a_maps[$_GET['id']]['arp_table_static_entry'])) { + mwexec("/usr/sbin/arp -d " . escapeshellarg($a_maps[$_GET['id']]['ipaddr'])); + } unset($a_maps[$_GET['id']]); write_config(); if (isset($config['dhcpd'][$if]['enable'])) { diff --git a/src/usr/local/www/services_dhcp_edit.php b/src/usr/local/www/services_dhcp_edit.php index f599610..0d9ab28 100644 --- a/src/usr/local/www/services_dhcp_edit.php +++ b/src/usr/local/www/services_dhcp_edit.php @@ -362,6 +362,13 @@ if ($_POST) { } } + /* Configure staic ARP entry, or remove ARP entry if this host is dynamic. See https://redmine.pfsense.org/issues/6821 */ + if ($mapent['arp_table_static_entry']) { + mwexec("/usr/sbin/arp -S " . escapeshellarg($mapent['ipaddr']) . " " . escapeshellarg($mapent['mac'])); + } else { + mwexec("/usr/sbin/arp -d " . escapeshellarg($mapent['ipaddr'])); + } + header("Location: services_dhcp.php?if={$if}"); exit; } |