* [PATCH mptcp-next v2 0/2] fixes for "map v4 address to v6"
@ 2024-02-06 5:43 Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 1/2] mptcp: map v4 address to v6 when destroying subflow Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr Geliang Tang
0 siblings, 2 replies; 5+ messages in thread
From: Geliang Tang @ 2024-02-06 5:43 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
v2:
- update selftests as Mat suggested.
Geliang Tang (2):
mptcp: map v4 address to v6 when destroying subflow
selftests: mptcp: rm subflow with v4/v4mapped addr
net/mptcp/pm_userspace.c | 10 +++++++
.../testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++--------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 6 ++++
3 files changed, 32 insertions(+), 12 deletions(-)
--
2.40.1
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH mptcp-next v2 1/2] mptcp: map v4 address to v6 when destroying subflow
2024-02-06 5:43 [PATCH mptcp-next v2 0/2] fixes for "map v4 address to v6" Geliang Tang
@ 2024-02-06 5:43 ` Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr Geliang Tang
1 sibling, 0 replies; 5+ messages in thread
From: Geliang Tang @ 2024-02-06 5:43 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
Address family of server side mismatches with that of client side, like
in "userspace pm add & remove address" test:
userspace_pm_add_addr $ns1 10.0.2.1 10
userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
That's because on the server side, the family is set to AF_INET6 and the
v4 address is mapped in a v6 one.
This patch fixes this issue. In mptcp_pm_nl_subflow_destroy_doit(), before
checking local address family with remote address family, map an IPv4
address to an IPv6 address if the pair is a v4-mapped address.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/387
Fixes: 702c2f646d42 ("mptcp: netlink: allow userspace-driven subflow establishment")
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
net/mptcp/pm_userspace.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/net/mptcp/pm_userspace.c b/net/mptcp/pm_userspace.c
index e582b3b2d174..b40a69649fe1 100644
--- a/net/mptcp/pm_userspace.c
+++ b/net/mptcp/pm_userspace.c
@@ -495,6 +495,16 @@ int mptcp_pm_nl_subflow_destroy_doit(struct sk_buff *skb, struct genl_info *info
goto destroy_err;
}
+#if IS_ENABLED(CONFIG_MPTCP_IPV6)
+ if (addr_l.family == AF_INET && ipv6_addr_v4mapped(&addr_r.addr6)) {
+ ipv6_addr_set_v4mapped(addr_l.addr.s_addr, &addr_l.addr6);
+ addr_l.family = AF_INET6;
+ }
+ if (addr_r.family == AF_INET && ipv6_addr_v4mapped(&addr_l.addr6)) {
+ ipv6_addr_set_v4mapped(addr_r.addr.s_addr, &addr_r.addr6);
+ addr_r.family = AF_INET6;
+ }
+#endif
if (addr_l.family != addr_r.family) {
GENL_SET_ERR_MSG(info, "address families do not match");
err = -EINVAL;
--
2.40.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr
2024-02-06 5:43 [PATCH mptcp-next v2 0/2] fixes for "map v4 address to v6" Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 1/2] mptcp: map v4 address to v6 when destroying subflow Geliang Tang
@ 2024-02-06 5:43 ` Geliang Tang
2024-02-06 6:43 ` selftests: mptcp: rm subflow with v4/v4mapped addr: Tests Results MPTCP CI
2024-02-06 7:30 ` MPTCP CI
1 sibling, 2 replies; 5+ messages in thread
From: Geliang Tang @ 2024-02-06 5:43 UTC (permalink / raw)
To: mptcp; +Cc: Geliang Tang
From: Geliang Tang <tanggeliang@kylinos.cn>
Now both a v4 address and a v4-mapped address are supported when
destroying a userspace pm subflow, this patch adds a second subflow
to "userspace pm add & remove address" test, and two subflows could
be removed two different ways, one with the v4mapped and one with v4.
Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/387
Fixes: 48d73f609dcc ("selftests: mptcp: update userspace pm addr tests")
Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
.../testing/selftests/net/mptcp/mptcp_join.sh | 28 +++++++++++--------
.../testing/selftests/net/mptcp/mptcp_lib.sh | 6 ++++
2 files changed, 22 insertions(+), 12 deletions(-)
diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index c07386e21e0a..0aa6c5b3aec0 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -3333,16 +3333,17 @@ userspace_pm_rm_sf()
{
local evts=$evts_ns1
local t=${3:-1}
- local ip=4
+ local ip
local tk da dp sp
local cnt
[ "$1" == "$ns2" ] && evts=$evts_ns2
- if mptcp_lib_is_v6 $2; then ip=6; fi
+ [ -n "$(mptcp_lib_evts_get_info "saddr4" "$evts" $t)" ] && ip=4
+ [ -n "$(mptcp_lib_evts_get_info "saddr6" "$evts" $t)" ] && ip=6
tk=$(mptcp_lib_evts_get_info token "$evts")
- da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t)
- dp=$(mptcp_lib_evts_get_info dport "$evts" $t)
- sp=$(mptcp_lib_evts_get_info sport "$evts" $t)
+ da=$(mptcp_lib_evts_get_info_with_addr "daddr$ip" "$evts" $t $2)
+ dp=$(mptcp_lib_evts_get_info_with_addr dport "$evts" $t $2)
+ sp=$(mptcp_lib_evts_get_info_with_addr sport "$evts" $t $2)
cnt=$(rm_sf_count ${1})
ip netns exec $1 ./pm_nl_ctl dsf lip $2 lport $sp \
@@ -3429,20 +3430,23 @@ userspace_tests()
if reset_with_events "userspace pm add & remove address" &&
continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
set_userspace_pm $ns1
- pm_nl_set_limits $ns2 1 1
+ pm_nl_set_limits $ns2 2 2
speed=5 \
run_tests $ns1 $ns2 10.0.1.1 &
local tests_pid=$!
wait_mpj $ns1
userspace_pm_add_addr $ns1 10.0.2.1 10
- chk_join_nr 1 1 1
- chk_add_nr 1 1
- chk_mptcp_info subflows 1 subflows 1
- chk_subflows_total 2 2
- chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
+ userspace_pm_add_addr $ns1 10.0.3.1 20
+ chk_join_nr 2 2 2
+ chk_add_nr 2 2
+ 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_rm_addr $ns1 10
userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
- chk_rm_nr 1 1 invert
+ userspace_pm_rm_addr $ns1 20
+ userspace_pm_rm_sf $ns1 10.0.3.1 $SUB_ESTABLISHED
+ chk_rm_nr 2 2 invert
chk_mptcp_info subflows 0 subflows 0
chk_subflows_total 1 1
kill_events_pids
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index 3a2abae5993e..29c92e127905 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -218,6 +218,12 @@ mptcp_lib_evts_get_info() {
mptcp_lib_get_info_value "${1}" "^type:${3:-1}," < "${2}"
}
+# $1: info name ; $2: evts_ns ; $3: event type; $4: addr
+mptcp_lib_evts_get_info_with_addr() {
+ cat "${2}" | grep "${4}" |
+ mptcp_lib_get_info_value "${1}" "^type:${3:-1},"
+}
+
# $1: PID
mptcp_lib_kill_wait() {
[ "${1}" -eq 0 ] && return 0
--
2.40.1
^ permalink raw reply related [flat|nested] 5+ messages in thread* Re: selftests: mptcp: rm subflow with v4/v4mapped addr: Tests Results
2024-02-06 5:43 ` [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr Geliang Tang
@ 2024-02-06 6:43 ` MPTCP CI
2024-02-06 7:30 ` MPTCP CI
1 sibling, 0 replies; 5+ messages in thread
From: MPTCP CI @ 2024-02-06 6:43 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI (GitHub Action) did some validations and here is its report:
- KVM Validation: normal:
- Success! ✅:
- Task: https://github.com/multipath-tcp/mptcp_net-next/actions/runs/7795362577
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/c83ded2d90fc
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-normal
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
^ permalink raw reply [flat|nested] 5+ messages in thread* Re: selftests: mptcp: rm subflow with v4/v4mapped addr: Tests Results
2024-02-06 5:43 ` [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr Geliang Tang
2024-02-06 6:43 ` selftests: mptcp: rm subflow with v4/v4mapped addr: Tests Results MPTCP CI
@ 2024-02-06 7:30 ` MPTCP CI
1 sibling, 0 replies; 5+ messages in thread
From: MPTCP CI @ 2024-02-06 7:30 UTC (permalink / raw)
To: Geliang Tang; +Cc: mptcp
Hi Geliang,
Thank you for your modifications, that's great!
Our CI (Cirrus) did some validations with a debug kernel and here is its report:
- KVM Validation: debug (except selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/6515054728708096
- Summary: https://api.cirrus-ci.com/v1/artifact/task/6515054728708096/summary/summary.txt
- KVM Validation: debug (only selftest_mptcp_join):
- Success! ✅:
- Task: https://cirrus-ci.com/task/5054167002120192
- Summary: https://api.cirrus-ci.com/v1/artifact/task/5054167002120192/summary/summary.txt
Initiator: Patchew Applier
Commits: https://github.com/multipath-tcp/mptcp_net-next/commits/c83ded2d90fc
If there are some issues, you can reproduce them using the same environment as
the one used by the CI thanks to a docker image, e.g.:
$ cd [kernel source code]
$ docker run -v "${PWD}:${PWD}:rw" -w "${PWD}" --privileged --rm -it \
--pull always mptcp/mptcp-upstream-virtme-docker:latest \
auto-debug
For more details:
https://github.com/multipath-tcp/mptcp-upstream-virtme-docker
Please note that despite all the efforts that have been already done to have a
stable tests suite when executed on a public CI like here, it is possible some
reported issues are not due to your modifications. Still, do not hesitate to
help us improve that ;-)
Cheers,
MPTCP GH Action bot
Bot operated by Matthieu Baerts (NGI0 Core)
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-02-06 7:30 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-02-06 5:43 [PATCH mptcp-next v2 0/2] fixes for "map v4 address to v6" Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 1/2] mptcp: map v4 address to v6 when destroying subflow Geliang Tang
2024-02-06 5:43 ` [PATCH mptcp-next v2 2/2] selftests: mptcp: rm subflow with v4/v4mapped addr Geliang Tang
2024-02-06 6:43 ` selftests: mptcp: rm subflow with v4/v4mapped addr: Tests Results MPTCP CI
2024-02-06 7:30 ` MPTCP CI
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox