From aadc131405b78232e3c812b67a2e7205a8015634 Mon Sep 17 00:00:00 2001 From: Martin Schwenke Date: Thu, 19 Sep 2024 14:32:46 +1000 Subject: [PATCH] ctdb-scripts: update_tickles() should use the public IPs cache This avoids duplicating logic. BUG: https://bugzilla.samba.org/show_bug.cgi?id=15320 RN: Update CTDB to track all TCP connections to public IP addresses Signed-off-by: Martin Schwenke Reviewed-by: Volker Lendecke Reviewed-by: Jerry Heyman (cherry picked from commit b3e2c69ad92c0d20bb10146d2dd6d0d475455298) --- ctdb/config/functions | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/ctdb/config/functions b/ctdb/config/functions index 256e0a7b1b5..45092cda26e 100755 --- a/ctdb/config/functions +++ b/ctdb/config/functions @@ -1154,19 +1154,16 @@ update_tickles() tickledir="${CTDB_SCRIPT_VARDIR}/tickles" mkdir -p "$tickledir" - # What public IPs do I hold? - _pnn=$(ctdb_get_pnn) - _ips=$($CTDB -X ip | awk -F'|' -v pnn="$_pnn" '$3 == pnn {print $2}') # If not hosting any public IPs then can't have any connections... - if [ -z "$_ips" ]; then + if [ ! -s "$CTDB_MY_PUBLIC_IPS_CACHE" ]; then return fi # IPs and port as ss filters _ip_filter="" - for _ip in $_ips; do + while read -r _ip; do _ip_filter="${_ip_filter}${_ip_filter:+ || }src [${_ip}]" - done + done <"$CTDB_MY_PUBLIC_IPS_CACHE" _port_filter="sport == :${_port}" # Record connections to our public IPs in a temporary file. @@ -1190,10 +1187,10 @@ update_tickles() # Record our current tickles in a temporary file _my_tickles="${tickledir}/${_port}.tickles.$$" - for _i in $_ips; do + while read -r _i; do $CTDB -X gettickles "$_i" "$_port" | awk -F'|' 'NR > 1 { printf "%s:%s %s:%s\n", $2, $3, $4, $5 }' - done | + done <"$CTDB_MY_PUBLIC_IPS_CACHE" | sort >"$_my_tickles" # Add tickles for connections that we haven't already got tickles for -- 2.47.2