[PATCH mptcp-next 04/10] selftests: mptcp: addr support for change_endpoint

Geliang Tang posted 10 patches 1 year, 11 months ago
There is a newer version of this series
[PATCH mptcp-next 04/10] selftests: mptcp: addr support for change_endpoint
Posted by Geliang Tang 1 year, 11 months ago
From: Geliang Tang <tanggeliang@kylinos.cn>

The address that needs to change flags can only be identified by an address
ID in pm_nl_change_endpoint(). This patch adds support for passing an IP
address directly to this helper.

        Address ID:
                pm_nl_change_endpoint $ns id $id $flags

        IP address:
                pm_nl_change_endpoint $ns $addr $flags

Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
---
 tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 ++++++++++++---
 tools/testing/selftests/net/mptcp/mptcp_lib.sh  |  5 +++++
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
index e33a136aef8e..431233e25abc 100755
--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
@@ -717,13 +717,17 @@ pm_nl_show_endpoints()
 pm_nl_change_endpoint()
 {
 	local ns=$1
-	local id=$2
+	local addr=$2
 	local flags=$3
 
+	if ! mptcp_lib_is_addr "$addr"; then
+		[ $addr -gt 0 ] && [ $addr -lt 256 ] && addr="id $addr"
+	fi
+
 	if mptcp_lib_is_ip_mptcp; then
-		ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
+		ip -n $ns mptcp endpoint change $addr ${flags//","/" "}
 	else
-		ip netns exec $ns ./pm_nl_ctl set id $id flags $flags
+		ip netns exec $ns ./pm_nl_ctl set $addr flags $flags
 	fi
 }
 
@@ -3609,6 +3613,11 @@ endpoint_tests()
 		output="id 1 flags signal 10.0.2.1"
 		mptcp_lib_is_ip_mptcp && output="10.0.2.1 id 1 signal "
 		check_output "pm_nl_show_endpoints ${ns1} 1" "${output}"
+		pm_nl_change_endpoint ${ns1} 1 backup
+		print_check "change id 1 addr"
+		output="id 1 flags signal,backup 10.0.2.1"
+		mptcp_lib_is_ip_mptcp && output="10.0.2.1 id 1 signal backup "
+		check_output "pm_nl_show_endpoints ${ns1}" "${output}"
 		speed=slow \
 			run_tests $ns1 $ns2 10.0.1.1 &
 		local tests_pid=$!
diff --git a/tools/testing/selftests/net/mptcp/mptcp_lib.sh b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
index d84f2f4986a7..c465f1d59419 100644
--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
@@ -284,6 +284,11 @@ mptcp_lib_is_v6() {
 	[ -z "${1##*:*}" ]
 }
 
+# $1: IP address
+mptcp_lib_is_addr() {
+	[ -z "${1##*.*}" ] || [ -z "${1##*:*}" ]
+}
+
 # $1: ns, $2: MIB counter
 mptcp_lib_get_counter() {
 	local ns="${1}"
-- 
2.40.1
Re: [PATCH mptcp-next 04/10] selftests: mptcp: addr support for change_endpoint
Posted by Matthieu Baerts 1 year, 11 months ago
Hi Geliang,

On 11/03/2024 02:48, Geliang Tang wrote:
> From: Geliang Tang <tanggeliang@kylinos.cn>
> 
> The address that needs to change flags can only be identified by an address
> ID in pm_nl_change_endpoint(). This patch adds support for passing an IP
> address directly to this helper.
> 
>         Address ID:
>                 pm_nl_change_endpoint $ns id $id $flags
> 
>         IP address:
>                 pm_nl_change_endpoint $ns $addr $flags
> 
> Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
> ---
>  tools/testing/selftests/net/mptcp/mptcp_join.sh | 15 ++++++++++++---
>  tools/testing/selftests/net/mptcp/mptcp_lib.sh  |  5 +++++
>  2 files changed, 17 insertions(+), 3 deletions(-)
> 
> diff --git a/tools/testing/selftests/net/mptcp/mptcp_join.sh b/tools/testing/selftests/net/mptcp/mptcp_join.sh
> index e33a136aef8e..431233e25abc 100755
> --- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
> +++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
> @@ -717,13 +717,17 @@ pm_nl_show_endpoints()
>  pm_nl_change_endpoint()
>  {
>  	local ns=$1
> -	local id=$2
> +	local addr=$2
>  	local flags=$3
>  
> +	if ! mptcp_lib_is_addr "$addr"; then
> +		[ $addr -gt 0 ] && [ $addr -lt 256 ] && addr="id $addr"
> +	fi
> +
>  	if mptcp_lib_is_ip_mptcp; then
> -		ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
> +		ip -n $ns mptcp endpoint change $addr ${flags//","/" "}
>  	else
> -		ip netns exec $ns ./pm_nl_ctl set id $id flags $flags
> +		ip netns exec $ns ./pm_nl_ctl set $addr flags $flags
>  	fi
>  }
>  
> @@ -3609,6 +3613,11 @@ endpoint_tests()
>  		output="id 1 flags signal 10.0.2.1"
>  		mptcp_lib_is_ip_mptcp && output="10.0.2.1 id 1 signal "
>  		check_output "pm_nl_show_endpoints ${ns1} 1" "${output}"
> +		pm_nl_change_endpoint ${ns1} 1 backup
> +		print_check "change id 1 addr"
> +		output="id 1 flags signal,backup 10.0.2.1"
> +		mptcp_lib_is_ip_mptcp && output="10.0.2.1 id 1 signal backup "
> +		check_output "pm_nl_show_endpoints ${ns1}" "${output}"

I feel like here as well, that's something already validated in
pm_netlink.sh, and this will not check anything new, no?

>  		speed=slow \
>  			run_tests $ns1 $ns2 10.0.1.1 &
>  		local tests_pid=$!

Cheers,
Matt
-- 
Sponsored by the NGI0 Core fund.