From eea2ad5d61b2cbcf2957207fb0f13769c203cb36 Mon Sep 17 00:00:00 2001 From: Chris Buechler Date: Tue, 28 Oct 2014 16:33:09 -0500 Subject: FreeBSD fails to set advskew back to 0 after you set it to any other value. That's a separate issue that needs fixing upstream, but in the mean time, we can work around it by removing all CARP VIPs in the same way we do when "Temporarily Disable CARP" is chosen before adding them all back. Ticket #3910 --- etc/inc/interfaces.inc | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'etc/inc/interfaces.inc') diff --git a/etc/inc/interfaces.inc b/etc/inc/interfaces.inc index 684babd..e3067d6 100644 --- a/etc/inc/interfaces.inc +++ b/etc/inc/interfaces.inc @@ -1374,10 +1374,22 @@ function interfaces_carp_set_maintenancemode($carp_maintenancemode){ if (isset($config["virtualip_carp_maintenancemode"]) && $carp_maintenancemode == false) { unset($config["virtualip_carp_maintenancemode"]); write_config("Leave CARP maintenance mode"); - } else - if (!isset($config["virtualip_carp_maintenancemode"]) && $carp_maintenancemode == true) { - $config["virtualip_carp_maintenancemode"] = true; - write_config("Enter CARP maintenance mode"); + if(is_array($config['virtualip']['vip'])) { + $viparr = &$config['virtualip']['vip']; + foreach ($viparr as $vip) { + switch ($vip['mode']) { + case "carp": + interface_vip_bring_down($vip); + //sleep(1); + break; + } + } + } + } else { + if (!isset($config["virtualip_carp_maintenancemode"]) && $carp_maintenancemode == true) { + $config["virtualip_carp_maintenancemode"] = true; + write_config("Enter CARP maintenance mode"); + } } $viparr = &$config['virtualip']['vip']; -- cgit v1.1