mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-25 03:55:09 +08:00
6254ad4088
IDs are supposed to be between 0 and 255.
In pm_nl_ctl, for both the 'add' and 'get' instruction, the ID is casted
in a u_int8_t. So if we give 256, we will delete ID 0. Obviously, the
goal is not to delete this ID by giving 256.
We could modify pm_nl_ctl and stop if the ID is negative or higher than
255 but probably better not to increase the number of lines for such
things in this tool which is only used in selftests. Instead, we use it
within the limits.
This modification also means that we will no longer add a new ID for the
2nd entry. That's why we removed an expected entry from the dump and
introduced with
commit dc8eb10e95
("selftests: mptcp: add testcases for setting the address ID").
So now we delete ID 9 like before and we add entries for IDs 10 to 255
that are deleted just after.
Note that this could be seen as a fix but it was not really an issue so
far: we were simply playing with ID 0/1 once again. With the following
commit ("selftests: mptcp: add addr argument for del_addr"), it will be
different because ID 0 is going to required an address. We don't want
errors when trying to delete ID 0 without the address argument.
Acked-and-tested-by: Geliang Tang <geliangtang@gmail.com>
Signed-off-by: Matthieu Baerts <matthieu.baerts@tessares.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
168 lines
4.4 KiB
Bash
Executable File
168 lines
4.4 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
ksft_skip=4
|
|
ret=0
|
|
|
|
usage() {
|
|
echo "Usage: $0 [ -h ]"
|
|
}
|
|
|
|
|
|
while getopts "$optstring" option;do
|
|
case "$option" in
|
|
"h")
|
|
usage $0
|
|
exit 0
|
|
;;
|
|
"?")
|
|
usage $0
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
sec=$(date +%s)
|
|
rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
|
|
ns1="ns1-$rndh"
|
|
err=$(mktemp)
|
|
ret=0
|
|
|
|
cleanup()
|
|
{
|
|
rm -f $err
|
|
ip netns del $ns1
|
|
}
|
|
|
|
ip -Version > /dev/null 2>&1
|
|
if [ $? -ne 0 ];then
|
|
echo "SKIP: Could not run test without ip tool"
|
|
exit $ksft_skip
|
|
fi
|
|
|
|
trap cleanup EXIT
|
|
|
|
ip netns add $ns1 || exit $ksft_skip
|
|
ip -net $ns1 link set lo up
|
|
ip netns exec $ns1 sysctl -q net.mptcp.enabled=1
|
|
|
|
check()
|
|
{
|
|
local cmd="$1"
|
|
local expected="$2"
|
|
local msg="$3"
|
|
local out=`$cmd 2>$err`
|
|
local cmd_ret=$?
|
|
|
|
printf "%-50s %s" "$msg"
|
|
if [ $cmd_ret -ne 0 ]; then
|
|
echo "[FAIL] command execution '$cmd' stderr "
|
|
cat $err
|
|
ret=1
|
|
elif [ "$out" = "$expected" ]; then
|
|
echo "[ OK ]"
|
|
else
|
|
echo -n "[FAIL] "
|
|
echo "expected '$expected' got '$out'"
|
|
ret=1
|
|
fi
|
|
}
|
|
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
|
|
check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
|
|
subflows 0" "defaults limits"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr"
|
|
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
|
|
"id 1 flags 10.0.1.1
|
|
id 2 flags subflow dev lo 10.0.1.2
|
|
id 3 flags signal,backup 10.0.1.3" "dump addrs"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl del 2
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" \
|
|
"id 1 flags 10.0.1.1
|
|
id 3 flags signal,backup 10.0.1.3" "dump addrs after del"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment"
|
|
|
|
for i in `seq 5 9`; do
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
|
|
done
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit"
|
|
check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl del 9
|
|
for i in `seq 10 255`; do
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
|
|
ip netns exec $ns1 ./pm_nl_ctl del $i
|
|
done
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
|
|
id 3 flags signal,backup 10.0.1.3
|
|
id 4 flags signal 10.0.1.4
|
|
id 5 flags signal 10.0.1.5
|
|
id 6 flags signal 10.0.1.6
|
|
id 7 flags signal 10.0.1.7
|
|
id 8 flags signal 10.0.1.8" "id limit"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl flush
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl limits 9 1
|
|
check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
|
|
subflows 0" "rcv addrs above hard limit"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl limits 1 9
|
|
check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
|
|
subflows 0" "subflows above hard limit"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl limits 8 8
|
|
check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
|
|
subflows 8" "set limits"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl flush
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 id 100
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1
|
|
id 2 flags 10.0.1.2
|
|
id 3 flags 10.0.1.7
|
|
id 4 flags 10.0.1.8
|
|
id 100 flags 10.0.1.3
|
|
id 101 flags 10.0.1.4
|
|
id 254 flags 10.0.1.5
|
|
id 255 flags 10.0.1.6" "set ids"
|
|
|
|
ip netns exec $ns1 ./pm_nl_ctl flush
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.2 id 254
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.3
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.4
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
|
|
ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
|
|
check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.0.1
|
|
id 2 flags 10.0.0.4
|
|
id 3 flags 10.0.0.6
|
|
id 4 flags 10.0.0.7
|
|
id 5 flags 10.0.0.8
|
|
id 253 flags 10.0.0.5
|
|
id 254 flags 10.0.0.2
|
|
id 255 flags 10.0.0.3" "wrap-around ids"
|
|
|
|
exit $ret
|