From: Martin Schwenke Date: Thu, 19 Sep 2024 04:32:46 +0000 (+1000) Subject: ctdb-scripts: update_tickles() should use the public IPs cache X-Git-Tag: samba-4.20.7~32 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=aadc131405b78232e3c812b67a2e7205a8015634;p=thirdparty%2Fsamba.git 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) --- 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