From 75e7e0e44d24855c8826c355dd39cbd94fcdcd12 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Thu, 15 Sep 2016 11:15:38 +0200 Subject: [PATCH] cleanup carp_status.php --- src/etc/inc/interfaces.inc | 5 +++ src/www/carp_status.php | 72 ++++++++++++++++---------------------- 2 files changed, 35 insertions(+), 42 deletions(-) diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index e9d1b2fcf..e215f3612 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -1918,6 +1918,11 @@ function interface_carp_configure(&$vip) return; } + // when CARP is temporary disabled, don't try to configure on any interface-up events + if (get_single_sysctl('net.inet.carp.allow') == '0') { + return; + } + /* NOTE: Maybe its useless nowdays */ $realif = get_real_interface($vip['interface']); if (!does_interface_exist($realif)) { diff --git a/src/www/carp_status.php b/src/www/carp_status.php index 0fffea09d..7b8f09ffd 100644 --- a/src/www/carp_status.php +++ b/src/www/carp_status.php @@ -30,28 +30,6 @@ require_once("guiconfig.inc"); require_once("interfaces.inc"); -function interfaces_carp_set_maintenancemode($carp_maintenancemode) -{ - global $config; - - if (isset($config["virtualip_carp_maintenancemode"]) && $carp_maintenancemode == false) { - unset($config["virtualip_carp_maintenancemode"]); - write_config("Leave CARP maintenance mode"); - } elseif (!isset($config["virtualip_carp_maintenancemode"]) && $carp_maintenancemode == true) { - $config["virtualip_carp_maintenancemode"] = true; - write_config("Enter CARP maintenance mode"); - } - - if (isset($config['virtualip']['vip'])) { - $viparr = &$config['virtualip']['vip']; - foreach ($viparr as $vip) { - if ($vip['mode'] == 'carp') { - interface_carp_configure($vip); - } - } - } -} - // init $config['virtualip']['vip'] if ( !isset($config['virtualip']['vip']) || !is_array($config['virtualip']['vip'])) { $config['virtualip']['vip'] = array(); @@ -59,35 +37,45 @@ if ( !isset($config['virtualip']['vip']) || !is_array($config['virtualip']['vip' $a_vip = &$config['virtualip']['vip']; if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $act = null; if (!empty($_POST['carp_maintenancemode'])) { - interfaces_carp_set_maintenancemode(!isset($config["virtualip_carp_maintenancemode"])); + $act = "maintenance"; + if (isset($config["virtualip_carp_maintenancemode"])) { + unset($config["virtualip_carp_maintenancemode"]); + write_config("Leave CARP maintenance mode"); + } else { + $config["virtualip_carp_maintenancemode"] = true; + write_config("Enter CARP maintenance mode"); + } } elseif (!empty($_POST['disablecarp'])) { if (get_single_sysctl('net.inet.carp.allow') > 0) { - $carp_counter = 0; + $act = "disable"; + $savemsg = gettext("All virtual IPs have been disabled. Please note that disabling does not survive a reboot."); set_single_sysctl('net.inet.carp.allow', '0'); - foreach ($a_vip as $vip) { - switch ($vip['mode']) { - case "carp": - interface_vip_bring_down($vip); - $carp_counter++; - sleep(1); - break; - } - } - $savemsg = sprintf(gettext("%s IPs have been disabled. Please note that disabling does not survive a reboot."), $carp_counter); } else { + $act = "enable"; $savemsg = gettext("CARP has been enabled."); - foreach ($a_vip as $vip) { - switch ($vip['mode']) { - case "carp": - interface_carp_configure($vip); - sleep(1); - break; - } - } interfaces_carp_setup(); set_single_sysctl('net.inet.carp.allow', '1'); } + foreach ($a_vip as $vip) { + if ($vip['mode'] == 'carp') { + switch ($act) { + case 'maintenance': + interface_carp_configure($vip); + break; + case 'disable': + interface_vip_bring_down($vip); + break; + case 'enable': + interface_carp_configure($vip); + break; + default: + break; + } + } + } + } }