]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-scripts: update_tickles() should use the public IPs cache
authorMartin Schwenke <mschwenke@ddn.com>
Thu, 19 Sep 2024 04:32:46 +0000 (14:32 +1000)
committerJule Anger <janger@samba.org>
Mon, 25 Nov 2024 12:39:11 +0000 (12:39 +0000)
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 <mschwenke@ddn.com>
Reviewed-by: Volker Lendecke <vl@samba.org>
Reviewed-by: Jerry Heyman <jheyman@ddn.com>
(cherry picked from commit b3e2c69ad92c0d20bb10146d2dd6d0d475455298)

ctdb/config/functions

index 256e0a7b1b56627fa09788a4eb06a08bb3024748..45092cda26ef504194a9e84f65a460c443a50c9d 100755 (executable)
@@ -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