mirror of
https://github.com/edk2-porting/linux-next.git
synced 2025-01-09 22:24:04 +08:00
selftests: mptcp: add ADD_ADDR timeout test case
This patch added the test case for retransmitting ADD_ADDR when timeout occurs. It set NS1's add_addr_timeout to 1 second, and drop NS2's ADD_ADDR echo packets. Here we need to slow down the transfer process of all data to let the ADD_ADDR suboptions can be retransmitted three times. So we added a new parameter "speed" for do_transfer, it can be set with fast or slow. We also added three new optional parameters for run_tests, and dropped run_remove_tests function. Since we added the netfilter rules in this test case, we need to update the "config" file. Suggested-by: Matthieu Baerts <matthieu.baerts@tessares.net> Suggested-by: Paolo Abeni <pabeni@redhat.com> Acked-by: Paolo Abeni <pabeni@redhat.com> Reviewed-by: Matthieu Baerts <matthieu.baerts@tessares.net> Signed-off-by: Geliang Tang <geliangtang@gmail.com> Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com> Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
parent
9ce7deff92
commit
8d014eaa92
@ -5,3 +5,13 @@ CONFIG_INET_DIAG=m
|
||||
CONFIG_INET_MPTCP_DIAG=m
|
||||
CONFIG_VETH=y
|
||||
CONFIG_NET_SCH_NETEM=m
|
||||
CONFIG_NETFILTER=y
|
||||
CONFIG_NETFILTER_ADVANCED=y
|
||||
CONFIG_NETFILTER_NETLINK=m
|
||||
CONFIG_NF_TABLES=m
|
||||
CONFIG_NFT_COUNTER=m
|
||||
CONFIG_NFT_COMPAT=m
|
||||
CONFIG_NETFILTER_XTABLES=m
|
||||
CONFIG_NETFILTER_XT_MATCH_BPF=m
|
||||
CONFIG_NF_TABLES_IPV4=y
|
||||
CONFIG_NF_TABLES_IPV6=y
|
||||
|
@ -13,6 +13,24 @@ capture=0
|
||||
|
||||
TEST_COUNT=0
|
||||
|
||||
# generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) == 0x30) ||
|
||||
# (ip6 && (ip6[74] & 0xf0) == 0x30)'"
|
||||
CBPF_MPTCP_SUBOPTION_ADD_ADDR="14,
|
||||
48 0 0 0,
|
||||
84 0 0 240,
|
||||
21 0 3 64,
|
||||
48 0 0 54,
|
||||
84 0 0 240,
|
||||
21 6 7 48,
|
||||
48 0 0 0,
|
||||
84 0 0 240,
|
||||
21 0 4 96,
|
||||
48 0 0 74,
|
||||
84 0 0 240,
|
||||
21 0 1 48,
|
||||
6 0 0 65535,
|
||||
6 0 0 0"
|
||||
|
||||
init()
|
||||
{
|
||||
capout=$(mktemp)
|
||||
@ -82,6 +100,26 @@ reset_with_cookies()
|
||||
done
|
||||
}
|
||||
|
||||
reset_with_add_addr_timeout()
|
||||
{
|
||||
local ip="${1:-4}"
|
||||
local tables
|
||||
|
||||
tables="iptables"
|
||||
if [ $ip -eq 6 ]; then
|
||||
tables="ip6tables"
|
||||
fi
|
||||
|
||||
reset
|
||||
|
||||
ip netns exec $ns1 sysctl -q net.mptcp.add_addr_timeout=1
|
||||
ip netns exec $ns2 $tables -A OUTPUT -p tcp \
|
||||
-m tcp --tcp-option 30 \
|
||||
-m bpf --bytecode \
|
||||
"$CBPF_MPTCP_SUBOPTION_ADD_ADDR" \
|
||||
-j DROP
|
||||
}
|
||||
|
||||
for arg in "$@"; do
|
||||
if [ "$arg" = "-c" ]; then
|
||||
capture=1
|
||||
@ -94,6 +132,17 @@ if [ $? -ne 0 ];then
|
||||
exit $ksft_skip
|
||||
fi
|
||||
|
||||
iptables -V > /dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo "SKIP: Could not run all tests without iptables tool"
|
||||
exit $ksft_skip
|
||||
fi
|
||||
|
||||
ip6tables -V > /dev/null 2>&1
|
||||
if [ $? -ne 0 ];then
|
||||
echo "SKIP: Could not run all tests without ip6tables tool"
|
||||
exit $ksft_skip
|
||||
fi
|
||||
|
||||
check_transfer()
|
||||
{
|
||||
@ -135,6 +184,7 @@ do_transfer()
|
||||
connect_addr="$5"
|
||||
rm_nr_ns1="$6"
|
||||
rm_nr_ns2="$7"
|
||||
speed="$8"
|
||||
|
||||
port=$((10000+$TEST_COUNT))
|
||||
TEST_COUNT=$((TEST_COUNT+1))
|
||||
@ -159,7 +209,7 @@ do_transfer()
|
||||
sleep 1
|
||||
fi
|
||||
|
||||
if [[ $rm_nr_ns1 -eq 0 && $rm_nr_ns2 -eq 0 ]]; then
|
||||
if [ $speed = "fast" ]; then
|
||||
mptcp_connect="./mptcp_connect -j"
|
||||
else
|
||||
mptcp_connect="./mptcp_connect -r"
|
||||
@ -250,26 +300,13 @@ run_tests()
|
||||
listener_ns="$1"
|
||||
connector_ns="$2"
|
||||
connect_addr="$3"
|
||||
rm_nr_ns1="${4:-0}"
|
||||
rm_nr_ns2="${5:-0}"
|
||||
speed="${6:-fast}"
|
||||
lret=0
|
||||
|
||||
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} 0 0
|
||||
lret=$?
|
||||
if [ $lret -ne 0 ]; then
|
||||
ret=$lret
|
||||
return
|
||||
fi
|
||||
}
|
||||
|
||||
run_remove_tests()
|
||||
{
|
||||
listener_ns="$1"
|
||||
connector_ns="$2"
|
||||
connect_addr="$3"
|
||||
rm_nr_ns1="$4"
|
||||
rm_nr_ns2="$5"
|
||||
lret=0
|
||||
|
||||
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} ${rm_nr_ns1} ${rm_nr_ns2}
|
||||
do_transfer ${listener_ns} ${connector_ns} MPTCP MPTCP ${connect_addr} \
|
||||
${rm_nr_ns1} ${rm_nr_ns2} ${speed}
|
||||
lret=$?
|
||||
if [ $lret -ne 0 ]; then
|
||||
ret=$lret
|
||||
@ -491,12 +528,21 @@ run_tests $ns1 $ns2 10.0.1.1
|
||||
chk_join_nr "multiple subflows and signal" 3 3 3
|
||||
chk_add_nr 1 1
|
||||
|
||||
# add_addr timeout
|
||||
reset_with_add_addr_timeout
|
||||
ip netns exec $ns1 ./pm_nl_ctl limits 0 1
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 1 1
|
||||
ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
|
||||
run_tests $ns1 $ns2 10.0.1.1 0 0 slow
|
||||
chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1
|
||||
chk_add_nr 4 0
|
||||
|
||||
# single subflow, remove
|
||||
reset
|
||||
ip netns exec $ns1 ./pm_nl_ctl limits 0 1
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 0 1
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
|
||||
run_remove_tests $ns1 $ns2 10.0.1.1 0 1
|
||||
run_tests $ns1 $ns2 10.0.1.1 0 1 slow
|
||||
chk_join_nr "remove single subflow" 1 1 1
|
||||
chk_rm_nr 1 1
|
||||
|
||||
@ -506,7 +552,7 @@ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 0 2
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
|
||||
run_remove_tests $ns1 $ns2 10.0.1.1 0 2
|
||||
run_tests $ns1 $ns2 10.0.1.1 0 2 slow
|
||||
chk_join_nr "remove multiple subflows" 2 2 2
|
||||
chk_rm_nr 2 2
|
||||
|
||||
@ -515,7 +561,7 @@ reset
|
||||
ip netns exec $ns1 ./pm_nl_ctl limits 0 1
|
||||
ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 1 1
|
||||
run_remove_tests $ns1 $ns2 10.0.1.1 1 0
|
||||
run_tests $ns1 $ns2 10.0.1.1 1 0 slow
|
||||
chk_join_nr "remove single address" 1 1 1
|
||||
chk_add_nr 1 1
|
||||
chk_rm_nr 0 0
|
||||
@ -526,7 +572,7 @@ ip netns exec $ns1 ./pm_nl_ctl limits 0 2
|
||||
ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 1 2
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
|
||||
run_remove_tests $ns1 $ns2 10.0.1.1 1 1
|
||||
run_tests $ns1 $ns2 10.0.1.1 1 1 slow
|
||||
chk_join_nr "remove subflow and signal" 2 2 2
|
||||
chk_add_nr 1 1
|
||||
chk_rm_nr 1 1
|
||||
@ -538,7 +584,7 @@ ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
|
||||
ip netns exec $ns2 ./pm_nl_ctl limits 1 3
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
|
||||
ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags subflow
|
||||
run_remove_tests $ns1 $ns2 10.0.1.1 1 2
|
||||
run_tests $ns1 $ns2 10.0.1.1 1 2 slow
|
||||
chk_join_nr "remove subflows and signal" 3 3 3
|
||||
chk_add_nr 1 1
|
||||
chk_rm_nr 2 2
|
||||
|
Loading…
Reference in New Issue
Block a user