selftests: mptcp: dump userspace addrs list

[ Upstream commit 38f027fca1 ]

This patch adds a new helper userspace_pm_dump() to dump addresses
for the userspace PM. Use this helper to check whether an ID 0 subflow
is listed in the output of dump command after creating an ID 0 subflow
in "userspace pm create id 0 subflow" test. Dump userspace PM addresses
list in "userspace pm add & remove address" test and in "userspace pm
create destroy subflow" test.

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Stable-dep-of: e93681afcb ("selftests: mptcp: join: cannot rm sf if closed")
Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
Geliang Tang 2024-03-01 19:18:34 +01:00 committed by Greg Kroah-Hartman
parent 05867195c9
commit 1b8af4ba00

View File

@ -21,6 +21,7 @@ cinfail=""
cinsent=""
tmpfile=""
cout=""
err=""
capout=""
ns1=""
ns2=""
@ -187,6 +188,7 @@ init() {
cin=$(mktemp)
cinsent=$(mktemp)
cout=$(mktemp)
err=$(mktemp)
evts_ns1=$(mktemp)
evts_ns2=$(mktemp)
@ -202,6 +204,7 @@ cleanup()
rm -f "$sin" "$sout" "$cinsent" "$cinfail"
rm -f "$tmpfile"
rm -rf $evts_ns1 $evts_ns2
rm -f "$err"
cleanup_partial
}
@ -3422,6 +3425,50 @@ userspace_pm_rm_sf()
wait_rm_sf $1 "${cnt}"
}
check_output()
{
local cmd="$1"
local expected="$2"
local msg="$3"
local rc=0
mptcp_lib_check_output "${err}" "${cmd}" "${expected}" || rc=${?}
if [ ${rc} -eq 2 ]; then
fail_test "fail to check output # error ${rc}"
elif [ ${rc} -eq 0 ]; then
print_ok
elif [ ${rc} -eq 1 ]; then
fail_test "fail to check output # different output"
fi
}
# $1: ns
userspace_pm_dump()
{
local evts=$evts_ns1
local tk
[ "$1" == "$ns2" ] && evts=$evts_ns2
tk=$(mptcp_lib_evts_get_info token "$evts")
ip netns exec $1 ./pm_nl_ctl dump token $tk
}
userspace_pm_chk_dump_addr()
{
local ns="${1}"
local exp="${2}"
local check="${3}"
print_check "dump addrs ${check}"
if mptcp_lib_kallsyms_has "mptcp_userspace_pm_dump_addr$"; then
check_output "userspace_pm_dump ${ns}" "${exp}"
else
print_skip
fi
}
userspace_tests()
{
# userspace pm type prevents add_addr
@ -3513,10 +3560,16 @@ userspace_tests()
chk_mptcp_info subflows 2 subflows 2
chk_subflows_total 3 3
chk_mptcp_info add_addr_signal 2 add_addr_accepted 2
userspace_pm_chk_dump_addr "${ns1}" \
$'id 10 flags signal 10.0.2.1\nid 20 flags signal 10.0.3.1' \
"signal"
userspace_pm_rm_addr $ns1 10
userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
userspace_pm_chk_dump_addr "${ns1}" \
"id 20 flags signal 10.0.3.1" "after rm_addr 10"
userspace_pm_rm_addr $ns1 20
userspace_pm_rm_sf $ns1 10.0.3.1 $SUB_ESTABLISHED
userspace_pm_chk_dump_addr "${ns1}" "" "after rm_addr 20"
chk_rm_nr 2 2 invert
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
@ -3537,8 +3590,14 @@ userspace_tests()
chk_join_nr 1 1 1
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2
userspace_pm_chk_dump_addr "${ns2}" \
"id 20 flags subflow 10.0.3.2" \
"subflow"
userspace_pm_rm_addr $ns2 20
userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED
userspace_pm_chk_dump_addr "${ns2}" \
"" \
"after rm_addr 20"
chk_rm_nr 1 1
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
@ -3558,6 +3617,8 @@ userspace_tests()
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
userspace_pm_add_sf $ns2 10.0.3.2 0
userspace_pm_chk_dump_addr "${ns2}" \
"id 0 flags subflow 10.0.3.2" "id 0 subflow"
chk_join_nr 1 1 1
chk_mptcp_info subflows 1 subflows 1
chk_subflows_total 2 2