summaryrefslogtreecommitdiffstats
path: root/usr/local
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2007-11-04 22:03:23 +0000
committerChris Buechler <cmb@pfsense.org>2007-11-04 22:03:23 +0000
commit3d7b7757d1037e85e32a63eecdb3b31bef233491 (patch)
tree9acc471caf495445d4164796f0eba5b952c53228 /usr/local
parent48c6ab80c449620ff937e0dc4066a9fef1af4ab6 (diff)
downloadpfsense-3d7b7757d1037e85e32a63eecdb3b31bef233491.zip
pfsense-3d7b7757d1037e85e32a63eecdb3b31bef233491.tar.gz
Do not allow DHCP server to be enabled when DHCP relay is enabled, and vice versa
Ticket #1488
Diffstat (limited to 'usr/local')
-rwxr-xr-xusr/local/www/services_dhcp.php28
-rwxr-xr-xusr/local/www/services_dhcp_relay.php8
2 files changed, 32 insertions, 4 deletions
diff --git a/usr/local/www/services_dhcp.php b/usr/local/www/services_dhcp.php
index 596f018..c66ed03 100755
--- a/usr/local/www/services_dhcp.php
+++ b/usr/local/www/services_dhcp.php
@@ -86,6 +86,25 @@ $pconfig['netmask'] = $config['dhcpd'][$if]['netmask'];
$ifcfg = $config['interfaces'][$if];
+
+/* set the enabled flag which will tell us if DHCP relay is enabled
+ * on any interface. We will use this to disable DHCP server since
+ * the two are not compatible with each other.
+ */
+
+$dhcrelay_enabled = false;
+$dhcrelaycfg = $config['dhcrelay'];
+
+if(is_array($dhcrelaycfg)) {
+ foreach ($dhcrelaycfg as $dhcrelayif => $dhcrelayifconf) {
+ if (isset($dhcrelayifconf['enable']) &&
+ (($dhcrelayif == "lan") ||
+ (isset($config['interfaces'][$dhcrelayif]['enable']) &&
+ $config['interfaces'][$dhcrelayif]['if'] && (!$config['interfaces'][$dhcrelayif]['bridge']))))
+ $dhcrelay_enabled = true;
+ }
+}
+
if (!is_array($config['dhcpd'][$if]['staticmap'])) {
$config['dhcpd'][$if]['staticmap'] = array();
}
@@ -342,6 +361,15 @@ function show_netboot_config() {
<form action="services_dhcp.php" method="post" name="iform" id="iform">
<?php if ($input_errors) print_input_errors($input_errors); ?>
<?php if ($savemsg) print_info_box($savemsg); ?>
+<?php
+ if ($dhcrelay_enabled) {
+ echo "DHCP Relay is currently enabled. Cannot enable the DHCP Server service while the DHCP Relay is enabled on any interface.";
+ include("fend.inc");
+ echo "</body>";
+ echo "</html>";
+ exit;
+ }
+?>
<?php if (file_exists($d_staticmapsdirty_path)): ?><p>
<?php print_info_box_np("The static mapping configuration has been changed.<br>You must apply the changes in order for them to take effect.");?><br>
<?php endif; ?>
diff --git a/usr/local/www/services_dhcp_relay.php b/usr/local/www/services_dhcp_relay.php
index eba5d39..e18d8bb 100755
--- a/usr/local/www/services_dhcp_relay.php
+++ b/usr/local/www/services_dhcp_relay.php
@@ -88,8 +88,9 @@ $ifcfg = $config['interfaces'][$if];
* the two are not compatible with each other.
*/
$dhcpd_enabled = false;
-foreach($config['dhcpd'] as $dhcp)
- if($dhcp['enable']) $dhcpd_enabled = true;
+foreach($config['dhcpd'] as $dhcp) {
+ if(isset($dhcp['enable'])) $dhcpd_enabled = true;
+}
if ($_POST) {
@@ -177,10 +178,9 @@ function enable_change(enable_over) {
<form action="services_dhcp_relay.php" method="post" name="iform" id="iform">
<?php if ($input_errors) print_input_errors($input_errors); ?>
<?php if ($savemsg) print_info_box($savemsg); ?>
-
<?php
if ($dhcpd_enabled) {
- echo "DHCP Server is currently enabled. Cannot display dhcp-relay service while DHCP Server is enabled on any interface.";
+ echo "DHCP Server is currently enabled. Cannot enable the DHCP Relay service while the DHCP Server is enabled on any interface.";
include("fend.inc");
echo "</body>";
echo "</html>";
OpenPOWER on IntegriCloud