MPTCP Linux Development
 help / color / mirror / Atom feed
* [PATCH mptcp-next 0/3] mptcp: add support for mixed v4/v6
@ 2022-12-23 12:51 Paolo Abeni
  2022-12-23 12:51 ` [PATCH mptcp-next 1/3] mptcp: explicitly specify sock family at subflow creation time Paolo Abeni
                   ` (3 more replies)
  0 siblings, 4 replies; 17+ messages in thread
From: Paolo Abeni @ 2022-12-23 12:51 UTC (permalink / raw)
  To: mptcp

The core MPTCP implementation is just a few bits of to support such
feature, we just need to allow specifying the subflow family explicitly
(patch 1/3) and remove the artificial constraint currently enforcing
no mixed subflow in place (patch 2/3)

Some self-tests added on patch 3/3

Merry Xmas ;)

Paolo Abeni (3):
  mptcp: explicitly specify sock family at subflow creation time
  mptcp: let the in kernel PM use mixed ipv4 and ipv6 addresses
  selftests: mptcp: add test-cases for mixed v4/v6 subflows

 net/mptcp/pm_netlink.c                        | 57 ++++++++++---------
 net/mptcp/protocol.c                          |  2 +-
 net/mptcp/protocol.h                          |  3 +-
 net/mptcp/subflow.c                           |  9 +--
 .../testing/selftests/net/mptcp/mptcp_join.sh | 51 ++++++++++++++---
 5 files changed, 80 insertions(+), 42 deletions(-)

-- 
2.38.1


^ permalink raw reply	[flat|nested] 17+ messages in thread
* [PATCH v2 mptcp-next 3/3] selftests: mptcp: add test-cases for mixed v4/v6 subflows
@ 2022-12-23 19:00 Paolo Abeni
  2022-12-23 19:37 ` selftests: mptcp: add test-cases for mixed v4/v6 subflows: Tests Results MPTCP CI
  0 siblings, 1 reply; 17+ messages in thread
From: Paolo Abeni @ 2022-12-23 19:00 UTC (permalink / raw)
  To: mptcp

Note that we can't guess anymore the listener family based on the
client target address; use always IPv6.

Signed-off-by: Paolo Abeni <pabeni@redhat.com>
---
 .../testing/selftests/net/mptcp/mptcp_join.sh | 53 +++++++++++++++----
 1 file changed, 44 insertions(+), 9 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index d11d3d566608..387abdcec011 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -774,24 +774,17 @@ do_transfer()
 		addr_nr_ns2=${addr_nr_ns2:9}
 	fi
 
-	local local_addr
-	if is_v6 "${connect_addr}"; then
-		local_addr="::"
-	else
-		local_addr="0.0.0.0"
-	fi
-
 	extra_srv_args="$extra_args $extra_srv_args"
 	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} \
-					$extra_srv_args ${local_addr} < "$sinfail" > "$sout" &
+					$extra_srv_args "::" < "$sinfail" > "$sout" &
 	else
 		timeout ${timeout_test} \
 			ip netns exec ${listener_ns} \
 				./mptcp_connect -t ${timeout_poll} -l -p $port -s ${srv_proto} \
-					$extra_srv_args ${local_addr} < "$sin" > "$sout" &
+					$extra_srv_args "::" < "$sin" > "$sout" &
 	fi
 	local spid=$!
 
@@ -2448,6 +2441,47 @@ v4mapped_tests()
 	fi
 }
 
+mixed_tests()
+{
+	if reset "IPv4 sockets do not use IPv6 addresses"; then
+		pm_nl_set_limits $ns1 0 1
+		pm_nl_set_limits $ns2 1 1
+		pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
+		run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
+		chk_join_nr 0 0 0
+	fi
+
+	# Need an IPv6 mptcp socket to allow subflows of both families
+	if reset "simult IPv4 and IPv6 subflows"; then
+		pm_nl_set_limits $ns1 0 1
+		pm_nl_set_limits $ns2 1 1
+		pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
+		run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow
+		chk_join_nr 1 1 1
+	fi
+
+	# cross families subflows will not be created even in fullmesh mode
+	if reset "simult IPv4 and IPv6 subflows, fullmesh 1x1"; then
+		pm_nl_set_limits $ns1 0 4
+		pm_nl_set_limits $ns2 1 4
+		pm_nl_add_endpoint $ns2 dead:beef:2::2 flags subflow,fullmesh
+		pm_nl_add_endpoint $ns1 10.0.1.1 flags signal
+		run_tests $ns1 $ns2 dead:beef:2::1 0 0 0 slow
+		chk_join_nr 1 1 1
+	fi
+
+	# fullmesh still tries to create all the possibly subflows with
+	# matching family
+	if reset "simult IPv4 and IPv6 subflows, fullmesh 2x2"; then
+		pm_nl_set_limits $ns1 0 4
+		pm_nl_set_limits $ns2 2 4
+		pm_nl_add_endpoint $ns1 10.0.2.1 flags signal
+		pm_nl_add_endpoint $ns1 dead:beef:2::1 flags signal
+		run_tests $ns1 $ns2 dead:beef:1::1 0 0 fullmesh_1 slow
+		chk_join_nr 4 4 4
+	fi
+}
+
 backup_tests()
 {
 	# single subflow, backup
@@ -3120,6 +3154,7 @@ all_tests_sorted=(
 	a@add_tests
 	6@ipv6_tests
 	4@v4mapped_tests
+	M@mixed_tests
 	b@backup_tests
 	p@add_addr_ports_tests
 	k@syncookies_tests
-- 
2.38.1


^ permalink raw reply related	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2022-12-26 13:16 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-12-23 12:51 [PATCH mptcp-next 0/3] mptcp: add support for mixed v4/v6 Paolo Abeni
2022-12-23 12:51 ` [PATCH mptcp-next 1/3] mptcp: explicitly specify sock family at subflow creation time Paolo Abeni
2022-12-23 14:35   ` Matthieu Baerts
2022-12-23 16:01     ` Paolo Abeni
2022-12-23 16:08       ` Matthieu Baerts
2022-12-23 18:32         ` Paolo Abeni
2022-12-23 12:51 ` [PATCH mptcp-next 2/3] mptcp: let the in kernel PM use mixed ipv4 and ipv6 addresses Paolo Abeni
2022-12-23 14:35   ` Matthieu Baerts
2022-12-23 18:31     ` Paolo Abeni
2022-12-23 12:51 ` [PATCH mptcp-next 3/3] selftests: mptcp: add test-cases for mixed v4/v6 subflows Paolo Abeni
2022-12-23 13:58   ` selftests: mptcp: add test-cases for mixed v4/v6 subflows: Tests Results MPTCP CI
2022-12-23 14:35   ` [PATCH mptcp-next 3/3] selftests: mptcp: add test-cases for mixed v4/v6 subflows Matthieu Baerts
2022-12-23 18:29     ` Paolo Abeni
2022-12-26 13:09       ` Matthieu Baerts
2022-12-26 13:16         ` Matthieu Baerts
2022-12-23 14:35 ` [PATCH mptcp-next 0/3] mptcp: add support for mixed v4/v6 Matthieu Baerts
  -- strict thread matches above, loose matches on Subject: below --
2022-12-23 19:00 [PATCH v2 mptcp-next 3/3] selftests: mptcp: add test-cases for mixed v4/v6 subflows Paolo Abeni
2022-12-23 19:37 ` selftests: mptcp: add test-cases for mixed v4/v6 subflows: Tests Results MPTCP CI

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox