]>
Commit | Line | Data |
---|---|---|
eedbc685 PA |
1 | #!/bin/bash |
2 | # SPDX-License-Identifier: GPL-2.0 | |
3 | ||
4 | ksft_skip=4 | |
5 | ret=0 | |
6 | ||
7 | usage() { | |
8 | echo "Usage: $0 [ -h ]" | |
9 | } | |
10 | ||
11 | ||
12 | while getopts "$optstring" option;do | |
13 | case "$option" in | |
14 | "h") | |
15 | usage $0 | |
16 | exit 0 | |
17 | ;; | |
18 | "?") | |
19 | usage $0 | |
20 | exit 1 | |
21 | ;; | |
22 | esac | |
23 | done | |
24 | ||
25 | sec=$(date +%s) | |
26 | rndh=$(printf %x $sec)-$(mktemp -u XXXXXX) | |
27 | ns1="ns1-$rndh" | |
28 | err=$(mktemp) | |
29 | ret=0 | |
30 | ||
31 | cleanup() | |
32 | { | |
9a2dbb59 | 33 | rm -f $err |
eedbc685 PA |
34 | ip netns del $ns1 |
35 | } | |
36 | ||
37 | ip -Version > /dev/null 2>&1 | |
38 | if [ $? -ne 0 ];then | |
39 | echo "SKIP: Could not run test without ip tool" | |
40 | exit $ksft_skip | |
41 | fi | |
42 | ||
43 | trap cleanup EXIT | |
44 | ||
45 | ip netns add $ns1 || exit $ksft_skip | |
46 | ip -net $ns1 link set lo up | |
47 | ip netns exec $ns1 sysctl -q net.mptcp.enabled=1 | |
48 | ||
49 | check() | |
50 | { | |
51 | local cmd="$1" | |
52 | local expected="$2" | |
53 | local msg="$3" | |
54 | local out=`$cmd 2>$err` | |
55 | local cmd_ret=$? | |
56 | ||
57 | printf "%-50s %s" "$msg" | |
58 | if [ $cmd_ret -ne 0 ]; then | |
59 | echo "[FAIL] command execution '$cmd' stderr " | |
60 | cat $err | |
61 | ret=1 | |
62 | elif [ "$out" = "$expected" ]; then | |
63 | echo "[ OK ]" | |
64 | else | |
65 | echo -n "[FAIL] " | |
66 | echo "expected '$expected' got '$out'" | |
67 | ret=1 | |
68 | fi | |
69 | } | |
70 | ||
71 | check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "defaults addr list" | |
72 | check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0 | |
73 | subflows 0" "defaults limits" | |
74 | ||
75 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.1 | |
76 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.2 flags subflow dev lo | |
77 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 flags signal,backup | |
3aeaaa59 | 78 | check "ip netns exec $ns1 ./pm_nl_ctl get 1" "id 1 flags 10.0.1.1" "simple add/get addr" |
eedbc685 PA |
79 | |
80 | check "ip netns exec $ns1 ./pm_nl_ctl dump" \ | |
81 | "id 1 flags 10.0.1.1 | |
82 | id 2 flags subflow dev lo 10.0.1.2 | |
3aeaaa59 | 83 | id 3 flags signal,backup 10.0.1.3" "dump addrs" |
eedbc685 PA |
84 | |
85 | ip netns exec $ns1 ./pm_nl_ctl del 2 | |
86 | check "ip netns exec $ns1 ./pm_nl_ctl get 2" "" "simple del addr" | |
87 | check "ip netns exec $ns1 ./pm_nl_ctl dump" \ | |
88 | "id 1 flags 10.0.1.1 | |
3aeaaa59 | 89 | id 3 flags signal,backup 10.0.1.3" "dump addrs after del" |
eedbc685 PA |
90 | |
91 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.3 | |
92 | check "ip netns exec $ns1 ./pm_nl_ctl get 4" "" "duplicate addr" | |
93 | ||
94 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.4 id 10 flags signal | |
3aeaaa59 | 95 | check "ip netns exec $ns1 ./pm_nl_ctl get 4" "id 4 flags signal 10.0.1.4" "id addr increment" |
eedbc685 PA |
96 | |
97 | for i in `seq 5 9`; do | |
98 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.1.$i flags signal >/dev/null 2>&1 | |
99 | done | |
3aeaaa59 | 100 | check "ip netns exec $ns1 ./pm_nl_ctl get 9" "id 9 flags signal 10.0.1.9" "hard addr limit" |
eedbc685 PA |
101 | check "ip netns exec $ns1 ./pm_nl_ctl get 10" "" "above hard addr limit" |
102 | ||
103 | for i in `seq 9 256`; do | |
104 | ip netns exec $ns1 ./pm_nl_ctl del $i | |
105 | ip netns exec $ns1 ./pm_nl_ctl add 10.0.0.9 | |
106 | done | |
107 | check "ip netns exec $ns1 ./pm_nl_ctl dump" "id 1 flags 10.0.1.1 | |
108 | id 3 flags signal,backup 10.0.1.3 | |
109 | id 4 flags signal 10.0.1.4 | |
110 | id 5 flags signal 10.0.1.5 | |
111 | id 6 flags signal 10.0.1.6 | |
112 | id 7 flags signal 10.0.1.7 | |
3aeaaa59 | 113 | id 8 flags signal 10.0.1.8" "id limit" |
eedbc685 PA |
114 | |
115 | ip netns exec $ns1 ./pm_nl_ctl flush | |
116 | check "ip netns exec $ns1 ./pm_nl_ctl dump" "" "flush addrs" | |
117 | ||
118 | ip netns exec $ns1 ./pm_nl_ctl limits 9 1 | |
119 | check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0 | |
120 | subflows 0" "rcv addrs above hard limit" | |
121 | ||
122 | ip netns exec $ns1 ./pm_nl_ctl limits 1 9 | |
123 | check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 0 | |
124 | subflows 0" "subflows above hard limit" | |
125 | ||
126 | ip netns exec $ns1 ./pm_nl_ctl limits 8 8 | |
127 | check "ip netns exec $ns1 ./pm_nl_ctl limits" "accept 8 | |
128 | subflows 8" "set limits" | |
129 | ||
130 | exit $ret |