summaryrefslogtreecommitdiffstats
path: root/etc
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 /etc
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
Diffstat (limited to 'etc')
-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