diff options
author | Chris Buechler <cmb@pfsense.org> | 2007-11-04 22:03:23 +0000 |
---|---|---|
committer | Chris Buechler <cmb@pfsense.org> | 2007-11-04 22:03:23 +0000 |
commit | 3d7b7757d1037e85e32a63eecdb3b31bef233491 (patch) | |
tree | 9acc471caf495445d4164796f0eba5b952c53228 /usr | |
parent | 48c6ab80c449620ff937e0dc4066a9fef1af4ab6 (diff) | |
download | pfsense-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')
-rwxr-xr-x | usr/local/www/services_dhcp.php | 28 | ||||
-rwxr-xr-x | usr/local/www/services_dhcp_relay.php | 8 |
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>"; |