All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
@ 2022-01-04 10:11 Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 1/4] selftests: mptcp: use 'ip mptcp' in mptcp_join.sh Geliang Tang
                   ` (5 more replies)
  0 siblings, 6 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-04 10:11 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patchset replaced all the pm_nl_ctl commands in selftests with the
'ip mptcp' commands.

Geliang Tang (4):
  selftests: mptcp: use 'ip mptcp' in mptcp_join.sh
  selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh
  selftests: mptcp: use 'ip mptcp' in pm_netlink.sh
  selftests: mptcp: use 'ip mptcp' in simult_flows.sh

 .../testing/selftests/net/mptcp/mptcp_join.sh | 686 +++++++++---------
 .../selftests/net/mptcp/mptcp_sockopt.sh      |  12 +-
 .../testing/selftests/net/mptcp/pm_netlink.sh | 164 ++---
 .../selftests/net/mptcp/simult_flows.sh       |   6 +-
 4 files changed, 432 insertions(+), 436 deletions(-)

-- 
2.31.1


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

* [PATCH mptcp-next 1/4] selftests: mptcp: use 'ip mptcp' in mptcp_join.sh
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
@ 2022-01-04 10:11 ` Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 2/4] selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh Geliang Tang
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-04 10:11 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch replaced all the pm_nl_ctl commands in the mptcp_join.sh script
with the 'ip mptcp' commands.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 .../testing/selftests/net/mptcp/mptcp_join.sh | 686 +++++++++---------
 1 file changed, 343 insertions(+), 343 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index e48ce23d2386..1a2a6d878d71 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -378,7 +378,7 @@ do_transfer()
 			else
 				addr="10.0.$counter.1"
 			fi
-			ip netns exec $ns1 ./pm_nl_ctl add $addr flags signal
+			ip -n $ns1 mptcp endpoint add $addr signal
 			let counter+=1
 			let add_nr_ns1-=1
 		done
@@ -386,29 +386,29 @@ do_transfer()
 		let rm_nr_ns1=-addr_nr_ns1
 		if [ $rm_nr_ns1 -lt 8 ]; then
 			counter=1
-			pos=1
-			dump=(`ip netns exec ${listener_ns} ./pm_nl_ctl dump`)
+			pos=0
+			dump=(`ip -n ${listener_ns} mptcp endpoint show | awk -F "id " '{ print $2 }'`)
 			if [ ${#dump[@]} -gt 0 ]; then
 				while [ $counter -le $rm_nr_ns1 ]
 				do
 					id=${dump[$pos]}
 					rm_addr=$(rm_addr_count ${connector_ns})
-					ip netns exec ${listener_ns} ./pm_nl_ctl del $id
+					ip -n ${listener_ns} mptcp endpoint delete id $id
 					wait_rm_addr ${connector_ns} ${rm_addr}
 					let counter+=1
-					let pos+=5
+					let pos+=2
 				done
 			fi
 		elif [ $rm_nr_ns1 -eq 8 ]; then
-			ip netns exec ${listener_ns} ./pm_nl_ctl flush
+			ip -n ${listener_ns} mptcp endpoint flush
 		elif [ $rm_nr_ns1 -eq 9 ]; then
-			ip netns exec ${listener_ns} ./pm_nl_ctl del 0 ${connect_addr}
+			ip -n ${listener_ns} mptcp endpoint delete id 0 ${connect_addr}
 		fi
 	fi
 
 	flags="subflow"
 	if [[ "${addr_nr_ns2}" = "fullmesh_"* ]]; then
-		flags="${flags},fullmesh"
+		flags="${flags} fullmesh"
 		addr_nr_ns2=${addr_nr_ns2:9}
 	fi
 
@@ -426,7 +426,7 @@ do_transfer()
 			else
 				addr="10.0.$counter.2"
 			fi
-			ip netns exec $ns2 ./pm_nl_ctl add $addr flags $flags
+			ip -n $ns2 mptcp endpoint add $addr $flags
 			let counter+=1
 			let add_nr_ns2-=1
 		done
@@ -434,22 +434,22 @@ do_transfer()
 		let rm_nr_ns2=-addr_nr_ns2
 		if [ $rm_nr_ns2 -lt 8 ]; then
 			counter=1
-			pos=1
-			dump=(`ip netns exec ${connector_ns} ./pm_nl_ctl dump`)
+			pos=0
+			dump=(`ip -n ${connector_ns} mptcp endpoint show | awk -F"id " '{ print $2 }'`)
 			if [ ${#dump[@]} -gt 0 ]; then
 				while [ $counter -le $rm_nr_ns2 ]
 				do
 					# rm_addr are serialized, allow the previous one to complete
 					id=${dump[$pos]}
 					rm_addr=$(rm_addr_count ${listener_ns})
-					ip netns exec ${connector_ns} ./pm_nl_ctl del $id
+					ip -n ${connector_ns} mptcp endpoint delete id $id
 					wait_rm_addr ${listener_ns} ${rm_addr}
 					let counter+=1
-					let pos+=5
+					let pos+=2
 				done
 			fi
 		elif [ $rm_nr_ns2 -eq 8 ]; then
-			ip netns exec ${connector_ns} ./pm_nl_ctl flush
+			ip -n ${connector_ns} mptcp endpoint flush
 		elif [ $rm_nr_ns2 -eq 9 ]; then
 			local addr
 			if is_v6 "${connect_addr}"; then
@@ -457,17 +457,17 @@ do_transfer()
 			else
 				addr="10.0.1.2"
 			fi
-			ip netns exec ${connector_ns} ./pm_nl_ctl del 0 $addr
+			ip -n ${connector_ns} mptcp endpoint delete id 0 $addr
 		fi
 	fi
 
 	if [ ! -z $bkup ]; then
 		sleep 1
 		for netns in "$ns1" "$ns2"; do
-			dump=(`ip netns exec $netns ./pm_nl_ctl dump`)
+			dump=(`ip -n $netns mptcp endpoint show`)
 			if [ ${#dump[@]} -gt 0 ]; then
-				addr=${dump[${#dump[@]} - 1]}
-				backup="ip netns exec $netns ./pm_nl_ctl set $addr flags $bkup"
+				addr=${dump[0]}
+				backup="ip -n $netns mptcp endpoint set $addr $bkup"
 				$backup
 			fi
 		done
@@ -1011,51 +1011,51 @@ subflows_tests()
 
 	# subflow limited by client
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 0
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 0
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 0
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 0
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow, limited by client" 0 0 0
 
 	# subflow limited by server
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 0
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 0
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow, limited by server" 1 1 0
 
 	# subflow
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow" 1 1 1
 
 	# multiple subflows
 	reset
-	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.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple subflows" 2 2 2
 
 	# multiple subflows limited by server
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple subflows, limited by server" 2 2 1
 
 	# single subflow, dev
 	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 dev ns2eth3
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow dev ns2eth3
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow, dev" 1 1 1
 }
@@ -1065,28 +1065,28 @@ subflows_error_tests()
 	# If a single subflow is configured, and matches the MPC src
 	# address, no additional subflow should be created
 	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.1.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.1.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
 	chk_join_nr "no MPC reuse with single endpoint" 0 0 0
 
 	# multiple subflows, with subflow creation error
 	reset
-	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.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
 	chk_join_nr "multi subflows, with failing subflow" 1 1 1
 
 	# multiple subflows, with subflow timeout on MPJ
 	reset
-	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.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j DROP
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
 	chk_join_nr "multi subflows, with subflow timeout" 1 1 1
@@ -1095,9 +1095,9 @@ subflows_error_tests()
 	# closed subflow (due to reset) is not reused if additional
 	# subflows are added later
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	ip netns exec $ns1 iptables -A INPUT -s 10.0.3.2 -p tcp -j REJECT
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow &
 
@@ -1107,7 +1107,7 @@ subflows_error_tests()
 
 	# mpj subflow will be in TW after the reset
 	wait_for_tw $ns2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	wait
 
 	# additional subflow could be created only if the PM select
@@ -1119,16 +1119,16 @@ signal_address_tests()
 {
 	# add_address, unused
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "unused signal address" 0 0 0
 	chk_add_nr 1 1
 
 	# accept and use add_addr
 	reset
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address" 1 1 1
 	chk_add_nr 1 1
@@ -1138,59 +1138,59 @@ signal_address_tests()
 	# belong to different subnets or one of the listed local address could be
 	# used for 'add_addr' subflow
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflow and signal" 2 2 2
 	chk_add_nr 1 1
 
 	# accept and use add_addr with additional subflows
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple subflows and signal" 3 3 3
 	chk_add_nr 1 1
 
 	# signal addresses
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.4.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.4.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal addresses" 3 3 3
 	chk_add_nr 3 3
 
 	# signal invalid addresses
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.12.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.14.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.12.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.14.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal invalid addresses" 1 1 1
 	chk_add_nr 3 3
 
 	# signal addresses race test
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 4 4
-	ip netns exec $ns2 ./pm_nl_ctl limits 4 4
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.4.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.1.2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 4 subflows 4
+	ip -n $ns2 mptcp limits set add_addr_accepted 4 subflows 4
+	ip -n $ns1 mptcp endpoint add 10.0.1.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.4.1 signal
+	ip -n $ns2 mptcp endpoint add 10.0.1.2 signal
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 signal
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 signal
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 signal
 	run_tests $ns1 $ns2 10.0.1.1
 
 	# the server will not signal the address terminating
@@ -1210,11 +1210,11 @@ link_failure_tests()
 	# active backup and link switch-over.
 	# Let's set some arbitrary (low) virtual link limits.
 	init_shapers
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 3
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 dev ns2eth4 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 dev ns1eth2 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 dev ns2eth3 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 dev ns2eth4 subflow
 	run_tests $ns1 $ns2 10.0.1.1 1
 	chk_join_nr "multiple flows, signal, link failure" 3 3 3
 	chk_add_nr 1 1
@@ -1224,11 +1224,11 @@ link_failure_tests()
 	# for bidirectional transfer
 	reset
 	init_shapers
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 3
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.4.2 dev ns2eth4 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 dev ns1eth2 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 dev ns2eth3 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 dev ns2eth4 subflow
 	run_tests $ns1 $ns2 10.0.1.1 2
 	chk_join_nr "multi flows, signal, bidi, link fail" 3 3 3
 	chk_add_nr 1 1
@@ -1238,11 +1238,11 @@ link_failure_tests()
 	# will never be used
 	reset
 	init_shapers
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 dev ns1eth2 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
 	export FAILING_LINKS="1"
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow,backup
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 dev ns2eth3 subflow backup
 	run_tests $ns1 $ns2 10.0.1.1 1
 	chk_join_nr "backup subflow unused, link failure" 2 2 2
 	chk_add_nr 1 1
@@ -1252,10 +1252,10 @@ link_failure_tests()
 	# the traffic
 	reset
 	init_shapers
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow,backup
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 dev ns1eth2 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 dev ns2eth3 subflow backup
 	export FAILING_LINKS="1 2"
 	run_tests $ns1 $ns2 10.0.1.1 1
 	chk_join_nr "backup flow used, multi links fail" 2 2 2
@@ -1267,10 +1267,10 @@ link_failure_tests()
 	# for bidirectional transfer
 	reset
 	init_shapers
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 3
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 dev ns2eth3 flags subflow,backup
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 dev ns1eth2 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 dev ns2eth3 subflow backup
 	run_tests $ns1 $ns2 10.0.1.1 2
 	chk_join_nr "backup flow used, bidi, link failure" 2 2 2
 	chk_add_nr 1 1
@@ -1282,38 +1282,38 @@ add_addr_timeout_tests()
 {
 	# 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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflow 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow
 	chk_join_nr "signal address, ADD_ADDR timeout" 1 1 1
 	chk_add_nr 4 0
 
 	# add_addr timeout IPv6
 	reset_with_add_addr_timeout 6
-	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 dead:beef:2::1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add dead:beef:2::1 signal
 	run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
 	chk_join_nr "signal address, ADD_ADDR6 timeout" 1 1 1
 	chk_add_nr 4 0
 
 	# signal addresses timeout
 	reset_with_add_addr_timeout
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
 	chk_join_nr "signal addresses, ADD_ADDR timeout" 2 2 2
 	chk_add_nr 8 0
 
 	# signal invalid addresses timeout
 	reset_with_add_addr_timeout
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.12.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.12.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 least
 	chk_join_nr "invalid address, ADD_ADDR timeout" 1 1 1
 	chk_add_nr 8 0
@@ -1323,28 +1323,28 @@ remove_tests()
 {
 	# 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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow
 	chk_join_nr "remove single subflow" 1 1 1
 	chk_rm_nr 1 1
 
 	# multiple subflows, remove
 	reset
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 -2 slow
 	chk_join_nr "remove multiple subflows" 2 2 2
 	chk_rm_nr 2 2
 
 	# single address, remove
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow
 	chk_join_nr "remove single address" 1 1 1
 	chk_add_nr 1 1
@@ -1352,10 +1352,10 @@ remove_tests()
 
 	# subflow and signal, remove
 	reset
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow
 	chk_join_nr "remove subflow and signal" 2 2 2
 	chk_add_nr 1 1
@@ -1363,11 +1363,11 @@ remove_tests()
 
 	# subflows and signal, remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -1 -2 slow
 	chk_join_nr "remove subflows and signal" 3 3 3
 	chk_add_nr 1 1
@@ -1375,11 +1375,11 @@ remove_tests()
 
 	# addresses remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal id 250
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.4.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal id 250
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.4.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow
 	chk_join_nr "remove addresses" 3 3 3
 	chk_add_nr 3 3
@@ -1387,11 +1387,11 @@ remove_tests()
 
 	# invalid addresses remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.12.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.14.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.12.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.14.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1 0 -3 0 slow
 	chk_join_nr "remove invalid addresses" 1 1 1
 	chk_add_nr 3 3
@@ -1399,11 +1399,11 @@ remove_tests()
 
 	# subflows and signal, flush
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
 	chk_join_nr "flush subflows and signal" 3 3 3
 	chk_add_nr 1 1
@@ -1411,22 +1411,22 @@ remove_tests()
 
 	# subflows flush
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow id 150
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow id 150
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
 	chk_join_nr "flush subflows" 3 3 3
 	chk_rm_nr 3 3
 
 	# addresses flush
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal id 250
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.4.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal id 250
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.4.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1 0 -8 -8 slow
 	chk_join_nr "flush addresses" 3 3 3
 	chk_add_nr 3 3
@@ -1434,11 +1434,11 @@ remove_tests()
 
 	# invalid addresses flush
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 3 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.12.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.14.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 3 3
+	ip -n $ns1 mptcp limits set add_addr_accepted 3 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.12.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal
+	ip -n $ns1 mptcp endpoint add 10.0.14.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 3 subflows 3
 	run_tests $ns1 $ns2 10.0.1.1 0 -8 0 slow
 	chk_join_nr "flush invalid addresses" 1 1 1
 	chk_add_nr 3 3
@@ -1446,18 +1446,18 @@ remove_tests()
 
 	# remove id 0 subflow
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 -9 slow
 	chk_join_nr "remove id 0 subflow" 1 1 1
 	chk_rm_nr 1 1
 
 	# remove id 0 address
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 -9 0 slow
 	chk_join_nr "remove id 0 address" 1 1 1
 	chk_add_nr 1 1
@@ -1468,37 +1468,37 @@ add_tests()
 {
 	# add single subflow
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 0 1 slow
 	chk_join_nr "add single subflow" 1 1 1
 
 	# add signal address
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow
 	chk_join_nr "add signal address" 1 1 1
 	chk_add_nr 1 1
 
 	# add multiple subflows
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
 	run_tests $ns1 $ns2 10.0.1.1 0 0 2 slow
 	chk_join_nr "add multiple subflows" 2 2 2
 
 	# add multiple subflows IPv6
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
 	run_tests $ns1 $ns2 dead:beef:1::1 0 0 2 slow
 	chk_join_nr "add multiple subflows IPv6" 2 2 2
 
 	# add multiple addresses IPv6
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
 	run_tests $ns1 $ns2 dead:beef:1::1 0 2 0 slow
 	chk_join_nr "add multiple addresses IPv6" 2 2 2
 	chk_add_nr 2 2
@@ -1508,33 +1508,33 @@ ipv6_tests()
 {
 	# subflow IPv6
 	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 dead:beef:3::2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add dead:beef:3::2 subflow
 	run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
 	chk_join_nr "single subflow IPv6" 1 1 1
 
 	# add_address, unused IPv6
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
+	ip -n $ns1 mptcp endpoint add dead:beef:2::1 signal
 	run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
 	chk_join_nr "unused signal address IPv6" 0 0 0
 	chk_add_nr 1 1
 
 	# signal address IPv6
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add dead:beef:2::1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 dead:beef:1::1 0 0 0 slow
 	chk_join_nr "single address IPv6" 1 1 1
 	chk_add_nr 1 1
 
 	# single address IPv6, remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add dead:beef:2::1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 dead:beef:1::1 0 -1 0 slow
 	chk_join_nr "remove single address IPv6" 1 1 1
 	chk_add_nr 1 1
@@ -1542,10 +1542,10 @@ ipv6_tests()
 
 	# subflow and signal IPv6, remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add dead:beef:2::1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add dead:beef:3::2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add dead:beef:2::1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add dead:beef:3::2 subflow
 	run_tests $ns1 $ns2 dead:beef:1::1 0 -1 -1 slow
 	chk_join_nr "remove subflow and signal IPv6" 2 2 2
 	chk_add_nr 1 1
@@ -1556,76 +1556,76 @@ v4mapped_tests()
 {
 	# subflow IPv4-mapped to IPv4-mapped
 	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 "::ffff:10.0.3.2" flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add "::ffff:10.0.3.2" subflow
 	run_tests $ns1 $ns2 "::ffff:10.0.1.1"
 	chk_join_nr "single subflow IPv4-mapped" 1 1 1
 
 	# signal address IPv4-mapped with IPv4-mapped sk
 	reset
-	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 "::ffff:10.0.2.1" flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add "::ffff:10.0.2.1" signal
 	run_tests $ns1 $ns2 "::ffff:10.0.1.1"
 	chk_join_nr "signal address IPv4-mapped" 1 1 1
 	chk_add_nr 1 1
 
 	# subflow v4-map-v6
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 "::ffff:10.0.1.1"
 	chk_join_nr "single subflow v4-map-v6" 1 1 1
 
 	# signal address v4-map-v6
 	reset
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 "::ffff:10.0.1.1"
 	chk_join_nr "signal address v4-map-v6" 1 1 1
 	chk_add_nr 1 1
 
 	# subflow v6-map-v4
 	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 "::ffff:10.0.3.2" flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add "::ffff:10.0.3.2" subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow v6-map-v4" 1 1 1
 
 	# signal address v6-map-v4
 	reset
-	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 "::ffff:10.0.2.1" flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add "::ffff:10.0.2.1" signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address v6-map-v4" 1 1 1
 	chk_add_nr 1 1
 
 	# no subflow IPv6 to v4 address
 	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 dead:beef:2::2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add dead:beef:2::2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "no JOIN with diff families v4-v6" 0 0 0
 
 	# no subflow IPv6 to v4 address even if v6 has a valid v4 at the end
 	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 dead:beef:2::10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add dead:beef:2::10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "no JOIN with diff families v4-v6-2" 0 0 0
 
 	# no subflow IPv4 to v6 address, no need to slow down too then
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 dead:beef:1::1
 	chk_join_nr "no JOIN with diff families v6-v4" 0 0 0
 }
@@ -1634,18 +1634,18 @@ backup_tests()
 {
 	# single subflow, backup
 	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,backup
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow backup
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup
 	chk_join_nr "single subflow, backup" 1 1 1
 	chk_prio_nr 0 1
 
 	# single address, backup
 	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup
 	chk_join_nr "single address, backup" 1 1 1
 	chk_add_nr 1 1
@@ -1656,28 +1656,28 @@ add_addr_ports_tests()
 {
 	# signal address with port
 	reset
-	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 port 10100
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address with port" 1 1 1
 	chk_add_nr 1 1 1
 
 	# subflow and signal with port
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflow and signal with port" 2 2 2
 	chk_add_nr 1 1 1
 
 	# single address with port, remove
 	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 port 10100
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1 0 -1 0 slow
 	chk_join_nr "remove single address with port" 1 1 1
 	chk_add_nr 1 1 1
@@ -1685,10 +1685,10 @@ add_addr_ports_tests()
 
 	# subflow and signal with port, remove
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -1 -1 slow
 	chk_join_nr "remove subflow and signal with port" 2 2 2
 	chk_add_nr 1 1 1
@@ -1696,11 +1696,11 @@ add_addr_ports_tests()
 
 	# subflows and signal with port, flush
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 -8 -2 slow
 	chk_join_nr "flush subflows and signal with port" 3 3 3
 	chk_add_nr 1 1
@@ -1708,20 +1708,20 @@ add_addr_ports_tests()
 
 	# multiple addresses with port
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal port 10100
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal port 10100
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple addresses with port" 2 2 2
 	chk_add_nr 2 2 2
 
 	# multiple addresses with ports
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal port 10100
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.3.1 flags signal port 10101
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal port 10100
+	ip -n $ns1 mptcp endpoint add 10.0.3.1 signal port 10101
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple addresses with ports" 2 2 2
 	chk_add_nr 2 2 2
@@ -1731,56 +1731,56 @@ syncookies_tests()
 {
 	# single subflow, syncookies
 	reset_with_cookies
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow with syn cookies" 1 1 1
 
 	# multiple subflows with syn cookies
 	reset_with_cookies
-	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.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "multiple subflows with syn cookies" 2 2 2
 
 	# multiple subflows limited by server
 	reset_with_cookies
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflows limited by server w cookies" 2 1 1
 
 	# test signal address with cookies
 	reset_with_cookies
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address with syn cookies" 1 1 1
 	chk_add_nr 1 1
 
 	# test cookie with subflow and signal
 	reset_with_cookies
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 2
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 2
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflow and signal w cookies" 2 2 2
 	chk_add_nr 1 1
 
 	# accept and use add_addr with additional subflows
 	reset_with_cookies
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 3
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
+	ip -n $ns2 mptcp endpoint add 10.0.4.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflows and signal w. cookies" 3 3 3
 	chk_add_nr 1 1
@@ -1790,29 +1790,29 @@ checksum_tests()
 {
 	# checksum test 0 0
 	reset_with_checksum 0 0
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_csum_nr "checksum test 0 0"
 
 	# checksum test 1 1
 	reset_with_checksum 1 1
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_csum_nr "checksum test 1 1"
 
 	# checksum test 0 1
 	reset_with_checksum 0 1
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_csum_nr "checksum test 0 1"
 
 	# checksum test 1 0
 	reset_with_checksum 1 0
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 1
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_csum_nr "checksum test 1 0"
 }
@@ -1821,26 +1821,26 @@ deny_join_id0_tests()
 {
 	# subflow allow join id0 ns1
 	reset_with_allow_join_id0 1 0
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow allow join id0 ns1" 1 1 1
 
 	# subflow allow join id0 ns2
 	reset_with_allow_join_id0 0 1
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "single subflow allow join id0 ns2" 0 0 0
 
 	# signal address allow join id0 ns1
 	# ADD_ADDRs are not affected by allow_join_id0 value.
 	reset_with_allow_join_id0 1 0
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 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
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address allow join id0 ns1" 1 1 1
 	chk_add_nr 1 1
@@ -1848,28 +1848,28 @@ deny_join_id0_tests()
 	# signal address allow join id0 ns2
 	# ADD_ADDRs are not affected by allow_join_id0 value.
 	reset_with_allow_join_id0 0 1
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 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
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "signal address allow join id0 ns2" 1 1 1
 	chk_add_nr 1 1
 
 	# subflow and address allow join id0 ns1
 	reset_with_allow_join_id0 1 0
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflow and address allow join id0 1" 2 2 2
 
 	# subflow and address allow join id0 ns2
 	reset_with_allow_join_id0 0 1
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 2 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 2 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "subflow and address allow join id0 2" 1 1 1
 }
@@ -1880,10 +1880,10 @@ fullmesh_tests()
 	# 2 fullmesh addrs in ns2, added before the connection,
 	# 1 non-fullmesh addr in ns1, added during the connection.
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 4
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 4
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.2.2 flags subflow,fullmesh
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow,fullmesh
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 4
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 4
+	ip -n $ns2 mptcp endpoint add 10.0.2.2 subflow fullmesh
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow fullmesh
 	run_tests $ns1 $ns2 10.0.1.1 0 1 0 slow
 	chk_join_nr "fullmesh test 2x1" 4 4 4
 	chk_add_nr 1 1
@@ -1892,9 +1892,9 @@ fullmesh_tests()
 	# 1 non-fullmesh addr in ns1, added before the connection,
 	# 1 fullmesh addr in ns2, added during the connection.
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 3
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 3
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 3
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_1 slow
 	chk_join_nr "fullmesh test 1x1" 3 3 3
 	chk_add_nr 1 1
@@ -1903,9 +1903,9 @@ fullmesh_tests()
 	# 1 non-fullmesh addr in ns1, added before the connection,
 	# 2 fullmesh addrs in ns2, added during the connection.
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 5
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 5
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 5
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 5
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow
 	chk_join_nr "fullmesh test 1x2" 5 5 5
 	chk_add_nr 1 1
@@ -1915,9 +1915,9 @@ fullmesh_tests()
 	# 2 fullmesh addrs in ns2, added during the connection,
 	# limit max_subflows to 4.
 	reset
-	ip netns exec $ns1 ./pm_nl_ctl limits 2 4
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 4
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 2 subflows 4
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 4
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1 0 0 fullmesh_2 slow
 	chk_join_nr "fullmesh test 1x2, limited" 4 4 4
 	chk_add_nr 1 1
@@ -1928,9 +1928,9 @@ userspace_tests()
 	# userspace pm type prevents add_addr
 	reset
 	ip netns exec $ns1 sysctl -q net.mptcp.pm_type=1
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "userspace pm type prevents add_addr" 0 0 0
 	chk_add_nr 0 0
@@ -1938,9 +1938,9 @@ userspace_tests()
 	# userspace pm type echoes add_addr
 	reset
 	ip netns exec $ns2 sysctl -q net.mptcp.pm_type=1
-	ip netns exec $ns1 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns2 ./pm_nl_ctl limits 0 2
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.2.1 flags signal
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 2
+	ip -n $ns1 mptcp endpoint add 10.0.2.1 signal
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "userspace pm type echoes add_addr" 0 0 0
 	chk_add_nr 1 1
@@ -1948,27 +1948,27 @@ userspace_tests()
 	# userspace pm type rejects join
 	reset
 	ip netns exec $ns1 sysctl -q net.mptcp.pm_type=1
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "userspace pm type rejects join" 1 1 0
 
 	# userspace pm type does not send join
 	reset
 	ip netns exec $ns2 sysctl -q net.mptcp.pm_type=1
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1
 	chk_join_nr "userspace pm type does not send join" 0 0 0
 
 	# userspace pm type prevents mp_prio
 	reset
 	ip netns exec $ns1 sysctl -q net.mptcp.pm_type=1
-	ip netns exec $ns1 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl limits 1 1
-	ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow
+	ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 1 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup
 	chk_join_nr "userspace pm type prevents mp_prio" 1 1 0
 	chk_prio_nr 0 0
@@ -1977,9 +1977,9 @@ userspace_tests()
 	reset
 	ip netns exec $ns1 sysctl -q net.mptcp.pm_type=1
 	ip netns exec $ns2 sysctl -q net.mptcp.pm_type=1
-	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
+	ip -n $ns1 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp limits set add_addr_accepted 0 subflows 1
+	ip -n $ns2 mptcp endpoint add 10.0.3.2 subflow
 	run_tests $ns1 $ns2 10.0.1.1 0 0 -1 slow
 	chk_join_nr "userspace pm type prevents rm_addr" 0 0 0
 	chk_rm_nr 0 0
-- 
2.31.1


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

* [PATCH mptcp-next 2/4] selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 1/4] selftests: mptcp: use 'ip mptcp' in mptcp_join.sh Geliang Tang
@ 2022-01-04 10:11 ` Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 3/4] selftests: mptcp: use 'ip mptcp' in pm_netlink.sh Geliang Tang
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-04 10:11 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch replaced all the pm_nl_ctl commands in the mptcp_sockopt.sh
script with the 'ip mptcp' commands.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/net/mptcp/mptcp_sockopt.sh | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
index 0879da915014..f4da6d2da1c5 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
@@ -57,15 +57,15 @@ init()
 		# let $ns2 reach any $ns1 address from any interface
 		ip -net "$ns2" route add default via 10.0.$i.1 dev ns2eth$i metric 10$i
 
-		ip netns exec $ns1 ./pm_nl_ctl add 10.0.$i.1 flags signal
-		ip netns exec $ns1 ./pm_nl_ctl add dead:beef:$i::1 flags signal
+		ip -net $ns1 mptcp endpoint add 10.0.$i.1 signal
+		ip -net $ns1 mptcp endpoint add dead:beef:$i::1 signal
 
-		ip netns exec $ns2 ./pm_nl_ctl add 10.0.$i.2 flags signal
-		ip netns exec $ns2 ./pm_nl_ctl add dead:beef:$i::2 flags signal
+		ip -net $ns2 mptcp endpoint add 10.0.$i.2 signal
+		ip -net $ns2 mptcp endpoint add dead:beef:$i::2 signal
 	done
 
-	ip netns exec $ns1 ./pm_nl_ctl limits 8 8
-	ip netns exec $ns2 ./pm_nl_ctl limits 8 8
+	ip -net $ns1 mptcp limits set add_addr_accepted 8 subflows 8
+	ip -net $ns2 mptcp limits set add_addr_accepted 8 subflows 8
 
 	add_mark_rules $ns1 1
 	add_mark_rules $ns2 2
-- 
2.31.1


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

* [PATCH mptcp-next 3/4] selftests: mptcp: use 'ip mptcp' in pm_netlink.sh
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 1/4] selftests: mptcp: use 'ip mptcp' in mptcp_join.sh Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 2/4] selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh Geliang Tang
@ 2022-01-04 10:11 ` Geliang Tang
  2022-01-04 10:11 ` [PATCH mptcp-next 4/4] selftests: mptcp: use 'ip mptcp' in simult_flows.sh Geliang Tang
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-04 10:11 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch replaced all the pm_nl_ctl commands in the pm_netlink.sh script
with the 'ip mptcp' commands.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 .../testing/selftests/net/mptcp/pm_netlink.sh | 164 +++++++++---------
 1 file changed, 80 insertions(+), 84 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/pm_netlink.sh b/tools/testing/selftests/net/mptcp/pm_netlink.sh
index cbacf9f6538b..638705d639c2 100755
--- a/tools/testing/selftests/net/mptcp/pm_netlink.sh
+++ b/tools/testing/selftests/net/mptcp/pm_netlink.sh
@@ -68,100 +68,96 @@ check()
 	fi
 }
 
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
-subflows 2" "defaults limits"
+check "ip -n $ns1 mptcp endpoint show" "" "defaults addr list"
+check "ip -n $ns1 mptcp limits show" "add_addr_accepted 0 subflows 2 " "defaults limits"
 
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
-check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags  10.0.1.1" "simple add/get addr"
+ip -n $ns1 mptcp endpoint add 10.0.1.1
+ip -n $ns1 mptcp endpoint add 10.0.1.2 subflow dev lo
+ip -n $ns1 mptcp endpoint add 10.0.1.3 signal backup
+check "ip -n $ns1 mptcp endpoint show id 1" "10.0.1.1 id 1 " "simple add/get addr"
 
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags  10.0.1.1
-id 2 flags subflow dev lo 10.0.1.2
-id 3 flags signal,backup 10.0.1.3" "dump addrs"
+check "ip -n $ns1 mptcp endpoint show" \
+"10.0.1.1 id 1 
+10.0.1.2 id 2 subflow dev lo 
+10.0.1.3 id 3 signal backup " "dump addrs"
 
-ip netns exec $ns1 ./pm_nl_ctl del 2
-check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
-check "ip netns exec $ns1 ./pm_nl_ctl dump" \
-"id 1 flags  10.0.1.1
-id 3 flags signal,backup 10.0.1.3" "dump addrs after del"
+ip -n $ns1 mptcp endpoint delete id 2
+check "ip -n $ns1 mptcp endpoint show id 2" "" "simple del addr"
+check "ip -n $ns1 mptcp endpoint show" \
+"10.0.1.1 id 1 
+10.0.1.3 id 3 signal backup " "dump addrs after del"
 
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3
-check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
+ip -n $ns1 mptcp endpoint add 10.0.1.3 >/dev/null 2>&1
+check "ip -n $ns1 mptcp endpoint show id 4" "" "duplicate addr"
 
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
-check "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment"
+ip -n $ns1 mptcp endpoint add 10.0.1.4 signal
+check "ip -n $ns1 mptcp endpoint show id 4" "10.0.1.4 id 4 signal " "id addr increment"
 
 for i in `seq 5 9`; do
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
+	ip -n $ns1 mptcp endpoint add 10.0.1.$i signal >/dev/null 2>&1
 done
-check "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit"
-check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit"
+check "ip -n $ns1 mptcp endpoint show id 9" "10.0.1.9 id 9 signal " "hard addr limit"
+check "ip -n $ns1 mptcp endpoint show id 10" "" "above hard addr limit"
 
-ip netns exec $ns1 ./pm_nl_ctl del 9
+ip -n $ns1 mptcp endpoint delete id 9
 for i in `seq 10 255`; do
-	ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
-	ip netns exec $ns1 ./pm_nl_ctl del $i
+	ip -n $ns1 mptcp endpoint add 10.0.0.9 id $i
+	ip -n $ns1 mptcp endpoint delete id $i
 done
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.1.1
-id 3 flags signal,backup 10.0.1.3
-id 4 flags signal 10.0.1.4
-id 5 flags signal 10.0.1.5
-id 6 flags signal 10.0.1.6
-id 7 flags signal 10.0.1.7
-id 8 flags signal 10.0.1.8" "id limit"
-
-ip netns exec $ns1 ./pm_nl_ctl flush
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
-
-ip netns exec $ns1 ./pm_nl_ctl limits 9 1
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
-subflows 2" "rcv addrs above hard limit"
-
-ip netns exec $ns1 ./pm_nl_ctl limits 1 9
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
-subflows 2" "subflows above hard limit"
-
-ip netns exec $ns1 ./pm_nl_ctl limits 8 8
-check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
-subflows 8" "set limits"
-
-ip netns exec $ns1 ./pm_nl_ctl flush
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 id 100
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.1.1
-id 2 flags  10.0.1.2
-id 3 flags  10.0.1.7
-id 4 flags  10.0.1.8
-id 100 flags  10.0.1.3
-id 101 flags  10.0.1.4
-id 254 flags  10.0.1.5
-id 255 flags  10.0.1.6" "set ids"
-
-ip netns exec $ns1 ./pm_nl_ctl flush
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.2 id 254
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.3
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.4
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
-ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
-check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.0.1
-id 2 flags  10.0.0.4
-id 3 flags  10.0.0.6
-id 4 flags  10.0.0.7
-id 5 flags  10.0.0.8
-id 253 flags  10.0.0.5
-id 254 flags  10.0.0.2
-id 255 flags  10.0.0.3" "wrap-around ids"
+check "ip -n $ns1 mptcp endpoint show" "10.0.1.1 id 1 
+10.0.1.3 id 3 signal backup 
+10.0.1.4 id 4 signal 
+10.0.1.5 id 5 signal 
+10.0.1.6 id 6 signal 
+10.0.1.7 id 7 signal 
+10.0.1.8 id 8 signal " "id limit"
+
+ip -n $ns1 mptcp endpoint flush
+check "ip -n $ns1 mptcp endpoint dump" "" "flush addrs"
+
+ip -n $ns1 mptcp limits set add_addr_accepted 9 subflows 1 >/dev/null 2>&1
+check "ip -n $ns1 mptcp limits show" "add_addr_accepted 0 subflows 2 " "rcv addrs above hard limit"
+
+ip -n $ns1 mptcp limits set add_addr_accepted 1 subflows 9 >/dev/null 2>&1
+check "ip -n $ns1 mptcp limits show" "add_addr_accepted 0 subflows 2 " "subflows above hard limit"
+
+ip -n $ns1 mptcp limits set add_addr_accepted 8 subflows 8
+check "ip -n $ns1 mptcp limits show" "add_addr_accepted 8 subflows 8 " "set limits"
+
+ip -n $ns1 mptcp endpoint flush
+ip -n $ns1 mptcp endpoint add 10.0.1.1
+ip -n $ns1 mptcp endpoint add 10.0.1.2
+ip -n $ns1 mptcp endpoint add 10.0.1.3 id 100
+ip -n $ns1 mptcp endpoint add 10.0.1.4
+ip -n $ns1 mptcp endpoint add 10.0.1.5 id 254
+ip -n $ns1 mptcp endpoint add 10.0.1.6
+ip -n $ns1 mptcp endpoint add 10.0.1.7
+ip -n $ns1 mptcp endpoint add 10.0.1.8
+check "ip -n $ns1 mptcp endpoint show" "10.0.1.1 id 1 
+10.0.1.2 id 2 
+10.0.1.7 id 3 
+10.0.1.8 id 4 
+10.0.1.3 id 100 
+10.0.1.4 id 101 
+10.0.1.5 id 254 
+10.0.1.6 id 255 " "set ids"
+
+ip -n $ns1 mptcp endpoint flush
+ip -n $ns1 mptcp endpoint add 10.0.0.1
+ip -n $ns1 mptcp endpoint add 10.0.0.2 id 254
+ip -n $ns1 mptcp endpoint add 10.0.0.3
+ip -n $ns1 mptcp endpoint add 10.0.0.4
+ip -n $ns1 mptcp endpoint add 10.0.0.5 id 253
+ip -n $ns1 mptcp endpoint add 10.0.0.6
+ip -n $ns1 mptcp endpoint add 10.0.0.7
+ip -n $ns1 mptcp endpoint add 10.0.0.8
+check "ip -n $ns1 mptcp endpoint show" "10.0.0.1 id 1 
+10.0.0.4 id 2 
+10.0.0.6 id 3 
+10.0.0.7 id 4 
+10.0.0.8 id 5 
+10.0.0.5 id 253 
+10.0.0.2 id 254 
+10.0.0.3 id 255 " "wrap-around ids"
 
 exit $ret
-- 
2.31.1


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

* [PATCH mptcp-next 4/4] selftests: mptcp: use 'ip mptcp' in simult_flows.sh
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
                   ` (2 preceding siblings ...)
  2022-01-04 10:11 ` [PATCH mptcp-next 3/4] selftests: mptcp: use 'ip mptcp' in pm_netlink.sh Geliang Tang
@ 2022-01-04 10:11 ` Geliang Tang
  2022-01-04 16:47 ` [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Matthieu Baerts
  2022-01-05  1:41 ` Mat Martineau
  5 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-04 10:11 UTC (permalink / raw)
  To: mptcp; +Cc: Geliang Tang

This patch replaced all the pm_nl_ctl commands in the simult_flows.sh
script with the 'ip mptcp' commands.

Signed-off-by: Geliang Tang <geliang.tang@suse.com>
---
 tools/testing/selftests/net/mptcp/simult_flows.sh | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/simult_flows.sh b/tools/testing/selftests/net/mptcp/simult_flows.sh
index f441ff7904fc..af2eb5b3da66 100755
--- a/tools/testing/selftests/net/mptcp/simult_flows.sh
+++ b/tools/testing/selftests/net/mptcp/simult_flows.sh
@@ -80,8 +80,8 @@ setup()
 	ip -net "$ns1" route add default via 10.0.2.2 metric 101
 	ip -net "$ns1" route add default via dead:beef:2::2 metric 101
 
-	ip netns exec "$ns1" ./pm_nl_ctl limits 1 1
-	ip netns exec "$ns1" ./pm_nl_ctl add 10.0.2.1 dev ns1eth2 flags subflow
+	ip -net "$ns1" mptcp limits set add_addr_accepted 1 subflows 1
+	ip -net "$ns1" mptcp endpoint add 10.0.2.1 dev ns1eth2 subflow
 
 	ip -net "$ns2" addr add 10.0.1.2/24 dev ns2eth1
 	ip -net "$ns2" addr add dead:beef:1::2/64 dev ns2eth1 nodad
@@ -103,7 +103,7 @@ setup()
 	ip -net "$ns3" route add default via 10.0.3.2
 	ip -net "$ns3" route add default via dead:beef:3::2
 
-	ip netns exec "$ns3" ./pm_nl_ctl limits 1 1
+	ip -net "$ns3" mptcp limits set add_addr_accepted 1 subflows 1
 }
 
 # $1: ns, $2: port
-- 
2.31.1


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

* Re: [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
                   ` (3 preceding siblings ...)
  2022-01-04 10:11 ` [PATCH mptcp-next 4/4] selftests: mptcp: use 'ip mptcp' in simult_flows.sh Geliang Tang
@ 2022-01-04 16:47 ` Matthieu Baerts
  2022-01-05  2:46   ` Geliang Tang
  2022-01-05  1:41 ` Mat Martineau
  5 siblings, 1 reply; 10+ messages in thread
From: Matthieu Baerts @ 2022-01-04 16:47 UTC (permalink / raw)
  To: Geliang Tang, mptcp

Hi Geliang,

On 04/01/2022 11:11, Geliang Tang wrote:
> This patchset replaced all the pm_nl_ctl commands in selftests with the
> 'ip mptcp' commands.

Thank you for looking at that, that's a good idea!

I see that you are using features that are not in iproute2 yet. This
depends on your "more patches from pm_nl_ctl" series, right?

We can easily modify the environment of our CI but not the other ones.
To continue having these other CIs validating MPTCP selftests, I think
we should do two things:

- check IPRoute2 version and skip the tests with a clear message if a
too old version is used. I guess these CI uses at least the last stable
version of IPRoute2.

- wait for patches to be at least in "iproute2-next" before applying
patches in our "export" branch: it means we can already apply the
modifications that doesn't needs your patches for iproute2.

(if it helps, we can also have an mptcp-iproute2-next repo, e.g. if we
see we have too many IPRoute2 patches waiting to be applied upstream)

WDYT?

Cheers,
Matt
-- 
Tessares | Belgium | Hybrid Access Solutions
www.tessares.net

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

* Re: [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
  2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
                   ` (4 preceding siblings ...)
  2022-01-04 16:47 ` [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Matthieu Baerts
@ 2022-01-05  1:41 ` Mat Martineau
  2022-01-05  2:35   ` Geliang Tang
  5 siblings, 1 reply; 10+ messages in thread
From: Mat Martineau @ 2022-01-05  1:41 UTC (permalink / raw)
  To: Geliang Tang; +Cc: mptcp

On Tue, 4 Jan 2022, Geliang Tang wrote:

> This patchset replaced all the pm_nl_ctl commands in selftests with the
> 'ip mptcp' commands.
>
> Geliang Tang (4):
>  selftests: mptcp: use 'ip mptcp' in mptcp_join.sh
>  selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh
>  selftests: mptcp: use 'ip mptcp' in pm_netlink.sh
>  selftests: mptcp: use 'ip mptcp' in simult_flows.sh
>
> .../testing/selftests/net/mptcp/mptcp_join.sh | 686 +++++++++---------
> .../selftests/net/mptcp/mptcp_sockopt.sh      |  12 +-
> .../testing/selftests/net/mptcp/pm_netlink.sh | 164 ++---
> .../selftests/net/mptcp/simult_flows.sh       |   6 +-
> 4 files changed, 432 insertions(+), 436 deletions(-)
>
> -- 
> 2.31.1

Hi Geliang -

I think we had been using pm_nl_ctl to avoid possible problems with 
varying 'ip' command versions on host systems, and to make sure we are 
checking for kernel regressions rather than 'ip' regressions, and to be 
able to check the netlink API in ways that might not make sense for 
the 'ip mptcp' command.

Could you comment on the reasons to move away from pm_nl_ctl?


Thanks,

--
Mat Martineau
Intel

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

* Re: [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
  2022-01-05  1:41 ` Mat Martineau
@ 2022-01-05  2:35   ` Geliang Tang
  2022-01-06 18:07     ` Mat Martineau
  0 siblings, 1 reply; 10+ messages in thread
From: Geliang Tang @ 2022-01-05  2:35 UTC (permalink / raw)
  To: Mat Martineau; +Cc: mptcp

On Tue, Jan 04, 2022 at 05:41:21PM -0800, Mat Martineau wrote:
> On Tue, 4 Jan 2022, Geliang Tang wrote:
> 
> > This patchset replaced all the pm_nl_ctl commands in selftests with the
> > 'ip mptcp' commands.
> > 
> > Geliang Tang (4):
> >  selftests: mptcp: use 'ip mptcp' in mptcp_join.sh
> >  selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh
> >  selftests: mptcp: use 'ip mptcp' in pm_netlink.sh
> >  selftests: mptcp: use 'ip mptcp' in simult_flows.sh
> > 
> > .../testing/selftests/net/mptcp/mptcp_join.sh | 686 +++++++++---------
> > .../selftests/net/mptcp/mptcp_sockopt.sh      |  12 +-
> > .../testing/selftests/net/mptcp/pm_netlink.sh | 164 ++---
> > .../selftests/net/mptcp/simult_flows.sh       |   6 +-
> > 4 files changed, 432 insertions(+), 436 deletions(-)
> > 
> > -- 
> > 2.31.1
> 
> Hi Geliang -
> 
> I think we had been using pm_nl_ctl to avoid possible problems with varying
> 'ip' command versions on host systems, and to make sure we are checking for
> kernel regressions rather than 'ip' regressions, and to be able to check the
> netlink API in ways that might not make sense for the 'ip mptcp' command.
> 
> Could you comment on the reasons to move away from pm_nl_ctl?
> 

Hi Mat,

How about using both pm_nl_ctl and 'ip mptcp' in the selftests? Add an
argument to choose which one to use. Or add the 'ip' command version check
to decide which one to use.

My intention to add these patches was to check whether all the changes in
pm_nl_ctl have been merged into 'ip mptcp'. I hesitated to use both
pm_nl_ctl and 'ip mptcp' or replace pm_nl_ctl with 'ip mptcp'. The latter
is easier to implement, so I chose the latter. Now I think maybe using both
of them is much better.

Thanks,
-Geliang

> 
> Thanks,
> 
> --
> Mat Martineau
> Intel
> 


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

* Re: [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
  2022-01-04 16:47 ` [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Matthieu Baerts
@ 2022-01-05  2:46   ` Geliang Tang
  0 siblings, 0 replies; 10+ messages in thread
From: Geliang Tang @ 2022-01-05  2:46 UTC (permalink / raw)
  To: Matthieu Baerts; +Cc: mptcp

Hi Matt,

On Tue, Jan 04, 2022 at 05:47:35PM +0100, Matthieu Baerts wrote:
> Hi Geliang,
> 
> On 04/01/2022 11:11, Geliang Tang wrote:
> > This patchset replaced all the pm_nl_ctl commands in selftests with the
> > 'ip mptcp' commands.
> 
> Thank you for looking at that, that's a good idea!
> 
> I see that you are using features that are not in iproute2 yet. This
> depends on your "more patches from pm_nl_ctl" series, right?

Only ./mptcp_join.sh -b (backup) and ./mptcp_join.sh -m (fullmesh) depend
on the "more patches from pm_nl_ctl" series.

> 
> We can easily modify the environment of our CI but not the other ones.
> To continue having these other CIs validating MPTCP selftests, I think
> we should do two things:
> 
> - check IPRoute2 version and skip the tests with a clear message if a
> too old version is used. I guess these CI uses at least the last stable
> version of IPRoute2.
> 
> - wait for patches to be at least in "iproute2-next" before applying
> patches in our "export" branch: it means we can already apply the
> modifications that doesn't needs your patches for iproute2.
> 
> (if it helps, we can also have an mptcp-iproute2-next repo, e.g. if we
> see we have too many IPRoute2 patches waiting to be applied upstream)
> 
> WDYT?

Maybe it's better to use both pm_nl_ctl and 'ip mptcp'. Add some code to
check IPRoute2 version in mptcp_join.sh to decide which one to use.

Thanks,
-Geliang

> 
> Cheers,
> Matt
> -- 
> Tessares | Belgium | Hybrid Access Solutions
> www.tessares.net
> 


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

* Re: [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests
  2022-01-05  2:35   ` Geliang Tang
@ 2022-01-06 18:07     ` Mat Martineau
  0 siblings, 0 replies; 10+ messages in thread
From: Mat Martineau @ 2022-01-06 18:07 UTC (permalink / raw)
  To: Geliang Tang; +Cc: mptcp

On Wed, 5 Jan 2022, Geliang Tang wrote:

> On Tue, Jan 04, 2022 at 05:41:21PM -0800, Mat Martineau wrote:
>> On Tue, 4 Jan 2022, Geliang Tang wrote:
>>
>>> This patchset replaced all the pm_nl_ctl commands in selftests with the
>>> 'ip mptcp' commands.
>>>
>>> Geliang Tang (4):
>>>  selftests: mptcp: use 'ip mptcp' in mptcp_join.sh
>>>  selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh
>>>  selftests: mptcp: use 'ip mptcp' in pm_netlink.sh
>>>  selftests: mptcp: use 'ip mptcp' in simult_flows.sh
>>>
>>> .../testing/selftests/net/mptcp/mptcp_join.sh | 686 +++++++++---------
>>> .../selftests/net/mptcp/mptcp_sockopt.sh      |  12 +-
>>> .../testing/selftests/net/mptcp/pm_netlink.sh | 164 ++---
>>> .../selftests/net/mptcp/simult_flows.sh       |   6 +-
>>> 4 files changed, 432 insertions(+), 436 deletions(-)
>>>
>>> --
>>> 2.31.1
>>
>> Hi Geliang -
>>
>> I think we had been using pm_nl_ctl to avoid possible problems with varying
>> 'ip' command versions on host systems, and to make sure we are checking for
>> kernel regressions rather than 'ip' regressions, and to be able to check the
>> netlink API in ways that might not make sense for the 'ip mptcp' command.
>>
>> Could you comment on the reasons to move away from pm_nl_ctl?
>>
>
> Hi Mat,
>
> How about using both pm_nl_ctl and 'ip mptcp' in the selftests? Add an
> argument to choose which one to use. Or add the 'ip' command version check
> to decide which one to use.
>

Hi Geliang -

I like the idea to add a command line option to use 'ip' commands, but 
still defaulting to pm_nl_ctl. It's important to have consistent behavior 
across systems with the default self tests (especially with various 
automated build systems like kbuild where we don't know or control the 
iproute2 version).

> My intention to add these patches was to check whether all the changes in
> pm_nl_ctl have been merged into 'ip mptcp'.

Yes, it's very useful to be able to run all these test cases with 'ip 
mptcp' in addition to pm_nl_ctl.

> I hesitated to use both pm_nl_ctl and 'ip mptcp' or replace pm_nl_ctl 
> with 'ip mptcp'. The latter is easier to implement, so I chose the 
> latter. Now I think maybe using both of them is much better.

I agree!

--
Mat Martineau
Intel

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

end of thread, other threads:[~2022-01-06 18:07 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-01-04 10:11 [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Geliang Tang
2022-01-04 10:11 ` [PATCH mptcp-next 1/4] selftests: mptcp: use 'ip mptcp' in mptcp_join.sh Geliang Tang
2022-01-04 10:11 ` [PATCH mptcp-next 2/4] selftests: mptcp: use 'ip mptcp' in mptcp_sockopt.sh Geliang Tang
2022-01-04 10:11 ` [PATCH mptcp-next 3/4] selftests: mptcp: use 'ip mptcp' in pm_netlink.sh Geliang Tang
2022-01-04 10:11 ` [PATCH mptcp-next 4/4] selftests: mptcp: use 'ip mptcp' in simult_flows.sh Geliang Tang
2022-01-04 16:47 ` [PATCH mptcp-next 0/4] use 'ip mptcp' in selftests Matthieu Baerts
2022-01-05  2:46   ` Geliang Tang
2022-01-05  1:41 ` Mat Martineau
2022-01-05  2:35   ` Geliang Tang
2022-01-06 18:07     ` Mat Martineau

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.