From: Gang Yan <yangang@kylinos.cn>
Hi, Matt
This series is for make the selftest useful in the kernel which IPV6 is
compiled as a module.
The MPTCP selftests cover a wide functional surface: connection
establishment, subflow join/remove, ADD_ADDR / RM_ADDR signalling,
path-manager behaviour, nft-based tproxy, transfer of bulk data with
sane throughput and CPU usage, and so on. Together they are the
principal end-to-end suite product-validation teams run to certify
that MPTCP works on a candidate kernel. Kconfig, however, says:
config MPTCP_IPV6
depends on IPV6=y
so any distro or product kernel that ships with CONFIG_IPV6=m ends up
with CONFIG_MPTCP_IPV6=n. The corresponding MPTCP over IPv4 path is
built and works correctly; only the v6 subtests are unavailable.
So far, the selftests do not know about this configuration. They
unconditionally configure dead:beef:* endpoints, open AF_INET6
listeners, drive v6 ADD_ADDR / RM_ADDR / subflow commands and load
nft "table inet" chains, and they treat every one of those failures
as a test failure. On a CONFIG_IPV6=m kernel, every subtest
contaminated by a v6 step — including the v4-only ones in
mptcp_join.sh starting with "001 no JOIN" — comes back red. The
v4 functionality cannot be signed off even though it works.
Patch 1 is a DO-NOT-MERGE review aid (it flips the kselftest config
fragment to CONFIG_IPV6=m and adds CONFIG_NF_TABLES_IPV4=y so
docker-virtme can run the scripts in the target environment).
The remaining 8 patches are the real series.
Thanks
Gang
Gang Yan (9):
DO-NOT-MERGE: mptcp: test IPV6=m in docker-virtme
selftests: mptcp: mptcp_lib add runtime IPv6 availability detection
helper
selftests: mptcp: mptcp_connect.sh degrades to v4-only when MPTCP IPv6
is missing
selftests: mptcp: mptcp_connect.sh don't fail because of nft rules in
IPV6-less kernel
selftests: mptcp: mptcp_sockopt.sh skips v6 paths when MPTCP IPv6 is
missing
selftests: mptcp: simult_flows.sh skips v6 setup when MPTCP IPv6 is
missing
selftests: mptcp: mptcp_join.sh: pick v4 bind default when MPTCP IPv6
is missing
selftests: mptcp: mptcp_join.sh skips v6 subtests when MPTCP IPv6 is
missing
selftests: mptcp: userspace_pm.sh skips v6 paths when MPTCP IPv6 is
missing
tools/testing/selftests/net/mptcp/config | 5 +-
.../selftests/net/mptcp/mptcp_connect.sh | 48 +++-
.../testing/selftests/net/mptcp/mptcp_join.sh | 154 +++++++++---
.../testing/selftests/net/mptcp/mptcp_lib.sh | 33 +++
.../selftests/net/mptcp/mptcp_sockopt.sh | 81 ++++--
.../selftests/net/mptcp/simult_flows.sh | 30 ++-
.../selftests/net/mptcp/userspace_pm.sh | 237 ++++++++++--------
7 files changed, 397 insertions(+), 191 deletions(-)
--
2.43.0