selftests: mptcp: add mptcp_lib_wait_local_port_listen
authorGeliang Tang <geliang.tang@suse.com>
Tue, 28 Nov 2023 23:18:59 +0000 (15:18 -0800)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Fri, 25 Apr 2025 08:45:54 +0000 (10:45 +0200)
commit 9369777c29395730cec967e7d0f48aed872b7110 upstream.

To avoid duplicated code in different MPTCP selftests, we can add
and use helpers defined in mptcp_lib.sh.

wait_local_port_listen() helper is defined in diag.sh, mptcp_connect.sh,
mptcp_join.sh and simult_flows.sh, export it into mptcp_lib.sh and
rename it with mptcp_lib_ prefix. Use this new helper in all these
scripts.

Note: We only have IPv4 connections in this helper, not looking at IPv6
(tcp6) but that's OK because we only have IPv4 connections here in diag.sh.

Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
Signed-off-by: Mat Martineau <martineau@kernel.org>
Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-15-8d6b94150f6b@kernel.org
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Stable-dep-of: 5afca7e996c4 ("selftests: mptcp: join: test for prohibited MPC to port-based endp")
[ Conflict in diag.sh, because commit 1f24ba67ba49 ("selftests: mptcp:
  diag: check CURRESTAB counters") that is more recent that the one
  here, has been backported in this kernel version before, introducing
  chk_msk_cestab() helper in the same context. wait_local_port_listen()
  was still the same as in the original, and can then be simply removed
  from diag.sh. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
tools/testing/selftests/net/mptcp/diag.sh
tools/testing/selftests/net/mptcp/mptcp_connect.sh
tools/testing/selftests/net/mptcp/mptcp_join.sh
tools/testing/selftests/net/mptcp/mptcp_lib.sh
tools/testing/selftests/net/mptcp/simult_flows.sh

index 7f89623f1080e15e59b1389cda667e6224a5004f..f00c97b2a6b5f6ea4d8f31bf36eb8f53b239c179 100755 (executable)
@@ -186,23 +186,6 @@ chk_msk_inuse()
        __chk_nr get_msk_inuse $expected "${msg}" 0
 }
 
-# $1: ns, $2: port
-wait_local_port_listen()
-{
-       local listener_ns="${1}"
-       local port="${2}"
-
-       local port_hex i
-
-       port_hex="$(printf "%04X" "${port}")"
-       for i in $(seq 10); do
-               ip netns exec "${listener_ns}" cat /proc/net/tcp | \
-                       awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" &&
-                       break
-               sleep 0.1
-       done
-}
-
 # $1: cestab nr
 chk_msk_cestab()
 {
@@ -240,7 +223,7 @@ echo "a" | \
                ip netns exec $ns \
                        ./mptcp_connect -p 10000 -l -t ${timeout_poll} -w 20 \
                                0.0.0.0 >/dev/null &
-wait_local_port_listen $ns 10000
+mptcp_lib_wait_local_port_listen $ns 10000
 chk_msk_nr 0 "no msk on netns creation"
 chk_msk_listen 10000
 
@@ -265,7 +248,7 @@ echo "a" | \
                ip netns exec $ns \
                        ./mptcp_connect -p 10001 -l -s TCP -t ${timeout_poll} -w 20 \
                                0.0.0.0 >/dev/null &
-wait_local_port_listen $ns 10001
+mptcp_lib_wait_local_port_listen $ns 10001
 echo "b" | \
        timeout ${timeout_test} \
                ip netns exec $ns \
@@ -288,7 +271,7 @@ for I in `seq 1 $NR_CLIENTS`; do
                                ./mptcp_connect -p $((I+10001)) -l -w 20 \
                                        -t ${timeout_poll} 0.0.0.0 >/dev/null &
 done
-wait_local_port_listen $ns $((NR_CLIENTS + 10001))
+mptcp_lib_wait_local_port_listen $ns $((NR_CLIENTS + 10001))
 
 for I in `seq 1 $NR_CLIENTS`; do
        echo "b" | \
index d203d314b7b265333f614577f1b0d01764e86520..3763ffa214d53f34e1e02f1e5b65bacee0c6bd72 100755 (executable)
@@ -342,23 +342,6 @@ do_ping()
        return 0
 }
 
-# $1: ns, $2: port
-wait_local_port_listen()
-{
-       local listener_ns="${1}"
-       local port="${2}"
-
-       local port_hex i
-
-       port_hex="$(printf "%04X" "${port}")"
-       for i in $(seq 10); do
-               ip netns exec "${listener_ns}" cat /proc/net/tcp* | \
-                       awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" &&
-                       break
-               sleep 0.1
-       done
-}
-
 do_transfer()
 {
        local listener_ns="$1"
@@ -448,7 +431,7 @@ do_transfer()
                                $extra_args $local_addr < "$sin" > "$sout" &
        local spid=$!
 
-       wait_local_port_listen "${listener_ns}" "${port}"
+       mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}"
 
        local start
        start=$(date +%s%3N)
index 497dc187387f8dae70a2c63d5324bbde1aa9bd94..442b7220468afc6c1f45b781a646ddba5d499318 100755 (executable)
@@ -598,24 +598,6 @@ link_failure()
        done
 }
 
-# $1: ns, $2: port
-wait_local_port_listen()
-{
-       local listener_ns="${1}"
-       local port="${2}"
-
-       local port_hex
-       port_hex="$(printf "%04X" "${port}")"
-
-       local i
-       for i in $(seq 10); do
-               ip netns exec "${listener_ns}" cat /proc/net/tcp* | \
-                       awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" &&
-                       break
-               sleep 0.1
-       done
-}
-
 rm_addr_count()
 {
        mptcp_lib_get_counter "${1}" "MPTcpExtRmAddr"
@@ -1117,7 +1099,7 @@ do_transfer()
        fi
        local spid=$!
 
-       wait_local_port_listen "${listener_ns}" "${port}"
+       mptcp_lib_wait_local_port_listen "${listener_ns}" "${port}"
 
        extra_cl_args="$extra_args $extra_cl_args"
        if [ "$test_linkfail" -eq 0 ];then
index d98c89f31afe8ad01750e616adc6ecdfb178feb4..919f4f1018eb7118aff77756ac8d8862a0c37f0b 100644 (file)
@@ -274,3 +274,21 @@ mptcp_lib_events() {
        ip netns exec "${ns}" ./pm_nl_ctl events >> "${evts}" 2>&1 &
        pid=$!
 }
+
+# $1: ns, $2: port
+mptcp_lib_wait_local_port_listen() {
+       local listener_ns="${1}"
+       local port="${2}"
+
+       local port_hex
+       port_hex="$(printf "%04X" "${port}")"
+
+       local _
+       for _ in $(seq 10); do
+               ip netns exec "${listener_ns}" cat /proc/net/tcp* | \
+                       awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) \
+                            {rc=0; exit}} END {exit rc}" &&
+                       break
+               sleep 0.1
+       done
+}
index f24bd2bf0831117dd9e76d90571ac6611a59f1f2..214a89fce8b803663b7a7f175474bf627f9b2264 100755 (executable)
@@ -123,23 +123,6 @@ setup()
        grep -q ' kmemleak_init$\| lockdep_init$\| kasan_init$\| prove_locking$' /proc/kallsyms && slack=$((slack+550))
 }
 
-# $1: ns, $2: port
-wait_local_port_listen()
-{
-       local listener_ns="${1}"
-       local port="${2}"
-
-       local port_hex i
-
-       port_hex="$(printf "%04X" "${port}")"
-       for i in $(seq 10); do
-               ip netns exec "${listener_ns}" cat /proc/net/tcp* | \
-                       awk "BEGIN {rc=1} {if (\$2 ~ /:${port_hex}\$/ && \$4 ~ /0A/) {rc=0; exit}} END {exit rc}" &&
-                       break
-               sleep 0.1
-       done
-}
-
 do_transfer()
 {
        local cin=$1
@@ -179,7 +162,7 @@ do_transfer()
                                0.0.0.0 < "$sin" > "$sout" &
        local spid=$!
 
-       wait_local_port_listen "${ns3}" "${port}"
+       mptcp_lib_wait_local_port_listen "${ns3}" "${port}"
 
        timeout ${timeout_test} \
                ip netns exec ${ns1} \