selftests: mptcp: join: validate backup in MPJ

commit 935ff5bb8a upstream.

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: 4596a2c1b7 ("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>
[ Conflicts in mptcp_join.sh because the check are done has changed,
  e.g. in commit 03668c65d1 ("selftests: mptcp: join: rework detailed
  report"), or commit 985de45923 ("selftests: mptcp: centralize stats
  dumping"), etc. Adaptations have been made to use the old way, similar
  to what is done just above.
  Also, in this version, some subtests are missing. Only the two using
  chk_prio_nr() have been modified. ]
Signed-off-by: Matthieu Baerts (NGI0) <matttbe@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Matthieu Baerts (NGI0) 2024-08-09 11:10:03 +02:00 committed by Greg Kroah-Hartman
parent 3c7dafc171
commit 34558a433f

View File

@ -925,6 +925,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
local dump_stats
@ -952,6 +954,30 @@ chk_prio_nr()
echo "[ ok ]"
fi
printf "%-39s %s" " " "bkp syn"
count=$(get_counter ${ns1} "MPTcpExtMPJoinSynBackupRx")
if [ -z "$count" ]; then
echo -n "[skip]"
elif [ "$count" != "$mpj_syn" ]; then
echo "[fail] got $count JOIN[s] syn with Backup expected $mpj_syn"
ret=1
dump_stats=1
else
echo -n "[ ok ]"
fi
echo -n " - synack "
count=$(get_counter ${ns2} "MPTcpExtMPJoinSynAckBackupRx")
if [ -z "$count" ]; then
echo "[skip]"
elif [ "$count" != "$mpj_syn_ack" ]; then
echo "[fail] got $count JOIN[s] synack with Backup expected $mpj_syn_ack"
ret=1
dump_stats=1
else
echo "[ ok ]"
fi
if [ "${dump_stats}" = 1 ]; then
echo Server ns stats
ip netns exec $ns1 nstat -as | grep MPTcp
@ -1557,7 +1583,7 @@ backup_tests()
ip netns exec $ns2 ./pm_nl_ctl add 10.0.3.2 flags subflow,backup
run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow nobackup
chk_join_nr "single subflow, backup" 1 1 1
chk_prio_nr 0 1
chk_prio_nr 0 1 1 0
# single address, backup
reset
@ -1567,7 +1593,7 @@ backup_tests()
run_tests $ns1 $ns2 10.0.1.1 0 0 0 slow backup
chk_join_nr "single address, backup" 1 1 1
chk_add_nr 1 1
chk_prio_nr 1 0
chk_prio_nr 1 0 0 0
}
add_addr_ports_tests()