diff options
author | Chris Buechler <cmb@pfsense.org> | 2014-10-28 16:33:09 -0500 |
---|---|---|
committer | Chris Buechler <cmb@pfsense.org> | 2014-10-28 16:33:09 -0500 |
commit | eea2ad5d61b2cbcf2957207fb0f13769c203cb36 (patch) | |
tree | e0ff241ca2603fcd89158785341847c0b75ffc0d /etc | |
parent | 569e2fdfac48194b3be5cd9cf10042d9f90d60a5 (diff) | |
download | pfsense-eea2ad5d61b2cbcf2957207fb0f13769c203cb36.zip pfsense-eea2ad5d61b2cbcf2957207fb0f13769c203cb36.tar.gz |
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
Diffstat (limited to 'etc')
-rw-r--r-- | etc/inc/interfaces.inc | 20 |
1 files changed, 16 insertions, 4 deletions
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']; |