]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
6.7-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Mar 2024 16:44:54 +0000 (17:44 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 4 Mar 2024 16:44:54 +0000 (17:44 +0100)
added patches:
selftests-mptcp-add-chk_subflows_total-helper.patch
selftests-mptcp-add-evts_get_info-helper.patch
selftests-mptcp-add-mptcp_lib_is_v6.patch
selftests-mptcp-rm-subflow-with-v4-v4mapped-addr.patch
selftests-mptcp-update-userspace-pm-test-helpers.patch

queue-6.7/selftests-mptcp-add-chk_subflows_total-helper.patch [new file with mode: 0644]
queue-6.7/selftests-mptcp-add-evts_get_info-helper.patch [new file with mode: 0644]
queue-6.7/selftests-mptcp-add-mptcp_lib_is_v6.patch [new file with mode: 0644]
queue-6.7/selftests-mptcp-rm-subflow-with-v4-v4mapped-addr.patch [new file with mode: 0644]
queue-6.7/selftests-mptcp-update-userspace-pm-test-helpers.patch [new file with mode: 0644]
queue-6.7/series

diff --git a/queue-6.7/selftests-mptcp-add-chk_subflows_total-helper.patch b/queue-6.7/selftests-mptcp-add-chk_subflows_total-helper.patch
new file mode 100644 (file)
index 0000000..0034573
--- /dev/null
@@ -0,0 +1,113 @@
+From stable+bounces-25927-greg=kroah.com@vger.kernel.org Mon Mar  4 14:39:52 2024
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Mon,  4 Mar 2024 14:38:30 +0100
+Subject: selftests: mptcp: add chk_subflows_total helper
+To: stable@vger.kernel.org, gregkh@linuxfoundation.org
+Cc: MPTCP Upstream <mptcp@lists.linux.dev>, Geliang Tang <geliang.tang@suse.com>, Matthieu Baerts <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org>
+Message-ID: <20240304133827.1989736-9-matttbe@kernel.org>
+
+From: Geliang Tang <geliang.tang@suse.com>
+
+commit 80775412882e273b8ef62124fae861cde8e6fb3d upstream.
+
+This patch adds a new helper chk_subflows_total(), in it use the newly
+added counter mptcpi_subflows_total to get the "correct" amount of
+subflows, including the initial one.
+
+To be compatible with old 'ss' or kernel versions not supporting this
+counter, get the total subflows by listing TCP connections that are
+MPTCP subflows:
+
+    ss -ti state state established state syn-sent state syn-recv |
+        grep -c tcp-ulp-mptcp.
+
+Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
+Signed-off-by: Geliang Tang <geliang.tang@suse.com>
+Signed-off-by: Mat Martineau <martineau@kernel.org>
+Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-3-8d6b94150f6b@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/mptcp/mptcp_join.sh |   42 +++++++++++++++++++++++-
+ 1 file changed, 41 insertions(+), 1 deletion(-)
+
+--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
+@@ -1843,7 +1843,7 @@ chk_mptcp_info()
+       local cnt2
+       local dump_stats
+-      print_check "mptcp_info ${info1:0:8}=$exp1:$exp2"
++      print_check "mptcp_info ${info1:0:15}=$exp1:$exp2"
+       cnt1=$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value "$info1" "$info1")
+       cnt2=$(ss -N $ns2 -inmHM | mptcp_lib_get_info_value "$info2" "$info2")
+@@ -1864,6 +1864,42 @@ chk_mptcp_info()
+       fi
+ }
++# $1: subflows in ns1 ; $2: subflows in ns2
++# number of all subflows, including the initial subflow.
++chk_subflows_total()
++{
++      local cnt1
++      local cnt2
++      local info="subflows_total"
++      local dump_stats
++
++      # if subflows_total counter is supported, use it:
++      if [ -n "$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value $info $info)" ]; then
++              chk_mptcp_info $info $1 $info $2
++              return
++      fi
++
++      print_check "$info $1:$2"
++
++      # if not, count the TCP connections that are in fact MPTCP subflows
++      cnt1=$(ss -N $ns1 -ti state established state syn-sent state syn-recv |
++             grep -c tcp-ulp-mptcp)
++      cnt2=$(ss -N $ns2 -ti state established state syn-sent state syn-recv |
++             grep -c tcp-ulp-mptcp)
++
++      if [ "$1" != "$cnt1" ] || [ "$2" != "$cnt2" ]; then
++              fail_test "got subflows $cnt1:$cnt2 expected $1:$2"
++              dump_stats=1
++      else
++              print_ok
++      fi
++
++      if [ "$dump_stats" = 1 ]; then
++              ss -N $ns1 -ti
++              ss -N $ns2 -ti
++      fi
++}
++
+ chk_link_usage()
+ {
+       local ns=$1
+@@ -3407,10 +3443,12 @@ userspace_tests()
+               chk_join_nr 1 1 1
+               chk_add_nr 1 1
+               chk_mptcp_info subflows 1 subflows 1
++              chk_subflows_total 2 2
+               chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
+               userspace_pm_rm_sf_addr_ns1 10.0.2.1 10
+               chk_rm_nr 1 1 invert
+               chk_mptcp_info subflows 0 subflows 0
++              chk_subflows_total 1 1
+               kill_events_pids
+               mptcp_lib_kill_wait $tests_pid
+       fi
+@@ -3427,9 +3465,11 @@ userspace_tests()
+               userspace_pm_add_sf 10.0.3.2 20
+               chk_join_nr 1 1 1
+               chk_mptcp_info subflows 1 subflows 1
++              chk_subflows_total 2 2
+               userspace_pm_rm_sf_addr_ns2 10.0.3.2 20
+               chk_rm_nr 1 1
+               chk_mptcp_info subflows 0 subflows 0
++              chk_subflows_total 1 1
+               kill_events_pids
+               mptcp_lib_kill_wait $tests_pid
+       fi
diff --git a/queue-6.7/selftests-mptcp-add-evts_get_info-helper.patch b/queue-6.7/selftests-mptcp-add-evts_get_info-helper.patch
new file mode 100644 (file)
index 0000000..089faab
--- /dev/null
@@ -0,0 +1,298 @@
+From stable+bounces-25926-greg=kroah.com@vger.kernel.org Mon Mar  4 14:39:47 2024
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Mon,  4 Mar 2024 14:38:29 +0100
+Subject: selftests: mptcp: add evts_get_info helper
+To: stable@vger.kernel.org, gregkh@linuxfoundation.org
+Cc: MPTCP Upstream <mptcp@lists.linux.dev>, Geliang Tang <geliang.tang@suse.com>, Matthieu Baerts <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org>
+Message-ID: <20240304133827.1989736-8-matttbe@kernel.org>
+
+From: Geliang Tang <geliang.tang@suse.com>
+
+commit 06848c0f341ee3f9226ed01e519c72e4d2b6f001 upstream.
+
+This patch adds a new helper get_info_value(), using 'sed' command to
+parse the value of the given item name in the line with the given keyword,
+to make chk_mptcp_info() and pedit_action_pkts() more readable.
+
+Also add another helper evts_get_info() to use get_info_value() to parse
+the output of 'pm_nl_ctl events' command, to make all the userspace pm
+selftests more readable, both in mptcp_join.sh and userspace_pm.sh.
+
+Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
+Signed-off-by: Geliang Tang <geliang.tang@suse.com>
+Signed-off-by: Mat Martineau <martineau@kernel.org>
+Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-2-8d6b94150f6b@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/mptcp/mptcp_join.sh   |   19 ++--
+ tools/testing/selftests/net/mptcp/mptcp_lib.sh    |   10 ++
+ tools/testing/selftests/net/mptcp/userspace_pm.sh |   86 +++++++++-------------
+ 3 files changed, 57 insertions(+), 58 deletions(-)
+
+--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
+@@ -1845,10 +1845,8 @@ chk_mptcp_info()
+       print_check "mptcp_info ${info1:0:8}=$exp1:$exp2"
+-      cnt1=$(ss -N $ns1 -inmHM | grep "$info1:" |
+-             sed -n 's/.*\('"$info1"':\)\([[:digit:]]*\).*$/\2/p;q')
+-      cnt2=$(ss -N $ns2 -inmHM | grep "$info2:" |
+-             sed -n 's/.*\('"$info2"':\)\([[:digit:]]*\).*$/\2/p;q')
++      cnt1=$(ss -N $ns1 -inmHM | mptcp_lib_get_info_value "$info1" "$info1")
++      cnt2=$(ss -N $ns2 -inmHM | mptcp_lib_get_info_value "$info2" "$info2")
+       # 'ss' only display active connections and counters that are not 0.
+       [ -z "$cnt1" ] && cnt1=0
+       [ -z "$cnt2" ] && cnt2=0
+@@ -2824,13 +2822,13 @@ verify_listener_events()
+               return
+       fi
+-      type=$(grep "type:$e_type," $evt | sed -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q')
+-      family=$(grep "type:$e_type," $evt | sed -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q')
+-      sport=$(grep "type:$e_type," $evt | sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
++      type=$(mptcp_lib_evts_get_info type "$evt" "$e_type")
++      family=$(mptcp_lib_evts_get_info family "$evt" "$e_type")
++      sport=$(mptcp_lib_evts_get_info sport "$evt" "$e_type")
+       if [ $family ] && [ $family = $AF_INET6 ]; then
+-              saddr=$(grep "type:$e_type," $evt | sed -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
++              saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" "$e_type")
+       else
+-              saddr=$(grep "type:$e_type," $evt | sed -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q')
++              saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" "$e_type")
+       fi
+       if [ $type ] && [ $type = $e_type ] &&
+@@ -3225,8 +3223,7 @@ fastclose_tests()
+ pedit_action_pkts()
+ {
+       tc -n $ns2 -j -s action show action pedit index 100 | \
+-              grep "packets" | \
+-              sed 's/.*"packets":\([0-9]\+\),.*/\1/'
++              mptcp_lib_get_info_value \"packets\" packets
+ }
+ fail_tests()
+--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+@@ -208,6 +208,16 @@ mptcp_lib_result_print_all_tap() {
+       done
+ }
++# get the value of keyword $1 in the line marked by keyword $2
++mptcp_lib_get_info_value() {
++      grep "${2}" | sed -n 's/.*\('"${1}"':\)\([0-9a-f:.]*\).*$/\2/p;q'
++}
++
++# $1: info name ; $2: evts_ns ; $3: event type
++mptcp_lib_evts_get_info() {
++      mptcp_lib_get_info_value "${1}" "^type:${3:-1}," < "${2}"
++}
++
+ # $1: PID
+ mptcp_lib_kill_wait() {
+       [ "${1}" -eq 0 ] && return 0
+--- a/tools/testing/selftests/net/mptcp/userspace_pm.sh
++++ b/tools/testing/selftests/net/mptcp/userspace_pm.sh
+@@ -238,14 +238,11 @@ make_connection()
+       local server_token
+       local server_serverside
+-      client_token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+-      client_port=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
+-      client_serverside=$(sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q'\
+-                                    "$client_evts")
+-      server_token=$(grep "type:1," "$server_evts" |
+-                     sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
+-      server_serverside=$(grep "type:1," "$server_evts" |
+-                          sed --unbuffered -n 's/.*\(server_side:\)\([[:digit:]]*\).*$/\2/p;q')
++      client_token=$(mptcp_lib_evts_get_info token "$client_evts")
++      client_port=$(mptcp_lib_evts_get_info sport "$client_evts")
++      client_serverside=$(mptcp_lib_evts_get_info server_side "$client_evts")
++      server_token=$(mptcp_lib_evts_get_info token "$server_evts")
++      server_serverside=$(mptcp_lib_evts_get_info server_side "$server_evts")
+       print_test "Established IP${is_v6} MPTCP Connection ns2 => ns1"
+       if [ "$client_token" != "" ] && [ "$server_token" != "" ] && [ "$client_serverside" = 0 ] &&
+@@ -331,16 +328,16 @@ verify_announce_event()
+       local dport
+       local id
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
++      type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
++      token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
+       if [ "$e_af" = "v6" ]
+       then
+-              addr=$(sed --unbuffered -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
++              addr=$(mptcp_lib_evts_get_info daddr6 "$evt" $e_type)
+       else
+-              addr=$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
++              addr=$(mptcp_lib_evts_get_info daddr4 "$evt" $e_type)
+       fi
+-      dport=$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      id=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
++      dport=$(mptcp_lib_evts_get_info dport "$evt" $e_type)
++      id=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
+       check_expected "type" "token" "addr" "dport" "id"
+ }
+@@ -358,7 +355,7 @@ test_announce()
+          $client_addr_id dev ns2eth1 > /dev/null 2>&1
+       local type
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      type=$(mptcp_lib_evts_get_info type "$server_evts")
+       print_test "ADD_ADDR 10.0.2.2 (ns2) => ns1, invalid token"
+       if [ "$type" = "" ]
+       then
+@@ -437,9 +434,9 @@ verify_remove_event()
+       local token
+       local id
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      id=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
++      type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
++      token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
++      id=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
+       check_expected "type" "token" "id"
+ }
+@@ -457,7 +454,7 @@ test_remove()
+          $client_addr_id > /dev/null 2>&1
+       print_test "RM_ADDR id:${client_addr_id} ns2 => ns1, invalid token"
+       local type
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      type=$(mptcp_lib_evts_get_info type "$server_evts")
+       if [ "$type" = "" ]
+       then
+               test_pass
+@@ -470,7 +467,7 @@ test_remove()
+       ip netns exec "$ns2" ./pm_nl_ctl rem token "$client4_token" id\
+          $invalid_id > /dev/null 2>&1
+       print_test "RM_ADDR id:${invalid_id} ns2 => ns1, invalid id"
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      type=$(mptcp_lib_evts_get_info type "$server_evts")
+       if [ "$type" = "" ]
+       then
+               test_pass
+@@ -574,19 +571,19 @@ verify_subflow_events()
+               fi
+       fi
+-      type=$(sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      token=$(sed --unbuffered -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      family=$(sed --unbuffered -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      dport=$(sed --unbuffered -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      locid=$(sed --unbuffered -n 's/.*\(loc_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
+-      remid=$(sed --unbuffered -n 's/.*\(rem_id:\)\([[:digit:]]*\).*$/\2/p;q' "$evt")
++      type=$(mptcp_lib_evts_get_info type "$evt" $e_type)
++      token=$(mptcp_lib_evts_get_info token "$evt" $e_type)
++      family=$(mptcp_lib_evts_get_info family "$evt" $e_type)
++      dport=$(mptcp_lib_evts_get_info dport "$evt" $e_type)
++      locid=$(mptcp_lib_evts_get_info loc_id "$evt" $e_type)
++      remid=$(mptcp_lib_evts_get_info rem_id "$evt" $e_type)
+       if [ "$family" = "$AF_INET6" ]
+       then
+-              saddr=$(sed --unbuffered -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
+-              daddr=$(sed --unbuffered -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q' "$evt")
++              saddr=$(mptcp_lib_evts_get_info saddr6 "$evt" $e_type)
++              daddr=$(mptcp_lib_evts_get_info daddr6 "$evt" $e_type)
+       else
+-              saddr=$(sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
+-              daddr=$(sed --unbuffered -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evt")
++              saddr=$(mptcp_lib_evts_get_info saddr4 "$evt" $e_type)
++              daddr=$(mptcp_lib_evts_get_info daddr4 "$evt" $e_type)
+       fi
+       check_expected "type" "token" "daddr" "dport" "family" "saddr" "locid" "remid"
+@@ -621,7 +618,7 @@ test_subflows()
+       mptcp_lib_kill_wait $listener_pid
+       local sport
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW from server to client machine
+       :>"$server_evts"
+@@ -659,7 +656,7 @@ test_subflows()
+       # Delete the listener from the client ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW6 from server to client machine
+       :>"$server_evts"
+@@ -698,7 +695,7 @@ test_subflows()
+       # Delete the listener from the client ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$server_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$server_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW from server to client machine
+       :>"$server_evts"
+@@ -736,7 +733,7 @@ test_subflows()
+       # Delete the listener from the server ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW from client to server machine
+       :>"$client_evts"
+@@ -775,7 +772,7 @@ test_subflows()
+       # Delete the listener from the server ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW6 from client to server machine
+       :>"$client_evts"
+@@ -812,7 +809,7 @@ test_subflows()
+       # Delete the listener from the server ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW from client to server machine
+       :>"$client_evts"
+@@ -858,7 +855,7 @@ test_subflows_v4_v6_mix()
+       # Delete the listener from the server ns, if one was created
+       mptcp_lib_kill_wait $listener_pid
+-      sport=$(sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q' "$client_evts")
++      sport=$(mptcp_lib_evts_get_info sport "$client_evts" $SUB_ESTABLISHED)
+       # DESTROY_SUBFLOW from client to server machine
+       :>"$client_evts"
+@@ -926,18 +923,13 @@ verify_listener_events()
+               print_test "CLOSE_LISTENER $e_saddr:$e_sport"
+       fi
+-      type=$(grep "type:$e_type," $evt |
+-             sed --unbuffered -n 's/.*\(type:\)\([[:digit:]]*\).*$/\2/p;q')
+-      family=$(grep "type:$e_type," $evt |
+-               sed --unbuffered -n 's/.*\(family:\)\([[:digit:]]*\).*$/\2/p;q')
+-      sport=$(grep "type:$e_type," $evt |
+-              sed --unbuffered -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
++      type=$(mptcp_lib_evts_get_info type $evt $e_type)
++      family=$(mptcp_lib_evts_get_info family $evt $e_type)
++      sport=$(mptcp_lib_evts_get_info sport $evt $e_type)
+       if [ $family ] && [ $family = $AF_INET6 ]; then
+-              saddr=$(grep "type:$e_type," $evt |
+-                      sed --unbuffered -n 's/.*\(saddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
++              saddr=$(mptcp_lib_evts_get_info saddr6 $evt $e_type)
+       else
+-              saddr=$(grep "type:$e_type," $evt |
+-                      sed --unbuffered -n 's/.*\(saddr4:\)\([0-9.]*\).*$/\2/p;q')
++              saddr=$(mptcp_lib_evts_get_info saddr4 $evt $e_type)
+       fi
+       check_expected "type" "family" "saddr" "sport"
diff --git a/queue-6.7/selftests-mptcp-add-mptcp_lib_is_v6.patch b/queue-6.7/selftests-mptcp-add-mptcp_lib_is_v6.patch
new file mode 100644 (file)
index 0000000..0f579b8
--- /dev/null
@@ -0,0 +1,179 @@
+From stable+bounces-25929-greg=kroah.com@vger.kernel.org Mon Mar  4 14:39:55 2024
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Mon,  4 Mar 2024 14:38:32 +0100
+Subject: selftests: mptcp: add mptcp_lib_is_v6
+To: stable@vger.kernel.org, gregkh@linuxfoundation.org
+Cc: MPTCP Upstream <mptcp@lists.linux.dev>, Geliang Tang <geliang.tang@suse.com>, Matthieu Baerts <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org>
+Message-ID: <20240304133827.1989736-11-matttbe@kernel.org>
+
+From: Geliang Tang <geliang.tang@suse.com>
+
+commit b850f2c7dd85ecd14a333685c4ffd23f12665e94 upstream.
+
+To avoid duplicated code in different MPTCP selftests, we can add
+and use helpers defined in mptcp_lib.sh.
+
+is_v6() helper is defined in mptcp_connect.sh, mptcp_join.sh and
+mptcp_sockopt.sh, so export it into mptcp_lib.sh and rename it as
+mptcp_lib_is_v6(). Use this new helper in all scripts.
+
+Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
+Signed-off-by: Geliang Tang <geliang.tang@suse.com>
+Signed-off-by: Mat Martineau <martineau@kernel.org>
+Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-10-8d6b94150f6b@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/mptcp/mptcp_connect.sh |   16 +++++-----------
+ tools/testing/selftests/net/mptcp/mptcp_join.sh    |   14 ++++----------
+ tools/testing/selftests/net/mptcp/mptcp_lib.sh     |    5 +++++
+ tools/testing/selftests/net/mptcp/mptcp_sockopt.sh |    8 +-------
+ 4 files changed, 15 insertions(+), 28 deletions(-)
+
+--- a/tools/testing/selftests/net/mptcp/mptcp_connect.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_connect.sh
+@@ -310,12 +310,6 @@ check_mptcp_disabled()
+       return 0
+ }
+-# $1: IP address
+-is_v6()
+-{
+-      [ -z "${1##*:*}" ]
+-}
+-
+ do_ping()
+ {
+       local listener_ns="$1"
+@@ -324,7 +318,7 @@ do_ping()
+       local ping_args="-q -c 1"
+       local rc=0
+-      if is_v6 "${connect_addr}"; then
++      if mptcp_lib_is_v6 "${connect_addr}"; then
+               $ipv6 || return 0
+               ping_args="${ping_args} -6"
+       fi
+@@ -620,12 +614,12 @@ run_tests_lo()
+       fi
+       # skip if we don't want v6
+-      if ! $ipv6 && is_v6 "${connect_addr}"; then
++      if ! $ipv6 && mptcp_lib_is_v6 "${connect_addr}"; then
+               return 0
+       fi
+       local local_addr
+-      if is_v6 "${connect_addr}"; then
++      if mptcp_lib_is_v6 "${connect_addr}"; then
+               local_addr="::"
+       else
+               local_addr="0.0.0.0"
+@@ -693,7 +687,7 @@ run_test_transparent()
+       TEST_GROUP="${msg}"
+       # skip if we don't want v6
+-      if ! $ipv6 && is_v6 "${connect_addr}"; then
++      if ! $ipv6 && mptcp_lib_is_v6 "${connect_addr}"; then
+               return 0
+       fi
+@@ -726,7 +720,7 @@ EOF
+       fi
+       local local_addr
+-      if is_v6 "${connect_addr}"; then
++      if mptcp_lib_is_v6 "${connect_addr}"; then
+               local_addr="::"
+               r6flag="-6"
+       else
+--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
+@@ -592,12 +592,6 @@ link_failure()
+       done
+ }
+-# $1: IP address
+-is_v6()
+-{
+-      [ -z "${1##*:*}" ]
+-}
+-
+ # $1: ns, $2: port
+ wait_local_port_listen()
+ {
+@@ -877,7 +871,7 @@ pm_nl_set_endpoint()
+               local id=10
+               while [ $add_nr_ns1 -gt 0 ]; do
+                       local addr
+-                      if is_v6 "${connect_addr}"; then
++                      if mptcp_lib_is_v6 "${connect_addr}"; then
+                               addr="dead:beef:$counter::1"
+                       else
+                               addr="10.0.$counter.1"
+@@ -929,7 +923,7 @@ pm_nl_set_endpoint()
+               local id=20
+               while [ $add_nr_ns2 -gt 0 ]; do
+                       local addr
+-                      if is_v6 "${connect_addr}"; then
++                      if mptcp_lib_is_v6 "${connect_addr}"; then
+                               addr="dead:beef:$counter::2"
+                       else
+                               addr="10.0.$counter.2"
+@@ -971,7 +965,7 @@ pm_nl_set_endpoint()
+                       pm_nl_flush_endpoint ${connector_ns}
+               elif [ $rm_nr_ns2 -eq 9 ]; then
+                       local addr
+-                      if is_v6 "${connect_addr}"; then
++                      if mptcp_lib_is_v6 "${connect_addr}"; then
+                               addr="dead:beef:1::2"
+                       else
+                               addr="10.0.1.2"
+@@ -3339,7 +3333,7 @@ userspace_pm_rm_sf()
+       local cnt
+       [ "$1" == "$ns2" ] && evts=$evts_ns2
+-      if is_v6 $2; then ip=6; fi
++      if mptcp_lib_is_v6 $2; then ip=6; fi
+       tk=$(mptcp_lib_evts_get_info token "$evts")
+       da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t)
+       dp=$(mptcp_lib_evts_get_info dport "$evts" $t)
+--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+@@ -227,6 +227,11 @@ mptcp_lib_kill_wait() {
+       wait "${1}" 2>/dev/null
+ }
++# $1: IP address
++mptcp_lib_is_v6() {
++      [ -z "${1##*:*}" ]
++}
++
+ # $1: ns, $2: MIB counter
+ mptcp_lib_get_counter() {
+       local ns="${1}"
+--- a/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_sockopt.sh
+@@ -161,12 +161,6 @@ check_transfer()
+       return 0
+ }
+-# $1: IP address
+-is_v6()
+-{
+-      [ -z "${1##*:*}" ]
+-}
+-
+ do_transfer()
+ {
+       local listener_ns="$1"
+@@ -183,7 +177,7 @@ do_transfer()
+       local mptcp_connect="./mptcp_connect -r 20"
+       local local_addr ip
+-      if is_v6 "${connect_addr}"; then
++      if mptcp_lib_is_v6 "${connect_addr}"; then
+               local_addr="::"
+               ip=ipv6
+       else
diff --git a/queue-6.7/selftests-mptcp-rm-subflow-with-v4-v4mapped-addr.patch b/queue-6.7/selftests-mptcp-rm-subflow-with-v4-v4mapped-addr.patch
new file mode 100644 (file)
index 0000000..4eccc8d
--- /dev/null
@@ -0,0 +1,103 @@
+From stable+bounces-25930-greg=kroah.com@vger.kernel.org Mon Mar  4 14:39:58 2024
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Mon,  4 Mar 2024 14:38:33 +0100
+Subject: selftests: mptcp: rm subflow with v4/v4mapped addr
+To: stable@vger.kernel.org, gregkh@linuxfoundation.org
+Cc: MPTCP Upstream <mptcp@lists.linux.dev>, Geliang Tang <tanggeliang@kylinos.cn>, Mat Martineau <martineau@kernel.org>, Matthieu Baerts <matttbe@kernel.org>, Jakub Kicinski <kuba@kernel.org>
+Message-ID: <20240304133827.1989736-12-matttbe@kernel.org>
+
+From: Geliang Tang <tanggeliang@kylinos.cn>
+
+commit 7092dbee23282b6fcf1313fc64e2b92649ee16e8 upstream.
+
+Now both a v4 address and a v4-mapped address are supported when
+destroying a userspace pm subflow, this patch adds a second subflow
+to "userspace pm add & remove address" test, and two subflows could
+be removed two different ways, one with the v4mapped and one with v4.
+
+Closes: https://github.com/multipath-tcp/mptcp_net-next/issues/387
+Fixes: 48d73f609dcc ("selftests: mptcp: update userspace pm addr tests")
+Cc: stable@vger.kernel.org
+Signed-off-by: Geliang Tang <tanggeliang@kylinos.cn>
+Reviewed-by: Mat Martineau <martineau@kernel.org>
+Reviewed-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Link: https://lore.kernel.org/r/20240223-upstream-net-20240223-misc-fixes-v1-2-162e87e48497@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/mptcp/mptcp_join.sh |   28 +++++++++++++-----------
+ tools/testing/selftests/net/mptcp/mptcp_lib.sh  |    4 +--
+ 2 files changed, 18 insertions(+), 14 deletions(-)
+
+--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
+@@ -3328,16 +3328,17 @@ userspace_pm_rm_sf()
+ {
+       local evts=$evts_ns1
+       local t=${3:-1}
+-      local ip=4
++      local ip
+       local tk da dp sp
+       local cnt
+       [ "$1" == "$ns2" ] && evts=$evts_ns2
+-      if mptcp_lib_is_v6 $2; then ip=6; fi
++      [ -n "$(mptcp_lib_evts_get_info "saddr4" "$evts" $t)" ] && ip=4
++      [ -n "$(mptcp_lib_evts_get_info "saddr6" "$evts" $t)" ] && ip=6
+       tk=$(mptcp_lib_evts_get_info token "$evts")
+-      da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t)
+-      dp=$(mptcp_lib_evts_get_info dport "$evts" $t)
+-      sp=$(mptcp_lib_evts_get_info sport "$evts" $t)
++      da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t $2)
++      dp=$(mptcp_lib_evts_get_info dport "$evts" $t $2)
++      sp=$(mptcp_lib_evts_get_info sport "$evts" $t $2)
+       cnt=$(rm_sf_count ${1})
+       ip netns exec $1 ./pm_nl_ctl dsf lip $2 lport $sp \
+@@ -3424,20 +3425,23 @@ userspace_tests()
+       if reset_with_events "userspace pm add & remove address" &&
+          continue_if mptcp_lib_has_file '/proc/sys/net/mptcp/pm_type'; then
+               set_userspace_pm $ns1
+-              pm_nl_set_limits $ns2 1 1
++              pm_nl_set_limits $ns2 2 2
+               speed=5 \
+                       run_tests $ns1 $ns2 10.0.1.1 &
+               local tests_pid=$!
+               wait_mpj $ns1
+               userspace_pm_add_addr $ns1 10.0.2.1 10
+-              chk_join_nr 1 1 1
+-              chk_add_nr 1 1
+-              chk_mptcp_info subflows 1 subflows 1
+-              chk_subflows_total 2 2
+-              chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
++              userspace_pm_add_addr $ns1 10.0.3.1 20
++              chk_join_nr 2 2 2
++              chk_add_nr 2 2
++              chk_mptcp_info subflows 2 subflows 2
++              chk_subflows_total 3 3
++              chk_mptcp_info add_addr_signal 2 add_addr_accepted 2
+               userspace_pm_rm_addr $ns1 10
+               userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
+-              chk_rm_nr 1 1 invert
++              userspace_pm_rm_addr $ns1 20
++              userspace_pm_rm_sf $ns1 10.0.3.1 $SUB_ESTABLISHED
++              chk_rm_nr 2 2 invert
+               chk_mptcp_info subflows 0 subflows 0
+               chk_subflows_total 1 1
+               kill_events_pids
+--- a/tools/testing/selftests/net/mptcp/mptcp_lib.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_lib.sh
+@@ -213,9 +213,9 @@ mptcp_lib_get_info_value() {
+       grep "${2}" | sed -n 's/.*\('"${1}"':\)\([0-9a-f:.]*\).*$/\2/p;q'
+ }
+-# $1: info name ; $2: evts_ns ; $3: event type
++# $1: info name ; $2: evts_ns ; [$3: event type; [$4: addr]]
+ mptcp_lib_evts_get_info() {
+-      mptcp_lib_get_info_value "${1}" "^type:${3:-1}," < "${2}"
++      grep "${4:-}" "${2}" | mptcp_lib_get_info_value "${1}" "^type:${3:-1},"
+ }
+ # $1: PID
diff --git a/queue-6.7/selftests-mptcp-update-userspace-pm-test-helpers.patch b/queue-6.7/selftests-mptcp-update-userspace-pm-test-helpers.patch
new file mode 100644 (file)
index 0000000..58da4a7
--- /dev/null
@@ -0,0 +1,191 @@
+From stable+bounces-25928-greg=kroah.com@vger.kernel.org Mon Mar  4 14:39:55 2024
+From: "Matthieu Baerts (NGI0)" <matttbe@kernel.org>
+Date: Mon,  4 Mar 2024 14:38:31 +0100
+Subject: selftests: mptcp: update userspace pm test helpers
+To: stable@vger.kernel.org, gregkh@linuxfoundation.org
+Cc: MPTCP Upstream <mptcp@lists.linux.dev>, Geliang Tang <geliang.tang@suse.com>, Matthieu Baerts <matttbe@kernel.org>, Mat Martineau <martineau@kernel.org>, Jakub Kicinski <kuba@kernel.org>
+Message-ID: <20240304133827.1989736-10-matttbe@kernel.org>
+
+From: Geliang Tang <geliang.tang@suse.com>
+
+commit 757c828ce94905a2975873d5e90a376c701b2b90 upstream.
+
+This patch adds a new argument namespace to userspace_pm_add_addr() and
+userspace_pm_add_sf() to make these two helper more versatile.
+
+Add two more versatile helpers for userspace pm remove subflow or address:
+userspace_pm_rm_addr() and userspace_pm_rm_sf(). The original test helpers
+userspace_pm_rm_sf_addr_ns1() and userspace_pm_rm_sf_addr_ns2() can be
+replaced by these new helpers.
+
+Reviewed-by: Matthieu Baerts <matttbe@kernel.org>
+Signed-off-by: Geliang Tang <geliang.tang@suse.com>
+Signed-off-by: Mat Martineau <martineau@kernel.org>
+Link: https://lore.kernel.org/r/20231128-send-net-next-2023107-v4-4-8d6b94150f6b@kernel.org
+Signed-off-by: Jakub Kicinski <kuba@kernel.org>
+Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ tools/testing/selftests/net/mptcp/mptcp_join.sh |  100 +++++++++++-------------
+ 1 file changed, 49 insertions(+), 51 deletions(-)
+
+--- a/tools/testing/selftests/net/mptcp/mptcp_join.sh
++++ b/tools/testing/selftests/net/mptcp/mptcp_join.sh
+@@ -2824,6 +2824,7 @@ backup_tests()
+       fi
+ }
++SUB_ESTABLISHED=10 # MPTCP_EVENT_SUB_ESTABLISHED
+ LISTENER_CREATED=15 #MPTCP_EVENT_LISTENER_CREATED
+ LISTENER_CLOSED=16  #MPTCP_EVENT_LISTENER_CLOSED
+@@ -3284,75 +3285,70 @@ fail_tests()
+       fi
+ }
++# $1: ns ; $2: addr ; $3: id
+ userspace_pm_add_addr()
+ {
+-      local addr=$1
+-      local id=$2
++      local evts=$evts_ns1
+       local tk
+-      tk=$(grep "type:1," "$evts_ns1" |
+-           sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
+-      ip netns exec $ns1 ./pm_nl_ctl ann $addr token $tk id $id
++      [ "$1" == "$ns2" ] && evts=$evts_ns2
++      tk=$(mptcp_lib_evts_get_info token "$evts")
++
++      ip netns exec $1 ./pm_nl_ctl ann $2 token $tk id $3
+       sleep 1
+ }
+-userspace_pm_rm_sf_addr_ns1()
++# $1: ns ; $2: id
++userspace_pm_rm_addr()
+ {
+-      local addr=$1
+-      local id=$2
+-      local tk sp da dp
+-      local cnt_addr cnt_sf
+-
+-      tk=$(grep "type:1," "$evts_ns1" |
+-           sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q')
+-      sp=$(grep "type:10" "$evts_ns1" |
+-           sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+-      da=$(grep "type:10" "$evts_ns1" |
+-           sed -n 's/.*\(daddr6:\)\([0-9a-f:.]*\).*$/\2/p;q')
+-      dp=$(grep "type:10" "$evts_ns1" |
+-           sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q')
+-      cnt_addr=$(rm_addr_count ${ns1})
+-      cnt_sf=$(rm_sf_count ${ns1})
+-      ip netns exec $ns1 ./pm_nl_ctl rem token $tk id $id
+-      ip netns exec $ns1 ./pm_nl_ctl dsf lip "::ffff:$addr" \
+-                              lport $sp rip $da rport $dp token $tk
+-      wait_rm_addr $ns1 "${cnt_addr}"
+-      wait_rm_sf $ns1 "${cnt_sf}"
++      local evts=$evts_ns1
++      local tk
++      local cnt
++
++      [ "$1" == "$ns2" ] && evts=$evts_ns2
++      tk=$(mptcp_lib_evts_get_info token "$evts")
++
++      cnt=$(rm_addr_count ${1})
++      ip netns exec $1 ./pm_nl_ctl rem token $tk id $2
++      wait_rm_addr $1 "${cnt}"
+ }
++# $1: ns ; $2: addr ; $3: id
+ userspace_pm_add_sf()
+ {
+-      local addr=$1
+-      local id=$2
++      local evts=$evts_ns1
+       local tk da dp
+-      tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
+-      da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
+-      dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
+-      ip netns exec $ns2 ./pm_nl_ctl csf lip $addr lid $id \
++      [ "$1" == "$ns2" ] && evts=$evts_ns2
++      tk=$(mptcp_lib_evts_get_info token "$evts")
++      da=$(mptcp_lib_evts_get_info daddr4 "$evts")
++      dp=$(mptcp_lib_evts_get_info dport "$evts")
++
++      ip netns exec $1 ./pm_nl_ctl csf lip $2 lid $3 \
+                               rip $da rport $dp token $tk
+       sleep 1
+ }
+-userspace_pm_rm_sf_addr_ns2()
++# $1: ns ; $2: addr $3: event type
++userspace_pm_rm_sf()
+ {
+-      local addr=$1
+-      local id=$2
++      local evts=$evts_ns1
++      local t=${3:-1}
++      local ip=4
+       local tk da dp sp
+-      local cnt_addr cnt_sf
++      local cnt
++
++      [ "$1" == "$ns2" ] && evts=$evts_ns2
++      if is_v6 $2; then ip=6; fi
++      tk=$(mptcp_lib_evts_get_info token "$evts")
++      da=$(mptcp_lib_evts_get_info "daddr$ip" "$evts" $t)
++      dp=$(mptcp_lib_evts_get_info dport "$evts" $t)
++      sp=$(mptcp_lib_evts_get_info sport "$evts" $t)
+-      tk=$(sed -n 's/.*\(token:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
+-      da=$(sed -n 's/.*\(daddr4:\)\([0-9.]*\).*$/\2/p;q' "$evts_ns2")
+-      dp=$(sed -n 's/.*\(dport:\)\([[:digit:]]*\).*$/\2/p;q' "$evts_ns2")
+-      sp=$(grep "type:10" "$evts_ns2" |
+-           sed -n 's/.*\(sport:\)\([[:digit:]]*\).*$/\2/p;q')
+-      cnt_addr=$(rm_addr_count ${ns2})
+-      cnt_sf=$(rm_sf_count ${ns2})
+-      ip netns exec $ns2 ./pm_nl_ctl rem token $tk id $id
+-      ip netns exec $ns2 ./pm_nl_ctl dsf lip $addr lport $sp \
++      cnt=$(rm_sf_count ${1})
++      ip netns exec $1 ./pm_nl_ctl dsf lip $2 lport $sp \
+                               rip $da rport $dp token $tk
+-      wait_rm_addr $ns2 "${cnt_addr}"
+-      wait_rm_sf $ns2 "${cnt_sf}"
++      wait_rm_sf $1 "${cnt}"
+ }
+ userspace_tests()
+@@ -3439,13 +3435,14 @@ userspace_tests()
+                       run_tests $ns1 $ns2 10.0.1.1 &
+               local tests_pid=$!
+               wait_mpj $ns1
+-              userspace_pm_add_addr 10.0.2.1 10
++              userspace_pm_add_addr $ns1 10.0.2.1 10
+               chk_join_nr 1 1 1
+               chk_add_nr 1 1
+               chk_mptcp_info subflows 1 subflows 1
+               chk_subflows_total 2 2
+               chk_mptcp_info add_addr_signal 1 add_addr_accepted 1
+-              userspace_pm_rm_sf_addr_ns1 10.0.2.1 10
++              userspace_pm_rm_addr $ns1 10
++              userspace_pm_rm_sf $ns1 "::ffff:10.0.2.1" $SUB_ESTABLISHED
+               chk_rm_nr 1 1 invert
+               chk_mptcp_info subflows 0 subflows 0
+               chk_subflows_total 1 1
+@@ -3462,11 +3459,12 @@ userspace_tests()
+                       run_tests $ns1 $ns2 10.0.1.1 &
+               local tests_pid=$!
+               wait_mpj $ns2
+-              userspace_pm_add_sf 10.0.3.2 20
++              userspace_pm_add_sf $ns2 10.0.3.2 20
+               chk_join_nr 1 1 1
+               chk_mptcp_info subflows 1 subflows 1
+               chk_subflows_total 2 2
+-              userspace_pm_rm_sf_addr_ns2 10.0.3.2 20
++              userspace_pm_rm_addr $ns2 20
++              userspace_pm_rm_sf $ns2 10.0.3.2 $SUB_ESTABLISHED
+               chk_rm_nr 1 1
+               chk_mptcp_info subflows 0 subflows 0
+               chk_subflows_total 1 1
index 2cfee88203258d8e8236f379a978f7dc7d2d03a4..36c220a91a3ff92a72061a6e3a170fd735c016df 100644 (file)
@@ -155,3 +155,8 @@ x86-entry_32-add-verw-just-before-userspace-transition.patch
 x86-bugs-use-alternative-instead-of-mds_user_clear-static-key.patch
 kvm-vmx-use-bt-jnc-i.e.-eflags.cf-to-select-vmresume-vs.-vmlaunch.patch
 kvm-vmx-move-verw-closer-to-vmentry-for-mds-mitigation.patch
+selftests-mptcp-add-evts_get_info-helper.patch
+selftests-mptcp-add-chk_subflows_total-helper.patch
+selftests-mptcp-update-userspace-pm-test-helpers.patch
+selftests-mptcp-add-mptcp_lib_is_v6.patch
+selftests-mptcp-rm-subflow-with-v4-v4mapped-addr.patch