Back to home page

OSCL-LXR

 
 

    


0001 #!/bin/bash
0002 # SPDX-License-Identifier: GPL-2.0
0003 
0004 ksft_skip=4
0005 ret=0
0006 
0007 usage() {
0008         echo "Usage: $0 [ -h ]"
0009 }
0010 
0011 
0012 while getopts "$optstring" option;do
0013         case "$option" in
0014         "h")
0015                 usage $0
0016                 exit 0
0017                 ;;
0018         "?")
0019                 usage $0
0020                 exit 1
0021                 ;;
0022         esac
0023 done
0024 
0025 sec=$(date +%s)
0026 rndh=$(printf %x $sec)-$(mktemp -u XXXXXX)
0027 ns1="ns1-$rndh"
0028 err=$(mktemp)
0029 ret=0
0030 
0031 cleanup()
0032 {
0033         rm -f $err
0034         ip netns del $ns1
0035 }
0036 
0037 ip -Version > /dev/null 2>&1
0038 if [ $? -ne 0 ];then
0039         echo "SKIP: Could not run test without ip tool"
0040         exit $ksft_skip
0041 fi
0042 
0043 trap cleanup EXIT
0044 
0045 ip netns add $ns1 || exit $ksft_skip
0046 ip -net $ns1 link set lo up
0047 ip netns exec $ns1 sysctl -q net.mptcp.enabled=1
0048 
0049 check()
0050 {
0051         local cmd="$1"
0052         local expected="$2"
0053         local msg="$3"
0054         local out=`$cmd 2>$err`
0055         local cmd_ret=$?
0056 
0057         printf "%-50s %s" "$msg"
0058         if [ $cmd_ret -ne 0 ]; then
0059                 echo "[FAIL] command execution '$cmd' stderr "
0060                 cat $err
0061                 ret=1
0062         elif [ "$out" = "$expected" ]; then
0063                 echo "[ OK ]"
0064         else
0065                 echo -n "[FAIL] "
0066                 echo "expected '$expected' got '$out'"
0067                 ret=1
0068         fi
0069 }
0070 
0071 check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list"
0072 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
0073 subflows 2" "defaults limits"
0074 
0075 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
0076 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo
0077 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup
0078 check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags  10.0.1.1" "simple add/get addr"
0079 
0080 check "ip netns exec $ns1 ./pm_nl_ctl dump" \
0081 "id 1 flags  10.0.1.1
0082 id 2 flags subflow dev lo 10.0.1.2
0083 id 3 flags signal,backup 10.0.1.3" "dump addrs"
0084 
0085 ip netns exec $ns1 ./pm_nl_ctl del 2
0086 check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr"
0087 check "ip netns exec $ns1 ./pm_nl_ctl dump" \
0088 "id 1 flags  10.0.1.1
0089 id 3 flags signal,backup 10.0.1.3" "dump addrs after del"
0090 
0091 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3
0092 check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr"
0093 
0094 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 flags signal
0095 check "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment"
0096 
0097 for i in `seq 5 9`; do
0098         ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1
0099 done
0100 check "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit"
0101 check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit"
0102 
0103 ip netns exec $ns1 ./pm_nl_ctl del 9
0104 for i in `seq 10 255`; do
0105         ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 id $i
0106         ip netns exec $ns1 ./pm_nl_ctl del $i
0107 done
0108 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.1.1
0109 id 3 flags signal,backup 10.0.1.3
0110 id 4 flags signal 10.0.1.4
0111 id 5 flags signal 10.0.1.5
0112 id 6 flags signal 10.0.1.6
0113 id 7 flags signal 10.0.1.7
0114 id 8 flags signal 10.0.1.8" "id limit"
0115 
0116 ip netns exec $ns1 ./pm_nl_ctl flush
0117 check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs"
0118 
0119 ip netns exec $ns1 ./pm_nl_ctl limits 9 1
0120 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
0121 subflows 2" "rcv addrs above hard limit"
0122 
0123 ip netns exec $ns1 ./pm_nl_ctl limits 1 9
0124 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0
0125 subflows 2" "subflows above hard limit"
0126 
0127 ip netns exec $ns1 ./pm_nl_ctl limits 8 8
0128 check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8
0129 subflows 8" "set limits"
0130 
0131 ip netns exec $ns1 ./pm_nl_ctl flush
0132 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1
0133 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2
0134 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 id 100
0135 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4
0136 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.5 id 254
0137 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.6
0138 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.7
0139 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.8
0140 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.1.1
0141 id 2 flags  10.0.1.2
0142 id 3 flags  10.0.1.7
0143 id 4 flags  10.0.1.8
0144 id 100 flags  10.0.1.3
0145 id 101 flags  10.0.1.4
0146 id 254 flags  10.0.1.5
0147 id 255 flags  10.0.1.6" "set ids"
0148 
0149 ip netns exec $ns1 ./pm_nl_ctl flush
0150 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.1
0151 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.2 id 254
0152 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.3
0153 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.4
0154 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.5 id 253
0155 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.6
0156 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.7
0157 ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.8
0158 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags  10.0.0.1
0159 id 2 flags  10.0.0.4
0160 id 3 flags  10.0.0.6
0161 id 4 flags  10.0.0.7
0162 id 5 flags  10.0.0.8
0163 id 253 flags  10.0.0.5
0164 id 254 flags  10.0.0.2
0165 id 255 flags  10.0.0.3" "wrap-around ids"
0166 
0167 ip netns exec $ns1 ./pm_nl_ctl flush
0168 ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 flags subflow
0169 ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags backup
0170 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
0171 subflow,backup 10.0.1.1" "set flags (backup)"
0172 ip netns exec $ns1 ./pm_nl_ctl set 10.0.1.1 flags nobackup
0173 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
0174 subflow 10.0.1.1" "          (nobackup)"
0175 ip netns exec $ns1 ./pm_nl_ctl set id 1 flags fullmesh
0176 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
0177 subflow,fullmesh 10.0.1.1" "          (fullmesh)"
0178 ip netns exec $ns1 ./pm_nl_ctl set id 1 flags nofullmesh
0179 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
0180 subflow 10.0.1.1" "          (nofullmesh)"
0181 ip netns exec $ns1 ./pm_nl_ctl set id 1 flags backup,fullmesh
0182 check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags \
0183 subflow,backup,fullmesh 10.0.1.1" "          (backup,fullmesh)"
0184 
0185 exit $ret