From 7afc581f6cd8fc37c3e14ece12fb16d31f1886f9 Mon Sep 17 00:00:00 2001 From: Oyvind Albrigtsen Date: Fri, 10 Jan 2020 14:35:56 +0100 Subject: [PATCH] IPsrcaddr: fixes to avoid failing during probe --- heartbeat/IPsrcaddr | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/heartbeat/IPsrcaddr b/heartbeat/IPsrcaddr index f9085f082..0ef8b391f 100755 --- a/heartbeat/IPsrcaddr +++ b/heartbeat/IPsrcaddr @@ -75,6 +75,10 @@ USAGE="usage: $0 {start|stop|status|monitor|validate-all|meta-data}"; CMDSHOW="$IP2UTIL route show $TABLE to exact $OCF_RESKEY_destination" CMDCHANGE="$IP2UTIL route change to " +if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ]; then + CMDSHOW="$CMDSHOW src $OCF_RESKEY_ipaddress" +fi + if [ "$OCF_RESKEY_table" = "local" ]; then TABLE="$TABLE local" fi @@ -183,7 +187,7 @@ export OCF_RESKEY_ip=$OCF_RESKEY_ipaddress srca_read() { # Capture matching route - doublequotes prevent word splitting... - ROUTE="`$CMDSHOW`" || errorexit "command '$CMDSHOW' failed" + ROUTE="`$CMDSHOW 2> /dev/null`" || errorexit "command '$CMDSHOW' failed" # ... so we can make sure there is only 1 matching route [ 1 -eq `echo "$ROUTE" | wc -l` ] || \ @@ -199,6 +203,11 @@ srca_read() { # and what remains after stripping out the source ip address clause ROUTE_WO_SRC=`echo $ROUTE | sed "s/$MATCHROUTE/\1\5/"` + # using "src " only returns output if there's a match + if [ "$OCF_RESKEY_destination" != "0.0.0.0/0" ]; then + [ -z "$ROUTE" ] && return 1 || return 0 + fi + [ -z "$SRCIP" ] && return 1 [ $SRCIP = $1 ] && return 0 return 2