From 3d7b7757d1037e85e32a63eecdb3b31bef233491 Mon Sep 17 00:00:00 2001 From: Chris Buechler Date: Sun, 4 Nov 2007 22:03:23 +0000 Subject: Do not allow DHCP server to be enabled when DHCP relay is enabled, and vice versa Ticket #1488 --- usr/local/www/services_dhcp.php | 28 ++++++++++++++++++++++++++++ usr/local/www/services_dhcp_relay.php | 8 ++++---- 2 files changed, 32 insertions(+), 4 deletions(-) (limited to 'usr/local') 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() {
+"; + echo ""; + exit; + } +?>

You must apply the changes in order for them to take effect.");?>
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) { - "; echo ""; -- cgit v1.1