Commit f0140386 authored by Geliang Tang's avatar Geliang Tang Committed by Jakub Kicinski
Browse files

selftests: mptcp: add wrapper for setting flags



This patch implemented a new function named pm_nl_set_endpoint(), wrapped
the PM netlink commands 'ip mptcp endpoint change flags' and 'pm_nl_ctl
set flags' in it, and used a new argument 'ip_mptcp' to choose which one
to use to set the flags of the PM endpoint.

'ip mptcp' used the ID number argument to find out the address to change
flags, while 'pm_nl_ctl' used the address and port number arguments. So
we need to parse the address ID from the PM dump output as well as the
address and port number.

Used this wrapper in do_transfer() instead of using the pm_nl_ctl command
directly.

Signed-off-by: default avatarGeliang Tang <geliang.tang@suse.com>
Signed-off-by: default avatarMat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent dda61b3d
Loading
Loading
Loading
Loading
+21 −3
Original line number Diff line number Diff line
@@ -376,6 +376,22 @@ pm_nl_show_endpoints()
	fi
}

pm_nl_change_endpoint()
{
	local ns=$1
	local flags=$2
	local id=$3
	local addr=$4
	local port=""

	if [ $ip_mptcp -eq 1 ]; then
		ip -n $ns mptcp endpoint change id $id ${flags//","/" "}
	else
		if [ $5 -ne 0 ]; then port="port $5"; fi
		ip netns exec $ns ./pm_nl_ctl set $addr flags $flags $port
	fi
}

do_transfer()
{
	listener_ns="$1"
@@ -577,7 +593,7 @@ do_transfer()
				local arr=($line)
				local addr
				local port=0
				local _port=""
				local id

				for i in ${arr[@]}; do
					if is_addr $i; then
@@ -586,11 +602,13 @@ do_transfer()
						# The minimum expected port number is 10000
						if [ $i -gt 10000 ]; then
							port=$i
						# The maximum id number is 255
						elif [ $i -lt 255 ]; then
							id=$i
						fi
					fi
				done
				if [ $port -ne 0 ]; then _port="port $port"; fi
				ip netns exec $netns ./pm_nl_ctl set $addr flags $sflags $_port
				pm_nl_change_endpoint $netns $sflags $id $addr $port
			done
		done
	fi