summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Buechler <cmb@pfsense.org>2014-10-28 16:33:09 -0500
committerChris Buechler <cmb@pfsense.org>2014-10-28 16:33:09 -0500
commiteea2ad5d61b2cbcf2957207fb0f13769c203cb36 (patch)
treee0ff241ca2603fcd89158785341847c0b75ffc0d
parent569e2fdfac48194b3be5cd9cf10042d9f90d60a5 (diff)
downloadpfsense-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
-rw-r--r--etc/inc/interfaces.inc20
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'];
OpenPOWER on IntegriCloud