18c2ecf20Sopenharmony_ci#!/bin/bash 28c2ecf20Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0 38c2ecf20Sopenharmony_ci 48c2ecf20Sopenharmony_ci. "$(dirname "${0}")/mptcp_lib.sh" 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciksft_skip=4 78c2ecf20Sopenharmony_ciret=0 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciusage() { 108c2ecf20Sopenharmony_ci echo "Usage: $0 [ -h ]" 118c2ecf20Sopenharmony_ci} 128c2ecf20Sopenharmony_ci 138c2ecf20Sopenharmony_ci 148c2ecf20Sopenharmony_ciwhile getopts "$optstring" option;do 158c2ecf20Sopenharmony_ci case "$option" in 168c2ecf20Sopenharmony_ci "h") 178c2ecf20Sopenharmony_ci usage $0 188c2ecf20Sopenharmony_ci exit 0 198c2ecf20Sopenharmony_ci ;; 208c2ecf20Sopenharmony_ci "?") 218c2ecf20Sopenharmony_ci usage $0 228c2ecf20Sopenharmony_ci exit 1 238c2ecf20Sopenharmony_ci ;; 248c2ecf20Sopenharmony_ci esac 258c2ecf20Sopenharmony_cidone 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_cisec=$(date +%s) 288c2ecf20Sopenharmony_cirndh=$(printf %x $sec)-$(mktemp -u XXXXXX) 298c2ecf20Sopenharmony_cins1="ns1-$rndh" 308c2ecf20Sopenharmony_cierr=$(mktemp) 318c2ecf20Sopenharmony_ciret=0 328c2ecf20Sopenharmony_ci 338c2ecf20Sopenharmony_cicleanup() 348c2ecf20Sopenharmony_ci{ 358c2ecf20Sopenharmony_ci rm -f $err 368c2ecf20Sopenharmony_ci ip netns del $ns1 378c2ecf20Sopenharmony_ci} 388c2ecf20Sopenharmony_ci 398c2ecf20Sopenharmony_cimptcp_lib_check_mptcp 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciip -Version > /dev/null 2>&1 428c2ecf20Sopenharmony_ciif [ $? -ne 0 ];then 438c2ecf20Sopenharmony_ci echo "SKIP: Could not run test without ip tool" 448c2ecf20Sopenharmony_ci exit $ksft_skip 458c2ecf20Sopenharmony_cifi 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_citrap cleanup EXIT 488c2ecf20Sopenharmony_ci 498c2ecf20Sopenharmony_ciip netns add $ns1 || exit $ksft_skip 508c2ecf20Sopenharmony_ciip -net $ns1 link set lo up 518c2ecf20Sopenharmony_ciip netns exec $ns1 sysctl -q net.mptcp.enabled=1 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_cicheck() 548c2ecf20Sopenharmony_ci{ 558c2ecf20Sopenharmony_ci local cmd="$1" 568c2ecf20Sopenharmony_ci local expected="$2" 578c2ecf20Sopenharmony_ci local msg="$3" 588c2ecf20Sopenharmony_ci local out=`$cmd 2>$err` 598c2ecf20Sopenharmony_ci local cmd_ret=$? 608c2ecf20Sopenharmony_ci 618c2ecf20Sopenharmony_ci printf "%-50s %s" "$msg" 628c2ecf20Sopenharmony_ci if [ $cmd_ret -ne 0 ]; then 638c2ecf20Sopenharmony_ci echo "[FAIL] command execution '$cmd' stderr " 648c2ecf20Sopenharmony_ci cat $err 658c2ecf20Sopenharmony_ci ret=1 668c2ecf20Sopenharmony_ci elif [ "$out" = "$expected" ]; then 678c2ecf20Sopenharmony_ci echo "[ OK ]" 688c2ecf20Sopenharmony_ci else 698c2ecf20Sopenharmony_ci echo -n "[FAIL] " 708c2ecf20Sopenharmony_ci echo "expected '$expected' got '$out'" 718c2ecf20Sopenharmony_ci ret=1 728c2ecf20Sopenharmony_ci fi 738c2ecf20Sopenharmony_ci} 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list" 768c2ecf20Sopenharmony_ci 778c2ecf20Sopenharmony_cidefault_limits="$(ip netns exec $ns1 ./pm_nl_ctl limits)" 788c2ecf20Sopenharmony_ciif mptcp_lib_expect_all_features; then 798c2ecf20Sopenharmony_ci check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0 808c2ecf20Sopenharmony_cisubflows 0" "defaults limits" 818c2ecf20Sopenharmony_cifi 828c2ecf20Sopenharmony_ci 838c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 848c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo 858c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup 868c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr" 878c2ecf20Sopenharmony_ci 888c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl dump" \ 898c2ecf20Sopenharmony_ci"id 1 flags 10.0.1.1 908c2ecf20Sopenharmony_ciid 2 flags subflow dev lo 10.0.1.2 918c2ecf20Sopenharmony_ciid 3 flags signal,backup 10.0.1.3" "dump addrs" 928c2ecf20Sopenharmony_ci 938c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl del 2 948c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr" 958c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl dump" \ 968c2ecf20Sopenharmony_ci"id 1 flags 10.0.1.1 978c2ecf20Sopenharmony_ciid 3 flags signal,backup 10.0.1.3" "dump addrs after del" 988c2ecf20Sopenharmony_ci 998c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 1008c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr" 1018c2ecf20Sopenharmony_ci 1028c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 id 10 flags signal 1038c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment" 1048c2ecf20Sopenharmony_ci 1058c2ecf20Sopenharmony_cifor i in `seq 5 9`; do 1068c2ecf20Sopenharmony_ci ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1 1078c2ecf20Sopenharmony_cidone 1088c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit" 1098c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit" 1108c2ecf20Sopenharmony_ci 1118c2ecf20Sopenharmony_cifor i in `seq 9 256`; do 1128c2ecf20Sopenharmony_ci ip netns exec $ns1 ./pm_nl_ctl del $i 1138c2ecf20Sopenharmony_ci ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 1148c2ecf20Sopenharmony_cidone 1158c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1 1168c2ecf20Sopenharmony_ciid 3 flags signal,backup 10.0.1.3 1178c2ecf20Sopenharmony_ciid 4 flags signal 10.0.1.4 1188c2ecf20Sopenharmony_ciid 5 flags signal 10.0.1.5 1198c2ecf20Sopenharmony_ciid 6 flags signal 10.0.1.6 1208c2ecf20Sopenharmony_ciid 7 flags signal 10.0.1.7 1218c2ecf20Sopenharmony_ciid 8 flags signal 10.0.1.8" "id limit" 1228c2ecf20Sopenharmony_ci 1238c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl flush 1248c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs" 1258c2ecf20Sopenharmony_ci 1268c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl limits 9 1 1278c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "rcv addrs above hard limit" 1288c2ecf20Sopenharmony_ci 1298c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl limits 1 9 1308c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl limits" "$default_limits" "subflows above hard limit" 1318c2ecf20Sopenharmony_ci 1328c2ecf20Sopenharmony_ciip netns exec $ns1 ./pm_nl_ctl limits 8 8 1338c2ecf20Sopenharmony_cicheck "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8 1348c2ecf20Sopenharmony_cisubflows 8" "set limits" 1358c2ecf20Sopenharmony_ci 1368c2ecf20Sopenharmony_ciexit $ret 137