diff --git a/src/etc/inc/interfaces.inc b/src/etc/inc/interfaces.inc index 31b1eebe8..48e52719d 100644 --- a/src/etc/inc/interfaces.inc +++ b/src/etc/inc/interfaces.inc @@ -1708,12 +1708,7 @@ function interface_carp_configure(&$vip) $advbase = "advbase " . escapeshellarg($vip['advbase']); } - $carp_maintenancemode = isset($config["virtualip_carp_maintenancemode"]); - if ($carp_maintenancemode) { - $advskew = "advskew 254"; - } else { - $advskew = "advskew " . escapeshellarg($vip['advskew']); - } + $advskew = "advskew " . escapeshellarg($vip['advskew']); mwexec("/sbin/ifconfig {$realif} vhid " . escapeshellarg($vip['vhid']) . " {$advskew} {$advbase} {$password}"); diff --git a/src/etc/rc.syshook.d/early/98_carp_maintenance b/src/etc/rc.syshook.d/early/98_carp_maintenance new file mode 100755 index 000000000..9bb3a1771 --- /dev/null +++ b/src/etc/rc.syshook.d/early/98_carp_maintenance @@ -0,0 +1,10 @@ +#!/bin/sh + +# when virtualip_carp_maintenancemode is set, make sure we startup in demoted state +if [ -f /conf/config.xml ]; then + IS_MNT=`grep -c virtualip_carp_maintenancemode /conf/config.xml` + IS_DEMOTED=`/sbin/sysctl net.inet.carp.demotion | /usr/bin/awk '{print $2;}'` + if [ $IS_MNT -gt 0 ] && [ $IS_DEMOTED -eq -0 ]; then + /sbin/sysctl net.inet.carp.demotion=240 + fi +fi