From 28cc0dc5f4f2600098267ed76b165bb1067a91fc Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Mon, 26 Aug 2019 21:37:22 +0200 Subject: [PATCH] CARP, kill vague advskew legacy hook when starting in maintenance mode (virtualip_carp_maintenancemode), closes https://github.com/opnsense/core/issues/3671 --- src/etc/inc/interfaces.inc | 7 +------ src/etc/rc.syshook.d/early/98_carp_maintenance | 10 ++++++++++ 2 files changed, 11 insertions(+), 6 deletions(-) create mode 100755 src/etc/rc.syshook.d/early/98_carp_maintenance 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