* [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases
@ 2022-02-19 23:17 Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 01/19] Revert "selftests: mptcp: adjust output alignment for more tests" Geliang Tang
` (18 more replies)
0 siblings, 19 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Resend all my queued patches in the patchwork. The sequence of 4 applied
patches is adjusted and rebased. No code modified.
Geliang Tang (19):
Revert "selftests: mptcp: adjust output alignment for more tests"
Revert "selftests: mptcp: add infinite map mibs check"
Revert "selftests: mptcp: add invert check in check_transfer"
Revert "mptcp: add mib for infinite map sending"
Squash to "mptcp: infinite mapping receiving"
selftests: mptcp: adjust output alignment for more tests
mptcp: add the mib for infinite map sending
selftests: mptcp: add the infinite map mibs check
mptcp: add the mibs for MP_FASTCLOSE
selftests: mptcp: add the MP_FASTCLOSE mibs check
mptcp: add the mibs for MP_RST
selftests: mptcp: add the MP_RST mibs check
selftests: mptcp: add extra_args in do_transfer
selftests: mptcp: reuse linkfail to make given size files
selftests: mptcp: add fastclose testcase
selftests: mptcp: add more arguments for chk_join_nr
selftests: mptcp: add invert check in check_transfer
selftests: mptcp: add the MP_FAIL testcases
selftests: mptcp: update output info of chk_rm_nr
net/mptcp/mib.c | 4 +
net/mptcp/mib.h | 4 +
net/mptcp/options.c | 5 +
net/mptcp/subflow.c | 1 +
tools/testing/selftests/net/mptcp/config | 8 +
.../testing/selftests/net/mptcp/mptcp_join.sh | 336 +++++++++++++++---
6 files changed, 307 insertions(+), 51 deletions(-)
--
2.34.1
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 01/19] Revert "selftests: mptcp: adjust output alignment for more tests"
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 02/19] Revert "selftests: mptcp: add infinite map mibs check" Geliang Tang
` (17 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This reverts commit 4921e10f98e3e09f7fab58aaa0faf8d8aacbe612.
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 25 +++++++++----------
1 file changed, 12 insertions(+), 13 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 8e6a5292175a..baed1e0aaa0e 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -21,7 +21,6 @@ do_all_tests=1
init=0
TEST_COUNT=0
-nr_blank=40
# generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) == 0x30) ||
# (ip6 && (ip6[74] & 0xf0) == 0x30)'"
@@ -813,9 +812,9 @@ chk_csum_nr()
local dump_stats
if [ ! -z "$msg" ]; then
- printf "%03u" "$TEST_COUNT"
+ printf "%02u" "$TEST_COUNT"
else
- echo -n " "
+ echo -n " "
fi
printf " %-36s %s" "$msg" "sum"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
@@ -847,7 +846,7 @@ chk_fail_nr()
local count
local dump_stats
- printf "%-${nr_blank}s %s" " " "ftx"
+ printf "%-39s %s" " " "ftx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$mp_fail_nr_tx" ]; then
@@ -879,7 +878,7 @@ chk_infi_nr()
local count
local dump_stats
- printf "%-${nr_blank}s %s" " " "itx"
+ printf "%-39s %s" " " "itx"
count=`ip netns exec $ns2 nstat -as | grep InfiniteMapTx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$mp_infi_nr_tx" ]; then
@@ -914,7 +913,7 @@ chk_join_nr()
local dump_stats
local with_cookie
- printf "%03u %-36s %s" "$TEST_COUNT" "$msg" "syn"
+ printf "%02u %-36s %s" "$TEST_COUNT" "$msg" "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$syn_nr" ]; then
@@ -977,7 +976,7 @@ chk_stale_nr()
local stale_nr
local recover_nr
- printf "%-${nr_blank}s %-18s" " " "stale"
+ printf "%-39s %-18s" " " "stale"
stale_nr=`ip netns exec $ns nstat -as | grep MPTcpExtSubflowStale | awk '{print $2}'`
[ -z "$stale_nr" ] && stale_nr=0
recover_nr=`ip netns exec $ns nstat -as | grep MPTcpExtSubflowRecover | awk '{print $2}'`
@@ -1018,7 +1017,7 @@ chk_add_nr()
timeout=`ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout`
- printf "%-${nr_blank}s %s" " " "add"
+ printf "%-39s %s" " " "add"
count=`ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddAddr | awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1055,7 +1054,7 @@ chk_add_nr()
echo "[ ok ]"
fi
- printf "%-${nr_blank}s %s" " " "syn"
+ printf "%-39s %s" " " "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortSynRx |
awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1094,7 +1093,7 @@ chk_add_nr()
echo "[ ok ]"
fi
- printf "%-${nr_blank}s %s" " " "syn"
+ printf "%-39s %s" " " "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortSynRx |
awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1144,7 +1143,7 @@ chk_rm_nr()
subflow_ns=$ns1
fi
- printf "%-${nr_blank}s %s" " " "rm "
+ printf "%-39s %s" " " "rm "
count=`ip netns exec $addr_ns nstat -as | grep MPTcpExtRmAddr | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$rm_addr_nr" ]; then
@@ -1176,7 +1175,7 @@ chk_prio_nr()
local count
local dump_stats
- printf "%-${nr_blank}s %s" " " "ptx"
+ printf "%-39s %s" " " "ptx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$mp_prio_nr_tx" ]; then
@@ -1212,7 +1211,7 @@ chk_link_usage()
local tx_rate=$((tx_link * 100 / $tx_total))
local tolerance=5
- printf "%-${nr_blank}s %-18s" " " "link usage"
+ printf "%-39s %-18s" " " "link usage"
if [ $tx_rate -lt $((expected_rate - $tolerance)) -o \
$tx_rate -gt $((expected_rate + $tolerance)) ]; then
echo "[fail] got $tx_rate% usage, expected $expected_rate%"
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 02/19] Revert "selftests: mptcp: add infinite map mibs check"
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 01/19] Revert "selftests: mptcp: adjust output alignment for more tests" Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 03/19] Revert "selftests: mptcp: add invert check in check_transfer" Geliang Tang
` (16 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This reverts commit 22ee6e6a089b8ad85103e6835ecfd822f4f6e1f9.
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 33 -------------------
1 file changed, 33 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index baed1e0aaa0e..519178dacae0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -871,38 +871,6 @@ chk_fail_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
-chk_infi_nr()
-{
- local mp_infi_nr_tx=$1
- local mp_infi_nr_rx=$2
- local count
- local dump_stats
-
- printf "%-39s %s" " " "itx"
- count=`ip netns exec $ns2 nstat -as | grep InfiniteMapTx | awk '{print $2}'`
- [ -z "$count" ] && count=0
- if [ "$count" != "$mp_infi_nr_tx" ]; then
- echo "[fail] got $count infinite map[s] TX expected $mp_infi_nr_tx"
- ret=1
- dump_stats=1
- else
- echo -n "[ ok ]"
- fi
-
- echo -n " - irx "
- count=`ip netns exec $ns1 nstat -as | grep InfiniteMapRx | awk '{print $2}'`
- [ -z "$count" ] && count=0
- if [ "$count" != "$mp_infi_nr_rx" ]; then
- echo "[fail] got $count infinite map[s] RX expected $mp_infi_nr_rx"
- ret=1
- dump_stats=1
- else
- echo "[ ok ]"
- fi
-
- [ "${dump_stats}" = 1 ] && dump_stats
-}
-
chk_join_nr()
{
local msg="$1"
@@ -957,7 +925,6 @@ chk_join_nr()
if [ $checksum -eq 1 ]; then
chk_csum_nr
chk_fail_nr 0 0
- chk_infi_nr 0 0
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 03/19] Revert "selftests: mptcp: add invert check in check_transfer"
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 01/19] Revert "selftests: mptcp: adjust output alignment for more tests" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 02/19] Revert "selftests: mptcp: add infinite map mibs check" Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 04/19] Revert "mptcp: add mib for infinite map sending" Geliang Tang
` (15 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This reverts commit adde1b7ffc4d70608d04be74d8a0f3e5e9b55ab6.
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 25 ++++++-------------
1 file changed, 8 insertions(+), 17 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 519178dacae0..46fe7d135e30 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -16,7 +16,6 @@ mptcp_connect=""
capture=0
checksum=0
ip_mptcp=0
-check_invert=0
do_all_tests=1
init=0
@@ -61,8 +60,6 @@ init_partial()
fi
done
- check_invert=0
-
# ns1 ns2
# ns1eth1 ns2eth1
# ns1eth2 ns2eth2
@@ -220,21 +217,15 @@ check_transfer()
out=$2
what=$3
- cmp -l "$in" "$out" | while read line; do
- local arr=($line)
-
- let sum=0${arr[1]}+0${arr[2]}
- if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
- echo "[ FAIL ] $what does not match (in, out):"
- print_file_err "$in"
- print_file_err "$out"
- ret=1
+ cmp "$in" "$out" > /dev/null 2>&1
+ if [ $? -ne 0 ] ;then
+ echo "[ FAIL ] $what does not match (in, out):"
+ print_file_err "$in"
+ print_file_err "$out"
+ ret=1
- return 1
- else
- echo "$what has inverted byte at ${arr[0]}"
- fi
- done
+ return 1
+ fi
return 0
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 04/19] Revert "mptcp: add mib for infinite map sending"
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (2 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 03/19] Revert "selftests: mptcp: add invert check in check_transfer" Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 05/19] Squash to "mptcp: infinite mapping receiving" Geliang Tang
` (14 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
This reverts commit 64b8d85c6c3dfb6e87a2670f372046c5d2d4cf6b.
---
net/mptcp/mib.c | 1 -
net/mptcp/mib.h | 1 -
net/mptcp/protocol.c | 1 -
3 files changed, 3 deletions(-)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 7cef7409e300..7558802a1435 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -24,7 +24,6 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPJoinAckRx", MPTCP_MIB_JOINACKRX),
SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
- SNMP_MIB_ITEM("InfiniteMapTx", MPTCP_MIB_INFINITEMAPTX),
SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),
SNMP_MIB_ITEM("DataCsumErr", MPTCP_MIB_DATACSUMERR),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 785cf751e5c0..2966fcb6548b 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -17,7 +17,6 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */
MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */
MPTCP_MIB_DSSNOMATCH, /* Received a new mapping that did not match the previous one */
- MPTCP_MIB_INFINITEMAPTX, /* Sent an infinite mapping */
MPTCP_MIB_INFINITEMAPRX, /* Received an infinite mapping */
MPTCP_MIB_DSSTCPMISMATCH, /* DSS-mapping did not map with TCP's sequence numbers */
MPTCP_MIB_DATACSUMERR, /* The data checksum fail */
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index 3cb975227d12..fecf4c36b55b 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1238,7 +1238,6 @@ static void mptcp_update_infinite_map(struct mptcp_sock *msk,
mpext->infinite_map = 1;
mpext->data_len = 0;
- MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPTX);
mptcp_subflow_ctx(ssk)->send_infinite_map = 0;
pr_fallback(msk);
__mptcp_do_fallback(msk);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 05/19] Squash to "mptcp: infinite mapping receiving"
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (3 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 04/19] Revert "mptcp: add mib for infinite map sending" Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 06/19] selftests: mptcp: adjust output alignment for more tests Geliang Tang
` (13 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
Print out the infinite map received info.
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/subflow.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/net/mptcp/subflow.c b/net/mptcp/subflow.c
index c05c19f92532..30ffb00661bb 100644
--- a/net/mptcp/subflow.c
+++ b/net/mptcp/subflow.c
@@ -1006,6 +1006,7 @@ static enum mapping_status get_mapping_status(struct sock *ssk,
data_len = mpext->data_len;
if (data_len == 0) {
+ pr_debug("infinite mapping received");
MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPRX);
subflow->map_data_len = 0;
return MAPPING_INVALID;
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 06/19] selftests: mptcp: adjust output alignment for more tests
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (4 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 05/19] Squash to "mptcp: infinite mapping receiving" Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 07/19] mptcp: add the mib for infinite map sending Geliang Tang
` (12 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
The number of self tests in mptcp_join.sh will soon be more than 100, the
output alignment is no longer OK. This patch adjusted it.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 23 ++++++++++---------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 46fe7d135e30..f0f4ff897e60 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -20,6 +20,7 @@ do_all_tests=1
init=0
TEST_COUNT=0
+nr_blank=40
# generated using "nfbpf_compile '(ip && (ip[54] & 0xf0) == 0x30) ||
# (ip6 && (ip6[74] & 0xf0) == 0x30)'"
@@ -803,9 +804,9 @@ chk_csum_nr()
local dump_stats
if [ ! -z "$msg" ]; then
- printf "%02u" "$TEST_COUNT"
+ printf "%03u" "$TEST_COUNT"
else
- echo -n " "
+ echo -n " "
fi
printf " %-36s %s" "$msg" "sum"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
@@ -837,7 +838,7 @@ chk_fail_nr()
local count
local dump_stats
- printf "%-39s %s" " " "ftx"
+ printf "%-${nr_blank}s %s" " " "ftx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$mp_fail_nr_tx" ]; then
@@ -872,7 +873,7 @@ chk_join_nr()
local dump_stats
local with_cookie
- printf "%02u %-36s %s" "$TEST_COUNT" "$msg" "syn"
+ printf "%03u %-36s %s" "$TEST_COUNT" "$msg" "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinSynRx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$syn_nr" ]; then
@@ -934,7 +935,7 @@ chk_stale_nr()
local stale_nr
local recover_nr
- printf "%-39s %-18s" " " "stale"
+ printf "%-${nr_blank}s %-18s" " " "stale"
stale_nr=`ip netns exec $ns nstat -as | grep MPTcpExtSubflowStale | awk '{print $2}'`
[ -z "$stale_nr" ] && stale_nr=0
recover_nr=`ip netns exec $ns nstat -as | grep MPTcpExtSubflowRecover | awk '{print $2}'`
@@ -975,7 +976,7 @@ chk_add_nr()
timeout=`ip netns exec $ns1 sysctl -n net.mptcp.add_addr_timeout`
- printf "%-39s %s" " " "add"
+ printf "%-${nr_blank}s %s" " " "add"
count=`ip netns exec $ns2 nstat -as MPTcpExtAddAddr | grep MPTcpExtAddAddr | awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1012,7 +1013,7 @@ chk_add_nr()
echo "[ ok ]"
fi
- printf "%-39s %s" " " "syn"
+ printf "%-${nr_blank}s %s" " " "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPJoinPortSynRx |
awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1051,7 +1052,7 @@ chk_add_nr()
echo "[ ok ]"
fi
- printf "%-39s %s" " " "syn"
+ printf "%-${nr_blank}s %s" " " "syn"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMismatchPortSynRx |
awk '{print $2}'`
[ -z "$count" ] && count=0
@@ -1101,7 +1102,7 @@ chk_rm_nr()
subflow_ns=$ns1
fi
- printf "%-39s %s" " " "rm "
+ printf "%-${nr_blank}s %s" " " "rm "
count=`ip netns exec $addr_ns nstat -as | grep MPTcpExtRmAddr | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$rm_addr_nr" ]; then
@@ -1133,7 +1134,7 @@ chk_prio_nr()
local count
local dump_stats
- printf "%-39s %s" " " "ptx"
+ printf "%-${nr_blank}s %s" " " "ptx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPPrioTx | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$mp_prio_nr_tx" ]; then
@@ -1169,7 +1170,7 @@ chk_link_usage()
local tx_rate=$((tx_link * 100 / $tx_total))
local tolerance=5
- printf "%-39s %-18s" " " "link usage"
+ printf "%-${nr_blank}s %-18s" " " "link usage"
if [ $tx_rate -lt $((expected_rate - $tolerance)) -o \
$tx_rate -gt $((expected_rate + $tolerance)) ]; then
echo "[fail] got $tx_rate% usage, expected $expected_rate%"
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 07/19] mptcp: add the mib for infinite map sending
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (5 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 06/19] selftests: mptcp: adjust output alignment for more tests Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 08/19] selftests: mptcp: add the infinite map mibs check Geliang Tang
` (11 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a new mib named MPTCP_MIB_INFINITEMAPTX, increase it
when a infinite mapping has been sent out.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/mib.c | 1 +
net/mptcp/mib.h | 1 +
net/mptcp/protocol.c | 1 +
3 files changed, 3 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 7558802a1435..7cef7409e300 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -24,6 +24,7 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPJoinAckRx", MPTCP_MIB_JOINACKRX),
SNMP_MIB_ITEM("MPJoinAckHMacFailure", MPTCP_MIB_JOINACKMAC),
SNMP_MIB_ITEM("DSSNotMatching", MPTCP_MIB_DSSNOMATCH),
+ SNMP_MIB_ITEM("InfiniteMapTx", MPTCP_MIB_INFINITEMAPTX),
SNMP_MIB_ITEM("InfiniteMapRx", MPTCP_MIB_INFINITEMAPRX),
SNMP_MIB_ITEM("DSSNoMatchTCP", MPTCP_MIB_DSSTCPMISMATCH),
SNMP_MIB_ITEM("DataCsumErr", MPTCP_MIB_DATACSUMERR),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 2966fcb6548b..785cf751e5c0 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -17,6 +17,7 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_JOINACKRX, /* Received an ACK + MP_JOIN */
MPTCP_MIB_JOINACKMAC, /* HMAC was wrong on ACK + MP_JOIN */
MPTCP_MIB_DSSNOMATCH, /* Received a new mapping that did not match the previous one */
+ MPTCP_MIB_INFINITEMAPTX, /* Sent an infinite mapping */
MPTCP_MIB_INFINITEMAPRX, /* Received an infinite mapping */
MPTCP_MIB_DSSTCPMISMATCH, /* DSS-mapping did not map with TCP's sequence numbers */
MPTCP_MIB_DATACSUMERR, /* The data checksum fail */
diff --git a/net/mptcp/protocol.c b/net/mptcp/protocol.c
index fecf4c36b55b..3cb975227d12 100644
--- a/net/mptcp/protocol.c
+++ b/net/mptcp/protocol.c
@@ -1238,6 +1238,7 @@ static void mptcp_update_infinite_map(struct mptcp_sock *msk,
mpext->infinite_map = 1;
mpext->data_len = 0;
+ MPTCP_INC_STATS(sock_net(ssk), MPTCP_MIB_INFINITEMAPTX);
mptcp_subflow_ctx(ssk)->send_infinite_map = 0;
pr_fallback(msk);
__mptcp_do_fallback(msk);
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 08/19] selftests: mptcp: add the infinite map mibs check
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (6 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 07/19] mptcp: add the mib for infinite map sending Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 09/19] mptcp: add the mibs for MP_FASTCLOSE Geliang Tang
` (10 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a function chk_infi_nr() to check the mibs for the
infinite mapping.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 33 +++++++++++++++++++
1 file changed, 33 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index f0f4ff897e60..67910a3645c7 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -863,6 +863,38 @@ chk_fail_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
+chk_infi_nr()
+{
+ local infi_tx=$1
+ local infi_rx=$2
+ local count
+ local dump_stats
+
+ printf "%-${nr_blank}s %s" " " "itx"
+ count=`ip netns exec $ns2 nstat -as | grep InfiniteMapTx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$infi_tx" ]; then
+ echo "[fail] got $count infinite map[s] TX expected $infi_tx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ echo -n " - infirx"
+ count=`ip netns exec $ns1 nstat -as | grep InfiniteMapRx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$infi_rx" ]; then
+ echo "[fail] got $count infinite map[s] RX expected $infi_rx"
+ ret=1
+ dump_stats=1
+ else
+ echo "[ ok ]"
+ fi
+
+ [ "${dump_stats}" = 1 ] && dump_stats
+}
+
chk_join_nr()
{
local msg="$1"
@@ -917,6 +949,7 @@ chk_join_nr()
if [ $checksum -eq 1 ]; then
chk_csum_nr
chk_fail_nr 0 0
+ chk_infi_nr 0 0
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 09/19] mptcp: add the mibs for MP_FASTCLOSE
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (7 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 08/19] selftests: mptcp: add the infinite map mibs check Geliang Tang
@ 2022-02-19 23:17 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 10/19] selftests: mptcp: add the MP_FASTCLOSE mibs check Geliang Tang
` (9 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:17 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added two more mibs for MP_FASTCLOSE, MPTCP_MIB_MPFASTCLOSETX
for the MP_FASTCLOSE sending and MPTCP_MIB_MPFASTCLOSERX for receiving.
Also added a debug log for MP_FASTCLOSE receiving, printed out the recv_key
of MP_FASTCLOSE in mptcp_parse_option to show that MP_RST is received.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/mib.c | 2 ++
net/mptcp/mib.h | 2 ++
net/mptcp/options.c | 3 +++
3 files changed, 7 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 7cef7409e300..684643f8af53 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -49,6 +49,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPPrioRx", MPTCP_MIB_MPPRIORX),
SNMP_MIB_ITEM("MPFailTx", MPTCP_MIB_MPFAILTX),
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
+ SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
+ SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 785cf751e5c0..93dd5176fd5e 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -42,6 +42,8 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_MPPRIORX, /* Received a MP_PRIO */
MPTCP_MIB_MPFAILTX, /* Transmit a MP_FAIL */
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
+ MPTCP_MIB_MPFASTCLOSETX, /* Transmit a MP_FASTCLOSE */
+ MPTCP_MIB_MPFASTCLOSERX, /* Received a MP_FASTCLOSE */
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index 0401b22128c4..e775d75807fd 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -323,6 +323,7 @@ static void mptcp_parse_option(const struct sk_buff *skb,
mp_opt->rcvr_key = get_unaligned_be64(ptr);
ptr += 8;
mp_opt->suboptions |= OPTION_MPTCP_FASTCLOSE;
+ pr_debug("MP_FASTCLOSE: recv_key=%llu", mp_opt->rcvr_key);
break;
case MPTCPOPT_RST:
@@ -832,6 +833,7 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
mptcp_established_options_mp_fail(sk, &opt_size, remaining, opts)) {
*size += opt_size;
remaining -= opt_size;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSETX);
}
/* MP_RST can be used with MP_FASTCLOSE and MP_FAIL if there is room */
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
@@ -1124,6 +1126,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
msk->local_key == mp_opt.rcvr_key) {
WRITE_ONCE(msk->rcv_fastclose, true);
mptcp_schedule_work((struct sock *)msk);
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPFASTCLOSERX);
}
if ((mp_opt.suboptions & OPTION_MPTCP_ADD_ADDR) &&
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 10/19] selftests: mptcp: add the MP_FASTCLOSE mibs check
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (8 preceding siblings ...)
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 09/19] mptcp: add the mibs for MP_FASTCLOSE Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 11/19] mptcp: add the mibs for MP_RST Geliang Tang
` (8 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a new function chk_fclose_nr() to check the numbers
of the MP_FASTCLOSE sending and receiving mibs.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 32 +++++++++++++++++++
1 file changed, 32 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 67910a3645c7..76040c725e12 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -895,6 +895,38 @@ chk_infi_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
+chk_fclose_nr()
+{
+ local fclose_tx=$1
+ local fclose_rx=$2
+ local count
+ local dump_stats
+
+ printf "%-${nr_blank}s %s" " " "ctx"
+ count=`ip netns exec $ns2 nstat -as | grep MPTcpExtMPFastcloseTx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$fclose_tx" ]; then
+ echo "[fail] got $count MP_FASTCLOSE[s] TX expected $fclose_tx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ echo -n " - fclzrx"
+ count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFastcloseRx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$fclose_rx" ]; then
+ echo "[fail] got $count MP_FASTCLOSE[s] RX expected $fclose_rx"
+ ret=1
+ dump_stats=1
+ else
+ echo "[ ok ]"
+ fi
+
+ [ "${dump_stats}" = 1 ] && dump_stats
+}
+
chk_join_nr()
{
local msg="$1"
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 11/19] mptcp: add the mibs for MP_RST
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (9 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 10/19] selftests: mptcp: add the MP_FASTCLOSE mibs check Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 12/19] selftests: mptcp: add the MP_RST mibs check Geliang Tang
` (7 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added two more mibs for MP_RST, MPTCP_MIB_MPRSTTX for
the MP_RST sending and MPTCP_MIB_MPRSTRX for the MP_RST receiving.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
net/mptcp/mib.c | 2 ++
net/mptcp/mib.h | 2 ++
net/mptcp/options.c | 2 ++
3 files changed, 6 insertions(+)
diff --git a/net/mptcp/mib.c b/net/mptcp/mib.c
index 684643f8af53..d93a8c9996fd 100644
--- a/net/mptcp/mib.c
+++ b/net/mptcp/mib.c
@@ -51,6 +51,8 @@ static const struct snmp_mib mptcp_snmp_list[] = {
SNMP_MIB_ITEM("MPFailRx", MPTCP_MIB_MPFAILRX),
SNMP_MIB_ITEM("MPFastcloseTx", MPTCP_MIB_MPFASTCLOSETX),
SNMP_MIB_ITEM("MPFastcloseRx", MPTCP_MIB_MPFASTCLOSERX),
+ SNMP_MIB_ITEM("MPRstTx", MPTCP_MIB_MPRSTTX),
+ SNMP_MIB_ITEM("MPRstRx", MPTCP_MIB_MPRSTRX),
SNMP_MIB_ITEM("RcvPruned", MPTCP_MIB_RCVPRUNED),
SNMP_MIB_ITEM("SubflowStale", MPTCP_MIB_SUBFLOWSTALE),
SNMP_MIB_ITEM("SubflowRecover", MPTCP_MIB_SUBFLOWRECOVER),
diff --git a/net/mptcp/mib.h b/net/mptcp/mib.h
index 93dd5176fd5e..529d07af9e14 100644
--- a/net/mptcp/mib.h
+++ b/net/mptcp/mib.h
@@ -44,6 +44,8 @@ enum linux_mptcp_mib_field {
MPTCP_MIB_MPFAILRX, /* Received a MP_FAIL */
MPTCP_MIB_MPFASTCLOSETX, /* Transmit a MP_FASTCLOSE */
MPTCP_MIB_MPFASTCLOSERX, /* Received a MP_FASTCLOSE */
+ MPTCP_MIB_MPRSTTX, /* Transmit a MP_RST */
+ MPTCP_MIB_MPRSTRX, /* Received a MP_RST */
MPTCP_MIB_RCVPRUNED, /* Incoming packet dropped due to memory limit */
MPTCP_MIB_SUBFLOWSTALE, /* Subflows entered 'stale' status */
MPTCP_MIB_SUBFLOWRECOVER, /* Subflows returned to active status after being stale */
diff --git a/net/mptcp/options.c b/net/mptcp/options.c
index e775d75807fd..88f4ebbd6515 100644
--- a/net/mptcp/options.c
+++ b/net/mptcp/options.c
@@ -839,6 +839,7 @@ bool mptcp_established_options(struct sock *sk, struct sk_buff *skb,
if (mptcp_established_options_rst(sk, skb, &opt_size, remaining, opts)) {
*size += opt_size;
remaining -= opt_size;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPRSTTX);
}
return true;
}
@@ -1161,6 +1162,7 @@ bool mptcp_incoming_options(struct sock *sk, struct sk_buff *skb)
subflow->reset_seen = 1;
subflow->reset_reason = mp_opt.reset_reason;
subflow->reset_transient = mp_opt.reset_transient;
+ MPTCP_INC_STATS(sock_net(sk), MPTCP_MIB_MPRSTRX);
}
if (!(mp_opt.suboptions & OPTION_MPTCP_DSS))
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 12/19] selftests: mptcp: add the MP_RST mibs check
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (10 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 11/19] mptcp: add the mibs for MP_RST Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 13/19] selftests: mptcp: add extra_args in do_transfer Geliang Tang
` (6 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added a new function chk_rst_nr() to check the numbers
of the MP_RST sending and receiving mibs.
Showed in the output whether the inverted namespaces check order is used.
Since if we pass -Cz to mptcp_join.sh, the MP_RST information is showed
twice.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 45 +++++++++++++++++++
1 file changed, 45 insertions(+)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 76040c725e12..bef029de5876 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -863,6 +863,50 @@ chk_fail_nr()
[ "${dump_stats}" = 1 ] && dump_stats
}
+chk_rst_nr()
+{
+ local rst_tx=$1
+ local rst_rx=$2
+ local ns_invert=${3:-""}
+ local count
+ local dump_stats
+ local ns_tx=$ns1
+ local ns_rx=$ns2
+ local extra_msg=""
+
+ if [[ $ns_invert = "invert" ]]; then
+ ns_tx=$ns2
+ ns_rx=$ns1
+ extra_msg=" invert"
+ fi
+
+ printf "%-${nr_blank}s %s" " " "rtx"
+ count=`ip netns exec $ns_tx nstat -as | grep MPTcpExtMPRstTx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$rst_tx" ]; then
+ echo "[fail] got $count MP_RST[s] TX expected $rst_tx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ echo -n " - rstrx "
+ count=`ip netns exec $ns_rx nstat -as | grep MPTcpExtMPRstRx | awk '{print $2}'`
+ [ -z "$count" ] && count=0
+ if [ "$count" != "$rst_rx" ]; then
+ echo "[fail] got $count MP_RST[s] RX expected $rst_rx"
+ ret=1
+ dump_stats=1
+ else
+ echo -n "[ ok ]"
+ fi
+
+ [ "${dump_stats}" = 1 ] && dump_stats
+
+ echo "$extra_msg"
+}
+
chk_infi_nr()
{
local infi_tx=$1
@@ -981,6 +1025,7 @@ chk_join_nr()
if [ $checksum -eq 1 ]; then
chk_csum_nr
chk_fail_nr 0 0
+ chk_rst_nr 0 0
chk_infi_nr 0 0
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 13/19] selftests: mptcp: add extra_args in do_transfer
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (11 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 12/19] selftests: mptcp: add the MP_RST mibs check Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 14/19] selftests: mptcp: reuse linkfail to make given size files Geliang Tang
` (5 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
Instead of using a global variable mptcp_connect, this patch added
a new local variable extra_args in do_transfer() to store the extra
argments passing to the mptcp_connect commands.
This patch also renamed the speed level 'least' to 'speed_*'. This
more flexible way can avoid the need to add new speed levels in the
future.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 30 +++++++++----------
1 file changed, 15 insertions(+), 15 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index bef029de5876..4ce578fda369 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -12,7 +12,6 @@ cout=""
ksft_skip=4
timeout_poll=30
timeout_test=$((timeout_poll * 2 + 1))
-mptcp_connect=""
capture=0
checksum=0
ip_mptcp=0
@@ -515,12 +514,13 @@ do_transfer()
NSTAT_HISTORY=/tmp/${connector_ns}.nstat ip netns exec ${connector_ns} \
nstat -n
+ local extra_args
if [ $speed = "fast" ]; then
- mptcp_connect="./mptcp_connect -j"
+ extra_args="-j"
elif [ $speed = "slow" ]; then
- mptcp_connect="./mptcp_connect -r 50"
- elif [ $speed = "least" ]; then
- mptcp_connect="./mptcp_connect -r 10"
+ extra_args="-r 50"
+ elif [[ $speed = "speed_"* ]]; then
+ extra_args="-r ${speed:6}"
fi
local local_addr
@@ -533,13 +533,13 @@ do_transfer()
if [ "$test_link_fail" -eq 2 ];then
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
- $mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
- ${local_addr} < "$sinfail" > "$sout" &
+ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
+ $extra_args ${local_addr} < "$sinfail" > "$sout" &
else
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
- $mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
- ${local_addr} < "$sin" > "$sout" &
+ ./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
+ $extra_args ${local_addr} < "$sin" > "$sout" &
fi
spid=$!
@@ -548,15 +548,15 @@ do_transfer()
if [ "$test_link_fail" -eq 0 ];then
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
- $mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
- $connect_addr < "$cin" > "$cout" &
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr < "$cin" > "$cout" &
else
( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \
tee "$cinsent" | \
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
- $mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
- $connect_addr > "$cout" &
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr > "$cout" &
fi
cpid=$!
@@ -1611,7 +1611,7 @@ add_addr_timeout_tests()
pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
pm_nl_set_limits $ns2 2 2
- run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10
chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2
chk_add_nr 8 0
@@ -1621,7 +1621,7 @@ add_addr_timeout_tests()
pm_nl_add_endpoint $ns1 10.0.12.1 flags signal
pm_nl_add_endpoint $ns1 10.0.3.1 flags signal
pm_nl_set_limits $ns2 2 2
- run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
+ run_tests $ns1 $ns2 10.0.1.1 0 0 0 speed_10
chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1
chk_add_nr 8 0
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 14/19] selftests: mptcp: reuse linkfail to make given size files
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (12 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 13/19] selftests: mptcp: add extra_args in do_transfer Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 15/19] selftests: mptcp: add fastclose testcase Geliang Tang
` (4 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch reused the test_linkfail values above 2 to make test files with
the given sizes (KB) for both the client side and the server side. It's
useful for the test cases using different file sizes.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 32 ++++++++++++++++---
1 file changed, 27 insertions(+), 5 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 4ce578fda369..9a9e84cc3917 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -530,7 +530,7 @@ do_transfer()
local_addr="0.0.0.0"
fi
- if [ "$test_link_fail" -eq 2 ];then
+ if [ "$test_link_fail" -gt 1 ];then
timeout ${timeout_test} \
ip netns exec ${listener_ns} \
./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
@@ -550,13 +550,19 @@ do_transfer()
ip netns exec ${connector_ns} \
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
$extra_args $connect_addr < "$cin" > "$cout" &
- else
+ elif [ "$test_link_fail" -eq 1 ] || [ "$test_link_fail" -eq 2 ];then
( cat "$cinfail" ; sleep 2; link_failure $listener_ns ; cat "$cinfail" ) | \
tee "$cinsent" | \
timeout ${timeout_test} \
ip netns exec ${connector_ns} \
./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
$extra_args $connect_addr > "$cout" &
+ else
+ cat "$cinfail" | tee "$cinsent" | \
+ timeout ${timeout_test} \
+ ip netns exec ${connector_ns} \
+ ./mptcp_connect -t ${timeout_poll} -p $port -s ${cl_proto} \
+ $extra_args $connect_addr > "$cout" &
fi
cpid=$!
@@ -716,7 +722,7 @@ do_transfer()
return 1
fi
- if [ "$test_link_fail" -eq 2 ];then
+ if [ "$test_link_fail" -gt 1 ];then
check_transfer $sinfail $cout "file received by client"
else
check_transfer $sin $cout "file received by client"
@@ -761,9 +767,18 @@ run_tests()
speed="${7:-fast}"
sflags="${8:-""}"
+ # The values above 2 are reused to make test files
+ # with the given sizes (KB)
+ if [ "$test_linkfail" -gt 2 ]; then
+ size=$test_linkfail
+
+ if [ -z "$cinfail" ]; then
+ cinfail=$(mktemp)
+ fi
+ make_file "$cinfail" "client" $size
# create the input file for the failure test when
# the first failure test run
- if [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then
+ elif [ "$test_linkfail" -ne 0 -a -z "$cinfail" ]; then
# the client file must be considerably larger
# of the maximum expected cwin value, or the
# link utilization will be not predicable
@@ -776,7 +791,14 @@ run_tests()
make_file "$cinfail" "client" $size
fi
- if [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then
+ if [ "$test_linkfail" -gt 2 ]; then
+ size=$test_linkfail
+
+ if [ -z "$sinfail" ]; then
+ sinfail=$(mktemp)
+ fi
+ make_file "$sinfail" "server" $size
+ elif [ "$test_linkfail" -eq 2 -a -z "$sinfail" ]; then
size=$((RANDOM%16))
size=$((size+1))
size=$((size*2048))
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 15/19] selftests: mptcp: add fastclose testcase
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (13 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 14/19] selftests: mptcp: reuse linkfail to make given size files Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 16/19] selftests: mptcp: add more arguments for chk_join_nr Geliang Tang
` (3 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added the self test for MP_FASTCLOSE. Reused the argment
addr_nr_ns2 of do_transfer() to pass the extra argments '-I 2' to
mptcp_connect commands. Then mptcp_connect disconnected the
connections to trigger the MP_FASTCLOSE sending and receiving. Used
chk_fclose_nr to check the MP_FASTCLOSE mibs and used chk_rst_nr to
check the MP_RST mibs. This test used the test_linkfail value to make
1024KB test files.
The output looks like this:
Created /tmp/tmp.XB8sfv1hJ0 (size 1024 KB) containing data sent by client
Created /tmp/tmp.RtTDbzqrXI (size 1024 KB) containing data sent by server
001 fastclose test syn[ ok ] - synack[ ok ] - ack[ ok ]
ctx[ ok ] - fclzrx[ ok ]
rtx[ ok ] - rstrx [ ok ] invert
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 22 ++++++++++++++++++-
1 file changed, 21 insertions(+), 1 deletion(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 9a9e84cc3917..8ceec91933b9 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -523,6 +523,12 @@ do_transfer()
extra_args="-r ${speed:6}"
fi
+ if [[ "${addr_nr_ns2}" = "fastclose_"* ]]; then
+ # disconnect
+ extra_args="$extra_args -I ${addr_nr_ns2:10}"
+ addr_nr_ns2=0
+ fi
+
local local_addr
if is_v6 "${connect_addr}"; then
local_addr="::"
@@ -2400,6 +2406,15 @@ implicit_tests()
wait
}
+fastclose_tests()
+{
+ reset
+ run_tests $ns1 $ns2 10.0.1.1 1024 0 fastclose_2
+ chk_join_nr "fastclose test" 0 0 0
+ chk_fclose_nr 1 1
+ chk_rst_nr 1 1 invert
+}
+
all_tests()
{
subflows_tests
@@ -2419,6 +2434,7 @@ all_tests()
fullmesh_tests
userspace_tests
implicit_tests
+ fastclose_tests
}
# [$1: error message]
@@ -2447,6 +2463,7 @@ usage()
echo " -m fullmesh_tests"
echo " -u userspace_tests"
echo " -I implicit_tests"
+ echo " -z fastclose_tests"
echo " -c capture pcap files"
echo " -C enable data checksum"
echo " -i use ip mptcp"
@@ -2478,7 +2495,7 @@ if [ $do_all_tests -eq 1 ]; then
exit $ret
fi
-while getopts 'fesltra64bpkdmuchCSiI' opt; do
+while getopts 'fesltra64bpkdmuchzCSiI' opt; do
case $opt in
f)
subflows_tests
@@ -2528,6 +2545,9 @@ while getopts 'fesltra64bpkdmuchCSiI' opt; do
u)
userspace_tests
;;
+ z)
+ fastclose_tests
+ ;;
c)
;;
C)
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 16/19] selftests: mptcp: add more arguments for chk_join_nr
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (14 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 15/19] selftests: mptcp: add fastclose testcase Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 17/19] selftests: mptcp: add invert check in check_transfer Geliang Tang
` (2 subsequent siblings)
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added five more arguments for chk_join_nr(). The default
values of them are all zero.
The first two, csum_ns1 and csum_ns1, are passed to chk_csum_nr(), to
check the mib counters of the checksum errors in ns1 and ns2. A '+'
can be added into this two arguments to represent that multiple
checksum errors are allowed when doing this check. For example,
chk_csum_nr "" +2 +2
indicates that two or more checksum errors are allowed in both ns1 and
ns2.
The remaining three, fail_nr, rst_nr and infi_nr, are passed to
chk_fail_nr(), chk_rst_nr() and chk_infi_nr() respectively, to check
the sending and receiving mib counters of MP_FAIL, MP_RST and the
infinite map.
Also did some cleanups in chk_fail_nr(), renamed two local variables
and updated the output message.
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 50 +++++++++++++------
1 file changed, 35 insertions(+), 15 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 8ceec91933b9..310988a8acb2 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -828,8 +828,21 @@ dump_stats()
chk_csum_nr()
{
local msg=${1:-""}
+ local csum_ns1=${2:-0}
+ local csum_ns2=${3:-0}
local count
local dump_stats
+ local allow_multi_errors_ns1=0
+ local allow_multi_errors_ns2=0
+
+ if [[ "${csum_ns1}" = "+"* ]]; then
+ allow_multi_errors_ns1=1
+ csum_ns1=${csum_ns1:1}
+ fi
+ if [[ "${csum_ns2}" = "+"* ]]; then
+ allow_multi_errors_ns2=1
+ csum_ns2=${csum_ns2:1}
+ fi
if [ ! -z "$msg" ]; then
printf "%03u" "$TEST_COUNT"
@@ -839,8 +852,9 @@ chk_csum_nr()
printf " %-36s %s" "$msg" "sum"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns1 -a $allow_multi_errors_ns1 -eq 0 ] ||
+ [ "$count" -lt $csum_ns1 -a $allow_multi_errors_ns1 -eq 1 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns1"
ret=1
dump_stats=1
else
@@ -849,8 +863,9 @@ chk_csum_nr()
echo -n " - csum "
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtDataCsumErr | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != 0 ]; then
- echo "[fail] got $count data checksum error[s] expected 0"
+ if [ "$count" != $csum_ns2 -a $allow_multi_errors_ns2 -eq 0 ] ||
+ [ "$count" -lt $csum_ns2 -a $allow_multi_errors_ns2 -eq 1 ]; then
+ echo "[fail] got $count data checksum error[s] expected $csum_ns2"
ret=1
dump_stats=1
else
@@ -861,27 +876,27 @@ chk_csum_nr()
chk_fail_nr()
{
- local mp_fail_nr_tx=$1
- local mp_fail_nr_rx=$2
+ local fail_tx=$1
+ local fail_rx=$2
local count
local dump_stats
printf "%-${nr_blank}s %s" " " "ftx"
count=`ip netns exec $ns1 nstat -as | grep MPTcpExtMPFailTx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_fail_nr_tx" ]; then
- echo "[fail] got $count MP_FAIL[s] TX expected $mp_fail_nr_tx"
+ if [ "$count" != "$fail_tx" ]; then
+ echo "[fail] got $count MP_FAIL[s] TX expected $fail_tx"
ret=1
dump_stats=1
else
echo -n "[ ok ]"
fi
- echo -n " - frx "
+ echo -n " - failrx"
count=`ip netns exec $ns2 nstat -as | grep MPTcpExtMPFailRx | awk '{print $2}'`
[ -z "$count" ] && count=0
- if [ "$count" != "$mp_fail_nr_rx" ]; then
- echo "[fail] got $count MP_FAIL[s] RX expected $mp_fail_nr_rx"
+ if [ "$count" != "$fail_rx" ]; then
+ echo "[fail] got $count MP_FAIL[s] RX expected $fail_rx"
ret=1
dump_stats=1
else
@@ -1005,6 +1020,11 @@ chk_join_nr()
local syn_nr=$2
local syn_ack_nr=$3
local ack_nr=$4
+ local csum_ns1=${5:-0}
+ local csum_ns2=${6:-0}
+ local fail_nr=${7:-0}
+ local rst_nr=${8:-0}
+ local infi_nr=${9:-0}
local count
local dump_stats
local with_cookie
@@ -1051,10 +1071,10 @@ chk_join_nr()
fi
[ "${dump_stats}" = 1 ] && dump_stats
if [ $checksum -eq 1 ]; then
- chk_csum_nr
- chk_fail_nr 0 0
- chk_rst_nr 0 0
- chk_infi_nr 0 0
+ chk_csum_nr "" $csum_ns1 $csum_ns2
+ chk_fail_nr $fail_nr $fail_nr
+ chk_rst_nr $rst_nr $rst_nr
+ chk_infi_nr $infi_nr $infi_nr
fi
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 17/19] selftests: mptcp: add invert check in check_transfer
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (15 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 16/19] selftests: mptcp: add more arguments for chk_join_nr Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 18/19] selftests: mptcp: add the MP_FAIL testcases Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 19/19] selftests: mptcp: update output info of chk_rm_nr Geliang Tang
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch added the invert bytes check for the output data in
check_transfer().
Instead of the file mismatch error:
[ FAIL ] file received by server does not match (in, out):
-rw------- 1 root root 45643832 Jan 16 15:04 /tmp/tmp.9xpM6Paivv
Trailing bytes are:
MPTCP_TEST_FILE_END_MARKER
-rw------- 1 root root 45643832 Jan 16 15:04 /tmp/tmp.wnz1Yp4u7Z
Trailing bytes are:
MPTCP_TEST_FILE_END_MARKER
Print out the inverted bytes like this:
file received by server has inverted byte at 7454789
file received by server has inverted byte at 7454790
file received by server has inverted byte at 7454791
file received by server has inverted byte at 7454792
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 25 +++++++++++++------
1 file changed, 17 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 310988a8acb2..f33822b28058 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -15,6 +15,7 @@ timeout_test=$((timeout_poll * 2 + 1))
capture=0
checksum=0
ip_mptcp=0
+check_invert=0
do_all_tests=1
init=0
@@ -60,6 +61,8 @@ init_partial()
fi
done
+ check_invert=0
+
# ns1 ns2
# ns1eth1 ns2eth1
# ns1eth2 ns2eth2
@@ -217,15 +220,21 @@ check_transfer()
out=$2
what=$3
- cmp "$in" "$out" > /dev/null 2>&1
- if [ $? -ne 0 ] ;then
- echo "[ FAIL ] $what does not match (in, out):"
- print_file_err "$in"
- print_file_err "$out"
- ret=1
+ cmp -l "$in" "$out" | while read line; do
+ local arr=($line)
- return 1
- fi
+ let sum=0${arr[1]}+0${arr[2]}
+ if [ $check_invert -eq 0 ] || [ $sum -ne $((0xff)) ]; then
+ echo "[ FAIL ] $what does not match (in, out):"
+ print_file_err "$in"
+ print_file_err "$out"
+ ret=1
+
+ return 1
+ else
+ echo "$what has inverted byte at ${arr[0]}"
+ fi
+ done
return 0
}
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 18/19] selftests: mptcp: add the MP_FAIL testcases
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (16 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 17/19] selftests: mptcp: add invert check in check_transfer Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 19/19] selftests: mptcp: update output info of chk_rm_nr Geliang Tang
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Davide Caratti, Matthieu Baerts, Mat Martineau
Added the test cases for MP_FAIL, the multiple subflows test for the
MP_RST case and the single subflow one for the infinite mapping case.
The former used the test_linkfail value to make 1024KB test files,
and the latter 128KB.
Added a new function reset_with_fail(), in it use 'iptables' and 'tc
action pedit' rules to produce the bit flips to trigger the checksum
failures. Added a new function pedit_action_pkts() to get the numbers
of the packets edited by the tc pedit actions.
Added a new global variable validate_checksum to enable checksums for
the MP_FAIL tests without passing the '-C' argument.
Also added the needed kernel configures in the selftests config file.
Suggested-by: Davide Caratti <dcaratti@redhat.com>
Co-developed-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/config | 8 ++
.../testing/selftests/net/mptcp/mptcp_join.sh | 98 ++++++++++++++++++-
2 files changed, 104 insertions(+), 2 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/config b/tools/testing/selftests/net/mptcp/config
index d36b7da5082a..38021a0dd527 100644
--- a/tools/testing/selftests/net/mptcp/config
+++ b/tools/testing/selftests/net/mptcp/config
@@ -12,6 +12,9 @@ CONFIG_NF_TABLES=m
CONFIG_NFT_COMPAT=m
CONFIG_NETFILTER_XTABLES=m
CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
CONFIG_NF_TABLES_INET=y
CONFIG_NFT_TPROXY=m
CONFIG_NFT_SOCKET=m
@@ -19,3 +22,8 @@ CONFIG_IP_ADVANCED_ROUTER=y
CONFIG_IP_MULTIPLE_TABLES=y
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IPV6_MULTIPLE_TABLES=y
+CONFIG_NET_ACT_CSUM=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_SCH_INGRESS=m
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index f33822b28058..6fb883971d46 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -16,6 +16,7 @@ capture=0
checksum=0
ip_mptcp=0
check_invert=0
+validate_checksum=0
do_all_tests=1
init=0
@@ -62,6 +63,7 @@ init_partial()
done
check_invert=0
+ validate_checksum=$checksum
# ns1 ns2
# ns1eth1 ns2eth1
@@ -207,6 +209,58 @@ reset_with_allow_join_id0()
ip netns exec $ns2 sysctl -q net.mptcp.allow_join_initial_addr_port=$ns2_enable
}
+# Modify TCP payload without corrupting the TCP packet
+#
+# This rule inverts a 8-bit word at byte offset 148 for the 2nd TCP ACK packets
+# carrying enough data.
+# Once it is done, the TCP Checksum field is updated so the packet is still
+# considered as valid at the TCP level.
+# Because the MPTCP checksum, covering the TCP options and data, has not been
+# updated, the modification will be detected and an MP_FAIL will be emitted:
+# what we want to validate here without corrupting "random" MPTCP options.
+#
+# To avoid having tc producing this pr_info() message for each TCP ACK packets
+# not carrying enough data:
+#
+# tc action pedit offset 162 out of bounds
+#
+# Netfilter is used to mark packets with enough data.
+reset_with_fail()
+{
+ reset
+
+ ip netns exec $ns1 sysctl -q net.mptcp.checksum_enabled=1
+ ip netns exec $ns2 sysctl -q net.mptcp.checksum_enabled=1
+
+ check_invert=1
+ validate_checksum=1
+ local i="$1"
+ local ip="${2:-4}"
+ local tables
+
+ tables="iptables"
+ if [ $ip -eq 6 ]; then
+ tables="ip6tables"
+ fi
+
+ ip netns exec $ns2 $tables \
+ -t mangle \
+ -A OUTPUT \
+ -o ns2eth$i \
+ -p tcp \
+ -m length --length 150:9999 \
+ -m statistic --mode nth --packet 1 --every 99999 \
+ -j MARK --set-mark 42 || exit 1
+
+ tc -n $ns2 qdisc add dev ns2eth$i clsact || exit 1
+ tc -n $ns2 filter add dev ns2eth$i egress \
+ protocol ip prio 1000 \
+ handle 42 fw \
+ action pedit munge offset 148 u8 invert \
+ pipe csum tcp \
+ index 100 || exit 1
+}
+
print_file_err()
{
ls -l "$1" 1>&2
@@ -1079,7 +1133,7 @@ chk_join_nr()
echo "[ ok ]"
fi
[ "${dump_stats}" = 1 ] && dump_stats
- if [ $checksum -eq 1 ]; then
+ if [ $validate_checksum -eq 1 ]; then
chk_csum_nr "" $csum_ns1 $csum_ns2
chk_fail_nr $fail_nr $fail_nr
chk_rst_nr $rst_nr $rst_nr
@@ -2444,6 +2498,41 @@ fastclose_tests()
chk_rst_nr 1 1 invert
}
+pedit_action_pkts()
+{
+ tc -n $ns2 -j -s action show action pedit index 100 | \
+ sed 's/.*"packets":\([0-9]\+\),.*/\1/'
+}
+
+fail_tests()
+{
+ # multiple subflows
+ reset_with_fail 2
+ tc -n $ns2 qdisc add dev ns2eth1 root netem rate 20mbit delay 1
+ pm_nl_set_limits $ns1 0 1
+ pm_nl_set_limits $ns2 0 1
+ pm_nl_add_endpoint $ns2 10.0.2.2 dev ns2eth2 flags subflow
+ run_tests $ns1 $ns2 10.0.1.1 1024
+ chk_join_nr "MP_FAIL MP_RST: $(pedit_action_pkts) corrupted pkts" 1 1 1 \
+ +1 +0 \
+ 1 \
+ 1
+
+ # single subflow
+ reset_with_fail 1
+ run_tests $ns1 $ns2 10.0.1.1 128
+ # syn_nr syn_ack_nr ack_nr
+ # csum_ns1 csum_ns2
+ # fail_nr
+ # rst_nr
+ # infi_nr
+ chk_join_nr "Infinite map: $(pedit_action_pkts) corrupted pkts" 0 0 0 \
+ +1 +0 \
+ 1 \
+ 0 \
+ 1
+}
+
all_tests()
{
subflows_tests
@@ -2464,6 +2553,7 @@ all_tests()
userspace_tests
implicit_tests
fastclose_tests
+ fail_tests
}
# [$1: error message]
@@ -2493,6 +2583,7 @@ usage()
echo " -u userspace_tests"
echo " -I implicit_tests"
echo " -z fastclose_tests"
+ echo " -F fail_tests"
echo " -c capture pcap files"
echo " -C enable data checksum"
echo " -i use ip mptcp"
@@ -2524,7 +2615,7 @@ if [ $do_all_tests -eq 1 ]; then
exit $ret
fi
-while getopts 'fesltra64bpkdmuchzCSiI' opt; do
+while getopts 'fesltra64bpkdmuchzCSFiI' opt; do
case $opt in
f)
subflows_tests
@@ -2577,6 +2668,9 @@ while getopts 'fesltra64bpkdmuchzCSiI' opt; do
z)
fastclose_tests
;;
+ F)
+ fail_tests
+ ;;
c)
;;
C)
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH RESEND mptcp-next 19/19] selftests: mptcp: update output info of chk_rm_nr
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
` (17 preceding siblings ...)
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 18/19] selftests: mptcp: add the MP_FAIL testcases Geliang Tang
@ 2022-02-19 23:21 ` Geliang Tang
18 siblings, 0 replies; 20+ messages in thread
From: Geliang Tang @ 2022-02-19 23:21 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang, Mat Martineau
This patch updated the output info of chk_rm_nr. Renamed 'sf' to 'rmsf',
which means 'remove subflow'. Added the display of whether the inverted
namespaces has been used to check the mib counters.
The new output looks like this:
002 remove multiple subflows syn[ ok ] - synack[ ok ] - ack[ ok ]
rm [ ok ] - rmsf [ ok ]
003 remove single address syn[ ok ] - synack[ ok ] - ack[ ok ]
add[ ok ] - echo [ ok ]
rm [ ok ] - rmsf [ ok ] invert
Reviewed-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
tools/testing/selftests/net/mptcp/mptcp_join.sh | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index 6fb883971d46..3655911667e0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -1312,15 +1312,14 @@ chk_rm_nr()
local invert=${3:-""}
local count
local dump_stats
- local addr_ns
- local subflow_ns
+ local addr_ns=$ns1
+ local subflow_ns=$ns2
+ local extra_msg=""
- if [ -z $invert ]; then
- addr_ns=$ns1
- subflow_ns=$ns2
- elif [ $invert = "invert" ]; then
+ if [[ $invert = "invert" ]]; then
addr_ns=$ns2
subflow_ns=$ns1
+ extra_msg=" invert"
fi
printf "%-${nr_blank}s %s" " " "rm "
@@ -1334,7 +1333,7 @@ chk_rm_nr()
echo -n "[ ok ]"
fi
- echo -n " - sf "
+ echo -n " - rmsf "
count=`ip netns exec $subflow_ns nstat -as | grep MPTcpExtRmSubflow | awk '{print $2}'`
[ -z "$count" ] && count=0
if [ "$count" != "$rm_subflow_nr" ]; then
@@ -1342,10 +1341,12 @@ chk_rm_nr()
ret=1
dump_stats=1
else
- echo "[ ok ]"
+ echo -n "[ ok ]"
fi
[ "${dump_stats}" = 1 ] && dump_stats
+
+ echo "$extra_msg"
}
chk_prio_nr()
--
2.34.1
^ permalink raw reply related [flat|nested] 20+ messages in thread
end of thread, other threads:[~2022-02-19 23:22 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-19 23:17 [PATCH RESEND mptcp-next 00/19] fclose and mp_fail testcases Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 01/19] Revert "selftests: mptcp: adjust output alignment for more tests" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 02/19] Revert "selftests: mptcp: add infinite map mibs check" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 03/19] Revert "selftests: mptcp: add invert check in check_transfer" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 04/19] Revert "mptcp: add mib for infinite map sending" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 05/19] Squash to "mptcp: infinite mapping receiving" Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 06/19] selftests: mptcp: adjust output alignment for more tests Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 07/19] mptcp: add the mib for infinite map sending Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 08/19] selftests: mptcp: add the infinite map mibs check Geliang Tang
2022-02-19 23:17 ` [PATCH RESEND mptcp-next 09/19] mptcp: add the mibs for MP_FASTCLOSE Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 10/19] selftests: mptcp: add the MP_FASTCLOSE mibs check Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 11/19] mptcp: add the mibs for MP_RST Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 12/19] selftests: mptcp: add the MP_RST mibs check Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 13/19] selftests: mptcp: add extra_args in do_transfer Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 14/19] selftests: mptcp: reuse linkfail to make given size files Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 15/19] selftests: mptcp: add fastclose testcase Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 16/19] selftests: mptcp: add more arguments for chk_join_nr Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 17/19] selftests: mptcp: add invert check in check_transfer Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 18/19] selftests: mptcp: add the MP_FAIL testcases Geliang Tang
2022-02-19 23:21 ` [PATCH RESEND mptcp-next 19/19] selftests: mptcp: update output info of chk_rm_nr Geliang Tang
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.