selftests: mptcp: add wrapper for setting flags
authorGeliang Tang <geliang.tang@suse.com>
Sat, 5 Feb 2022 00:03:34 +0000 (16:03 -0800)
committerJakub Kicinski <kuba@kernel.org>
Sat, 5 Feb 2022 04:30:24 +0000 (20:30 -0800)
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: Geliang Tang <geliang.tang@suse.com>
Signed-off-by: Mat Martineau <mathew.j.martineau@linux.intel.com>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 093eb27f5c6dc86e75281ff7bbaa95c788dd8ee7..757f26674c6274fc7842989a28cfc50033ba67a2 100755 (executable)
@@ -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