]> git.dujemihanovic.xyz Git - linux.git/commitdiff
selftests: mptcp: join: validate backup in MPJ
authorMatthieu Baerts (NGI0) <matttbe@kernel.org>
Sat, 27 Jul 2024 10:01:27 +0000 (12:01 +0200)
committerPaolo Abeni <pabeni@redhat.com>
Tue, 30 Jul 2024 08:27:30 +0000 (10:27 +0200)
A peer can notify the other one that a subflow has to be treated as
"backup" by two different ways: either by sending a dedicated MP_PRIO
notification, or by setting the backup flag in the MP_JOIN handshake.

The selftests were previously monitoring the former, but not the latter.
This is what is now done here by looking at these new MIB counters when
validating the 'backup' cases:

  MPTcpExtMPJoinSynBackupRx
  MPTcpExtMPJoinSynAckBackupRx

The 'Fixes' tag here below is the same as the one from the previous
commit: this patch here is not fixing anything wrong in the selftests,
but it will help to validate a new fix for an issue introduced by this
commit ID.

Fixes: 4596a2c1b7f5 ("mptcp: allow creating non-backup subflows")
Cc: stable@vger.kernel.org
Reviewed-by: Mat Martineau <martineau@kernel.org>
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Paolo Abeni <pabeni@redhat.com>
tools/testing/selftests/net/mptcp/mptcp_join.sh

index 55d84a1bde15de0be5cca0b7abc877e2e02b2c4f..e6c8d86017f3dbfd5a18c9a2e7f10c7b2252d57a 100755 (executable)
@@ -1634,6 +1634,8 @@ chk_prio_nr()
 {
        local mp_prio_nr_tx=$1
        local mp_prio_nr_rx=$2
+       local mpj_syn=$3
+       local mpj_syn_ack=$4
        local count
 
        print_check "ptx"
@@ -1655,6 +1657,26 @@ chk_prio_nr()
        else
                print_ok
        fi
+
+       print_check "syn backup"
+       count=$(mptcp_lib_get_counter ${ns1} "MPTcpExtMPJoinSynBackupRx")
+       if [ -z "$count" ]; then
+               print_skip
+       elif [ "$count" != "$mpj_syn" ]; then
+               fail_test "got $count JOIN[s] syn with Backup expected $mpj_syn"
+       else
+               print_ok
+       fi
+
+       print_check "synack backup"
+       count=$(mptcp_lib_get_counter ${ns2} "MPTcpExtMPJoinSynAckBackupRx")
+       if [ -z "$count" ]; then
+               print_skip
+       elif [ "$count" != "$mpj_syn_ack" ]; then
+               fail_test "got $count JOIN[s] synack with Backup expected $mpj_syn_ack"
+       else
+               print_ok
+       fi
 }
 
 chk_subflow_nr()
@@ -2612,7 +2634,7 @@ backup_tests()
                sflags=nobackup speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
-               chk_prio_nr 0 1
+               chk_prio_nr 0 1 1 0
        fi
 
        # single address, backup
@@ -2625,7 +2647,7 @@ backup_tests()
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
                chk_add_nr 1 1
-               chk_prio_nr 1 1
+               chk_prio_nr 1 1 0 0
        fi
 
        # single address with port, backup
@@ -2638,7 +2660,7 @@ backup_tests()
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 1
                chk_add_nr 1 1
-               chk_prio_nr 1 1
+               chk_prio_nr 1 1 0 0
        fi
 
        if reset "mpc backup" &&
@@ -2647,7 +2669,7 @@ backup_tests()
                speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 0 0 0
-               chk_prio_nr 0 1
+               chk_prio_nr 0 1 0 0
        fi
 
        if reset "mpc backup both sides" &&
@@ -2657,7 +2679,7 @@ backup_tests()
                speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 0 0 0
-               chk_prio_nr 1 1
+               chk_prio_nr 1 1 0 0
        fi
 
        if reset "mpc switch to backup" &&
@@ -2666,7 +2688,7 @@ backup_tests()
                sflags=backup speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 0 0 0
-               chk_prio_nr 0 1
+               chk_prio_nr 0 1 0 0
        fi
 
        if reset "mpc switch to backup both sides" &&
@@ -2676,7 +2698,7 @@ backup_tests()
                sflags=backup speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 0 0 0
-               chk_prio_nr 1 1
+               chk_prio_nr 1 1 0 0
        fi
 }
 
@@ -3053,7 +3075,7 @@ fullmesh_tests()
                addr_nr_ns2=1 sflags=backup,fullmesh speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 2 2 2
-               chk_prio_nr 0 1
+               chk_prio_nr 0 1 1 0
                chk_rm_nr 0 1
        fi
 
@@ -3066,7 +3088,7 @@ fullmesh_tests()
                sflags=nobackup,nofullmesh speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 2 2 2
-               chk_prio_nr 0 1
+               chk_prio_nr 0 1 1 0
                chk_rm_nr 0 1
        fi
 }
@@ -3318,7 +3340,7 @@ userspace_tests()
                sflags=backup speed=slow \
                        run_tests $ns1 $ns2 10.0.1.1
                chk_join_nr 1 1 0
-               chk_prio_nr 0 0
+               chk_prio_nr 0 0 0 0
        fi
 
        # userspace pm type prevents rm_addr