mirror of
https://github.com/torvalds/linux.git
synced 2026-09-23 13:14:02 +02:00
selftests: mptcp: check per-event MPTCP_RST_EMPTCP counters
Add named env-var expectations for each per-event MPTCP_RST_EMPTCP counter, matching the pattern used by the existing JOIN/RST checks. Each defaults to 0 and is checked silently on success; a mismatch prints a check line and fails the test. Counters absent from the running kernel are skipped silently so older kernels do not false-fail. The JOIN-related counters (MPJoinSynAckNoMPJoin, MPJoinAckNoMPJoin, MPJoinAckNoCtx, MPJoinNotEstablished, MPJoinNoIdFound) are checked in chk_join_nr() on fixed namespaces; the two remaining reset counters (MD5SigReset, DssReset) stay in chk_rst_nr(). Add a test at the end of signal_address_tests that triggers MPJoinSynAckNoMPJoin: ns1 signals an address that is already bound on the client (ns2), where a TCP-only mptcp_connect listener is started. The client's MP_JOIN routes locally to the TCP listener, which responds with a plain SYN/ACK without the MP_JOIN option, and the new counter increments on the client side. Other per-event counters (MD5SigReset, MPJoinAckNoMPJoin, MPJoinAckNoCtx, DssReset, MPJoinNotEstablished, MPJoinNoIdFound) are not currently reachable from mptcp_join.sh; the env-var hooks are in place for future tests to set expectations explicitly. Signed-off-by: Shardul Bankar <shardul.b@mpiricsoftware.com> Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org> Link: https://patch.msgid.link/20260812-net-next-mptcp-misc-feat-7-3-v1-6-1905a818f6cb@kernel.org Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
3420c0fd7e
commit
1aa38a1581
|
|
@ -75,6 +75,14 @@ unset join_syn_tx
|
|||
unset join_create_err
|
||||
unset join_bind_err
|
||||
unset join_connect_err
|
||||
unset join_synack_no_mpjoin
|
||||
unset join_ack_no_mpjoin
|
||||
unset join_ack_no_ctx
|
||||
unset join_not_established
|
||||
unset join_no_id_found
|
||||
|
||||
unset rst_md5sig
|
||||
unset rst_dss
|
||||
|
||||
unset fb_ns1
|
||||
unset fb_ns2
|
||||
|
|
@ -1353,6 +1361,8 @@ chk_rst_nr()
|
|||
local rst_tx=$1
|
||||
local rst_rx=$2
|
||||
local ns_invert=${3:-""}
|
||||
local md5sig=${rst_md5sig:-0}
|
||||
local dss=${rst_dss:-0}
|
||||
local count
|
||||
local ns_tx=$ns1
|
||||
local ns_rx=$ns2
|
||||
|
|
@ -1389,6 +1399,21 @@ chk_rst_nr()
|
|||
else
|
||||
print_ok
|
||||
fi
|
||||
|
||||
# MPTCP_RST_EMPTCP reset-event counters; default 0, gated on
|
||||
# availability. Fixed namespaces: MD5SigReset fires on the listener
|
||||
# (server), DssReset on the data receiver (client).
|
||||
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMD5SigReset")
|
||||
if [ -n "$count" ] && [ "$count" != "$md5sig" ]; then
|
||||
print_check "MD5SigReset"
|
||||
fail_test "got $count MD5SigReset expected $md5sig"
|
||||
fi
|
||||
|
||||
count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtDssReset")
|
||||
if [ -n "$count" ] && [ "$count" != "$dss" ]; then
|
||||
print_check "DssReset"
|
||||
fail_test "got $count DssReset expected $dss"
|
||||
fi
|
||||
}
|
||||
|
||||
chk_infi_nr()
|
||||
|
|
@ -1587,6 +1612,11 @@ chk_join_nr()
|
|||
local rst_nr=${join_rst_nr:-0}
|
||||
local infi_nr=${join_infi_nr:-0}
|
||||
local corrupted_pkts=${join_corrupted_pkts:-0}
|
||||
local synack_no_mpjoin=${join_synack_no_mpjoin:-0}
|
||||
local ack_no_mpjoin=${join_ack_no_mpjoin:-0}
|
||||
local ack_no_ctx=${join_ack_no_ctx:-0}
|
||||
local not_established=${join_not_established:-0}
|
||||
local no_id_found=${join_no_id_found:-0}
|
||||
local rc=${KSFT_PASS}
|
||||
local count
|
||||
local with_cookie
|
||||
|
|
@ -1655,6 +1685,44 @@ chk_join_nr()
|
|||
fail_test "got $count JOIN[s] syn rejected expected $syn_rej"
|
||||
fi
|
||||
|
||||
# Per-event MPTCP_RST_EMPTCP JOIN counters; default 0, gated on
|
||||
# availability. Fixed namespaces: the *SynAck* one fires on the
|
||||
# client receiving the SYN/ACK, the others on the server.
|
||||
count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinSynAckNoMPJoin")
|
||||
if [ -n "$count" ] && [ "$count" != "$synack_no_mpjoin" ]; then
|
||||
rc=${KSFT_FAIL}
|
||||
print_check "synack no mpjoin"
|
||||
fail_test "got $count JOIN[s] synack no mpjoin expected $synack_no_mpjoin"
|
||||
fi
|
||||
|
||||
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinAckNoMPJoin")
|
||||
if [ -n "$count" ] && [ "$count" != "$ack_no_mpjoin" ]; then
|
||||
rc=${KSFT_FAIL}
|
||||
print_check "ack no mpjoin"
|
||||
fail_test "got $count JOIN[s] ack no mpjoin expected $ack_no_mpjoin"
|
||||
fi
|
||||
|
||||
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinAckNoCtx")
|
||||
if [ -n "$count" ] && [ "$count" != "$ack_no_ctx" ]; then
|
||||
rc=${KSFT_FAIL}
|
||||
print_check "ack no ctx"
|
||||
fail_test "got $count JOIN[s] ack no ctx expected $ack_no_ctx"
|
||||
fi
|
||||
|
||||
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinNotEstablished")
|
||||
if [ -n "$count" ] && [ "$count" != "$not_established" ]; then
|
||||
rc=${KSFT_FAIL}
|
||||
print_check "join not established"
|
||||
fail_test "got $count JOIN[s] not established expected $not_established"
|
||||
fi
|
||||
|
||||
count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinNoIdFound")
|
||||
if [ -n "$count" ] && [ "$count" != "$no_id_found" ]; then
|
||||
rc=${KSFT_FAIL}
|
||||
print_check "join no id found"
|
||||
fail_test "got $count JOIN[s] no id found expected $no_id_found"
|
||||
fi
|
||||
|
||||
print_results "join Rx" ${rc}
|
||||
|
||||
join_syn_tx="${join_syn_tx:-${syn_nr}}" \
|
||||
|
|
@ -2359,6 +2427,31 @@ signal_address_tests()
|
|||
chk_add_nr 4 4
|
||||
fi
|
||||
fi
|
||||
|
||||
# signalled address belongs to the client, where a TCP-only
|
||||
# listener is bound at it: the client's MP_JOIN routes locally
|
||||
# to the listener and receives a SYN/ACK without MP_JOIN.
|
||||
# MPJoinSynAckNoMPJoin increments on the client side.
|
||||
if reset "signal address, TCP-only listener on client"; then
|
||||
local extra_bind
|
||||
local port
|
||||
|
||||
pm_nl_set_limits $ns1 0 1
|
||||
pm_nl_set_limits $ns2 1 1
|
||||
pm_nl_add_endpoint $ns1 10.0.2.2 flags signal
|
||||
|
||||
port=$(get_port)
|
||||
ip netns exec ${ns2} ./mptcp_connect -l -t -1 -p "$port" \
|
||||
-s TCP 10.0.2.2 &
|
||||
extra_bind=$!
|
||||
mptcp_lib_wait_local_port_listen "$ns2" "$port"
|
||||
|
||||
run_tests $ns1 $ns2 10.0.1.1
|
||||
join_synack_no_mpjoin=1 join_syn_tx=1 \
|
||||
chk_join_nr 0 0 0
|
||||
|
||||
kill ${extra_bind} 2>/dev/null
|
||||
fi
|
||||
}
|
||||
|
||||
laminar_endp_tests()
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user