Skip to content

Commit

Permalink
selftests: mptcp: join: add test-case for MPC attempt towards signl ep
Browse files Browse the repository at this point in the history
Explicitly verify that MPC connection attempts towards a port-based
signal endpoint fail with a reset.

Signed-off-by: Paolo Abeni <[email protected]>
Reviewed-by: Matthieu Baerts (NGI0) <[email protected]>
  • Loading branch information
Paolo Abeni authored and intel-lab-lkp committed Oct 7, 2024
1 parent 4658076 commit 7253859
Showing 1 changed file with 86 additions and 22 deletions.
108 changes: 86 additions & 22 deletions tools/testing/selftests/net/mptcp/mptcp_join.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ evts_ns2_pid=0
last_test_failed=0
last_test_skipped=0
last_test_ignored=1
cappid=""

declare -A all_tests
declare -a only_tests_ids
Expand Down Expand Up @@ -887,40 +888,61 @@ check_cestab()
fi
}

do_transfer()
cond_start_capture()
{
local listener_ns="$1"
local connector_ns="$2"
local cl_proto="$3"
local srv_proto="$4"
local connect_addr="$5"

local port=$((10000 + MPTCP_LIB_TEST_COUNTER - 1))
local cappid
local FAILING_LINKS=${FAILING_LINKS:-""}
local fastclose=${fastclose:-""}
local speed=${speed:-"fast"}
local ns="$1"

:> "$cout"
:> "$sout"
:> "$capout"

if $capture; then
local capuser
if [ -z $SUDO_USER ] ; then
local capuser capfile
if [ -z $SUDO_USER ]; then
capuser=""
else
capuser="-Z $SUDO_USER"
fi

capfile=$(printf "mp_join-%02u-%s.pcap" "$MPTCP_LIB_TEST_COUNTER" "${listener_ns}")
capfile=$(printf "mp_join-%02u-%s.pcap" "$MPTCP_LIB_TEST_COUNTER" "$ns")

echo "Capturing traffic for test $MPTCP_LIB_TEST_COUNTER into $capfile"
ip netns exec ${listener_ns} tcpdump -i any -s 65535 -B 32768 $capuser -w $capfile > "$capout" 2>&1 &
ip netns exec "$ns" tcpdump -i any -s 65535 -B 32768 $capuser -w "$capfile" > "$capout" 2>&1 &
cappid=$!

sleep 1
fi
}

cond_stop_capture()
{
if $capture; then
sleep 1
kill $cappid
fi
}

get_port()
{
echo "$((10000 + MPTCP_LIB_TEST_COUNTER - 1))"
}

do_transfer()
{
local listener_ns="$1"
local connector_ns="$2"
local cl_proto="$3"
local srv_proto="$4"
local connect_addr="$5"

local FAILING_LINKS=${FAILING_LINKS:-""}
local fastclose=${fastclose:-""}
local speed=${speed:-"fast"}
local port
port=$(get_port)

:> "$cout"
:> "$sout"

cond_start_capture ${listener_ns}

NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
nstat -n
Expand Down Expand Up @@ -1007,10 +1029,7 @@ do_transfer()
wait $spid
local rets=$?

if $capture; then
sleep 1
kill $cappid
fi
cond_stop_capture

NSTAT_HISTORY=/tmp/${listener_ns}.nstat ip netns exec ${listener_ns} \
nstat | grep Tcp > /tmp/${listener_ns}.out
Expand Down Expand Up @@ -2873,6 +2892,32 @@ verify_listener_events()
fail_test
}

chk_mpc_endp_attempt()
{
local ret=$1
local attempts=$2

print_check "Connect"

if [ ${ret} = 124 ]; then
fail_test "timeout on connect"
elif [ ${ret} = 0 ]; then
fail_test "unexpected successful connect"
else
print_ok

print_check "Attempts"
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPCapableEndpAttempt")
if [ -z "$count" ]; then
print_skip
elif [ "$count" != "$attempts" ]; then
fail_test "got ${count} MPC attempt[s] on port-based endpoint, expected $attempts"
else
print_ok
fi
fi
}

add_addr_ports_tests()
{
# signal address with port
Expand Down Expand Up @@ -2963,6 +3008,25 @@ add_addr_ports_tests()
chk_join_nr 2 2 2
chk_add_nr 2 2 2
fi

if reset "port-based signal endpoint must not accept mpc"; then
local port ret count
port=$(get_port)

cond_start_capture ${ns1}

pm_nl_add_endpoint ${ns1} 10.0.2.1 flags signal port ${port}
mptcp_lib_wait_local_port_listen ${ns1} ${port}

timeout 1 ip netns exec ${ns2} \
./mptcp_connect -t ${timeout_poll} -p $port -s MPTCP 10.0.2.1 >/dev/null 2>&1
ret=$?

cond_stop_capture
cat "$capout"

chk_mpc_endp_attempt ${ret} 1
fi
}

syncookies_tests()
Expand Down

0 comments on commit 7253859

Please sign in to comment.