aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorDavid S. Miller <davem@davemloft.net>2018-02-13 14:34:29 -0500
committerDavid S. Miller <davem@davemloft.net>2018-02-13 14:34:29 -0500
commitb95367e3bd8eaf2d88d7b7a7ab2847f5a6e70321 (patch)
tree621fd561ed3ec2ffe9c94dc33f7abee560662e91 /tools
parent8c2ceabe99e04005cadba739856eed6953a8a3af (diff)
parente2ba732a1681d907a6dffbaf9802aebcac233099 (diff)
Merge branch 'selftests-fib_tests-simplifications-verbosity-and-a-race'
David Ahern says: ==================== selftests: fib_tests: simplifications, verbosity and a race Improve efficiency of fib_tests.sh and make the test result more verbose, from this summary: $ fib_tests.sh is failing in a VM: $ fib_tests.sh Running netdev unregister tests PASS: unicast route test PASS: multipath route test Running netdev down tests PASS: unicast route test PASS: multipath route test Running netdev carrier change tests PASS: local route carrier test FAIL: unicast route carrier test where a single entry actually corresponds to many checks to a much more verbse output that clarifies test cases: $fib_tests.sh Single path route carrier test .... Carrier down IPv4 fibmatch [ OK ] IPv6 fibmatch [ OK ] IPv4 linkdown flag set [FAIL] IPv6 linkdown flag set [FAIL] Second address added with carrier down IPv4 fibmatch [ OK ] IPv6 fibmatch [ OK ] IPv4 linkdown flag set [FAIL] IPv6 linkdown flag set [ OK ] And then fix the race in changing carrier down on dummy device to checking the corresponding routes. ==================== Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools')
-rwxr-xr-xtools/testing/selftests/net/fib_tests.sh483
1 files changed, 237 insertions, 246 deletions
diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh
index a9154eefb2e2..b617985ecdc1 100755
--- a/tools/testing/selftests/net/fib_tests.sh
+++ b/tools/testing/selftests/net/fib_tests.sh
@@ -6,154 +6,155 @@
6 6
7ret=0 7ret=0
8 8
9check_err() 9PAUSE_ON_FAIL=${PAUSE_ON_FAIL:=no}
10{
11 if [ $ret -eq 0 ]; then
12 ret=$1
13 fi
14}
15 10
16check_fail() 11log_test()
17{ 12{
18 if [ $1 -eq 0 ]; then 13 local rc=$1
14 local expected=$2
15 local msg="$3"
16
17 if [ ${rc} -eq ${expected} ]; then
18 printf " %-60s [ OK ]\n" "${msg}"
19 else
19 ret=1 20 ret=1
21 printf " %-60s [FAIL]\n" "${msg}"
22 if [ "${PAUSE_ON_FAIL}" = "yes" ]; then
23 echo
24 echo "hit enter to continue, 'q' to quit"
25 read a
26 [ "$a" = "q" ] && exit 1
27 fi
20 fi 28 fi
21} 29}
22 30
23netns_create() 31setup()
24{ 32{
25 local testns=$1 33 set -e
34 ip netns add testns
35 ip -netns testns link set dev lo up
36
37 ip -netns testns link add dummy0 type dummy
38 ip -netns testns link set dev dummy0 up
39 ip -netns testns address add 198.51.100.1/24 dev dummy0
40 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
41 set +e
26 42
27 ip netns add $testns
28 ip netns exec $testns ip link set dev lo up
29} 43}
30 44
31fib_unreg_unicast_test() 45cleanup()
32{ 46{
33 ret=0 47 ip -netns testns link del dev dummy0 &> /dev/null
34 48 ip netns del testns
35 netns_create "testns" 49}
36
37 ip netns exec testns ip link add dummy0 type dummy
38 ip netns exec testns ip link set dev dummy0 up
39 50
40 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 51fib_unreg_unicast_test()
41 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 52{
53 echo
54 echo "Single path route test"
42 55
43 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 56 setup
44 check_err $?
45 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null
46 check_err $?
47 57
48 ip netns exec testns ip link del dev dummy0 58 echo " Start point"
49 check_err $? 59 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
60 log_test $? 0 "IPv4 fibmatch"
61 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
62 log_test $? 0 "IPv6 fibmatch"
50 63
51 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 64 set -e
52 check_fail $? 65 ip -netns testns link del dev dummy0
53 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null 66 set +e
54 check_fail $?
55 67
56 ip netns del testns 68 echo " Nexthop device deleted"
69 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
70 log_test $? 2 "IPv4 fibmatch - no route"
71 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
72 log_test $? 2 "IPv6 fibmatch - no route"
57 73
58 if [ $ret -ne 0 ]; then 74 cleanup
59 echo "FAIL: unicast route test"
60 return 1
61 fi
62 echo "PASS: unicast route test"
63} 75}
64 76
65fib_unreg_multipath_test() 77fib_unreg_multipath_test()
66{ 78{
67 ret=0
68
69 netns_create "testns"
70 79
71 ip netns exec testns ip link add dummy0 type dummy 80 echo
72 ip netns exec testns ip link set dev dummy0 up 81 echo "Multipath route test"
73 82
74 ip netns exec testns ip link add dummy1 type dummy 83 setup
75 ip netns exec testns ip link set dev dummy1 up
76 84
77 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 85 set -e
78 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 86 ip -netns testns link add dummy1 type dummy
87 ip -netns testns link set dev dummy1 up
88 ip -netns testns address add 192.0.2.1/24 dev dummy1
89 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy1
79 90
80 ip netns exec testns ip address add 192.0.2.1/24 dev dummy1 91 ip -netns testns route add 203.0.113.0/24 \
81 ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy1
82
83 ip netns exec testns ip route add 203.0.113.0/24 \
84 nexthop via 198.51.100.2 dev dummy0 \ 92 nexthop via 198.51.100.2 dev dummy0 \
85 nexthop via 192.0.2.2 dev dummy1 93 nexthop via 192.0.2.2 dev dummy1
86 ip netns exec testns ip -6 route add 2001:db8:3::/64 \ 94 ip -netns testns -6 route add 2001:db8:3::/64 \
87 nexthop via 2001:db8:1::2 dev dummy0 \ 95 nexthop via 2001:db8:1::2 dev dummy0 \
88 nexthop via 2001:db8:2::2 dev dummy1 96 nexthop via 2001:db8:2::2 dev dummy1
97 set +e
98
99 echo " Start point"
100 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
101 log_test $? 0 "IPv4 fibmatch"
102 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
103 log_test $? 0 "IPv6 fibmatch"
89 104
90 ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null 105 set -e
91 check_err $? 106 ip -netns testns link del dev dummy0
92 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null 107 set +e
93 check_err $?
94 108
95 ip netns exec testns ip link del dev dummy0 109 echo " One nexthop device deleted"
96 check_err $? 110 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
111 log_test $? 2 "IPv4 - multipath route removed on delete"
97 112
98 ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null 113 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
99 check_fail $?
100 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null
101 # In IPv6 we do not flush the entire multipath route. 114 # In IPv6 we do not flush the entire multipath route.
102 check_err $? 115 log_test $? 0 "IPv6 - multipath down to single path"
103 116
104 ip netns exec testns ip link del dev dummy1 117 set -e
118 ip -netns testns link del dev dummy1
119 set +e
105 120
106 ip netns del testns 121 echo " Second nexthop device deleted"
122 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
123 log_test $? 2 "IPv6 - no route"
107 124
108 if [ $ret -ne 0 ]; then 125 cleanup
109 echo "FAIL: multipath route test"
110 return 1
111 fi
112 echo "PASS: multipath route test"
113} 126}
114 127
115fib_unreg_test() 128fib_unreg_test()
116{ 129{
117 echo "Running netdev unregister tests"
118
119 fib_unreg_unicast_test 130 fib_unreg_unicast_test
120 fib_unreg_multipath_test 131 fib_unreg_multipath_test
121} 132}
122 133
123fib_down_unicast_test() 134fib_down_unicast_test()
124{ 135{
125 ret=0 136 echo
126 137 echo "Single path, admin down"
127 netns_create "testns"
128
129 ip netns exec testns ip link add dummy0 type dummy
130 ip netns exec testns ip link set dev dummy0 up
131
132 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0
133 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0
134 138
135 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 139 setup
136 check_err $?
137 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null
138 check_err $?
139 140
140 ip netns exec testns ip link set dev dummy0 down 141 echo " Start point"
141 check_err $? 142 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
143 log_test $? 0 "IPv4 fibmatch"
144 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
145 log_test $? 0 "IPv6 fibmatch"
142 146
143 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 147 set -e
144 check_fail $? 148 ip -netns testns link set dev dummy0 down
145 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null 149 set +e
146 check_fail $?
147 150
148 ip netns exec testns ip link del dev dummy0 151 echo " Route deleted on down"
152 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
153 log_test $? 2 "IPv4 fibmatch"
154 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
155 log_test $? 2 "IPv6 fibmatch"
149 156
150 ip netns del testns 157 cleanup
151
152 if [ $ret -ne 0 ]; then
153 echo "FAIL: unicast route test"
154 return 1
155 fi
156 echo "PASS: unicast route test"
157} 158}
158 159
159fib_down_multipath_test_do() 160fib_down_multipath_test_do()
@@ -161,242 +162,229 @@ fib_down_multipath_test_do()
161 local down_dev=$1 162 local down_dev=$1
162 local up_dev=$2 163 local up_dev=$2
163 164
164 ip netns exec testns ip route get fibmatch 203.0.113.1 \ 165 ip -netns testns route get fibmatch 203.0.113.1 \
165 oif $down_dev &> /dev/null 166 oif $down_dev &> /dev/null
166 check_fail $? 167 log_test $? 2 "IPv4 fibmatch on down device"
167 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ 168 ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
168 oif $down_dev &> /dev/null 169 oif $down_dev &> /dev/null
169 check_fail $? 170 log_test $? 2 "IPv6 fibmatch on down device"
170 171
171 ip netns exec testns ip route get fibmatch 203.0.113.1 \ 172 ip -netns testns route get fibmatch 203.0.113.1 \
172 oif $up_dev &> /dev/null 173 oif $up_dev &> /dev/null
173 check_err $? 174 log_test $? 0 "IPv4 fibmatch on up device"
174 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \ 175 ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
175 oif $up_dev &> /dev/null 176 oif $up_dev &> /dev/null
176 check_err $? 177 log_test $? 0 "IPv6 fibmatch on up device"
177 178
178 ip netns exec testns ip route get fibmatch 203.0.113.1 | \ 179 ip -netns testns route get fibmatch 203.0.113.1 | \
179 grep $down_dev | grep -q "dead linkdown" 180 grep $down_dev | grep -q "dead linkdown"
180 check_err $? 181 log_test $? 0 "IPv4 flags on down device"
181 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ 182 ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
182 grep $down_dev | grep -q "dead linkdown" 183 grep $down_dev | grep -q "dead linkdown"
183 check_err $? 184 log_test $? 0 "IPv6 flags on down device"
184 185
185 ip netns exec testns ip route get fibmatch 203.0.113.1 | \ 186 ip -netns testns route get fibmatch 203.0.113.1 | \
186 grep $up_dev | grep -q "dead linkdown" 187 grep $up_dev | grep -q "dead linkdown"
187 check_fail $? 188 log_test $? 1 "IPv4 flags on up device"
188 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \ 189 ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
189 grep $up_dev | grep -q "dead linkdown" 190 grep $up_dev | grep -q "dead linkdown"
190 check_fail $? 191 log_test $? 1 "IPv6 flags on up device"
191} 192}
192 193
193fib_down_multipath_test() 194fib_down_multipath_test()
194{ 195{
195 ret=0 196 echo
197 echo "Admin down multipath"
196 198
197 netns_create "testns" 199 setup
198 200
199 ip netns exec testns ip link add dummy0 type dummy 201 set -e
200 ip netns exec testns ip link set dev dummy0 up 202 ip -netns testns link add dummy1 type dummy
203 ip -netns testns link set dev dummy1 up
201 204
202 ip netns exec testns ip link add dummy1 type dummy 205 ip -netns testns address add 192.0.2.1/24 dev dummy1
203 ip netns exec testns ip link set dev dummy1 up 206 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy1
204 207
205 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 208 ip -netns testns route add 203.0.113.0/24 \
206 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0
207
208 ip netns exec testns ip address add 192.0.2.1/24 dev dummy1
209 ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy1
210
211 ip netns exec testns ip route add 203.0.113.0/24 \
212 nexthop via 198.51.100.2 dev dummy0 \ 209 nexthop via 198.51.100.2 dev dummy0 \
213 nexthop via 192.0.2.2 dev dummy1 210 nexthop via 192.0.2.2 dev dummy1
214 ip netns exec testns ip -6 route add 2001:db8:3::/64 \ 211 ip -netns testns -6 route add 2001:db8:3::/64 \
215 nexthop via 2001:db8:1::2 dev dummy0 \ 212 nexthop via 2001:db8:1::2 dev dummy0 \
216 nexthop via 2001:db8:2::2 dev dummy1 213 nexthop via 2001:db8:2::2 dev dummy1
214 set +e
215
216 echo " Verify start point"
217 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
218 log_test $? 0 "IPv4 fibmatch"
217 219
218 ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null 220 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
219 check_err $? 221 log_test $? 0 "IPv6 fibmatch"
220 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null
221 check_err $?
222 222
223 ip netns exec testns ip link set dev dummy0 down 223 set -e
224 check_err $? 224 ip -netns testns link set dev dummy0 down
225 set +e
225 226
227 echo " One device down, one up"
226 fib_down_multipath_test_do "dummy0" "dummy1" 228 fib_down_multipath_test_do "dummy0" "dummy1"
227 229
228 ip netns exec testns ip link set dev dummy0 up 230 set -e
229 check_err $? 231 ip -netns testns link set dev dummy0 up
230 ip netns exec testns ip link set dev dummy1 down 232 ip -netns testns link set dev dummy1 down
231 check_err $? 233 set +e
232 234
235 echo " Other device down and up"
233 fib_down_multipath_test_do "dummy1" "dummy0" 236 fib_down_multipath_test_do "dummy1" "dummy0"
234 237
235 ip netns exec testns ip link set dev dummy0 down 238 set -e
236 check_err $? 239 ip -netns testns link set dev dummy0 down
240 set +e
237 241
238 ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null 242 echo " Both devices down"
239 check_fail $? 243 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
240 ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null 244 log_test $? 2 "IPv4 fibmatch"
241 check_fail $? 245 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
246 log_test $? 2 "IPv6 fibmatch"
242 247
243 ip netns exec testns ip link del dev dummy1 248 ip -netns testns link del dev dummy1
244 ip netns exec testns ip link del dev dummy0 249 cleanup
245
246 ip netns del testns
247
248 if [ $ret -ne 0 ]; then
249 echo "FAIL: multipath route test"
250 return 1
251 fi
252 echo "PASS: multipath route test"
253} 250}
254 251
255fib_down_test() 252fib_down_test()
256{ 253{
257 echo "Running netdev down tests"
258
259 fib_down_unicast_test 254 fib_down_unicast_test
260 fib_down_multipath_test 255 fib_down_multipath_test
261} 256}
262 257
258# Local routes should not be affected when carrier changes.
263fib_carrier_local_test() 259fib_carrier_local_test()
264{ 260{
265 ret=0 261 echo
262 echo "Local carrier tests - single path"
266 263
267 # Local routes should not be affected when carrier changes. 264 setup
268 netns_create "testns"
269 265
270 ip netns exec testns ip link add dummy0 type dummy 266 set -e
271 ip netns exec testns ip link set dev dummy0 up 267 ip -netns testns link set dev dummy0 carrier on
268 set +e
272 269
273 ip netns exec testns ip link set dev dummy0 carrier on 270 echo " Start point"
271 ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
272 log_test $? 0 "IPv4 fibmatch"
273 ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
274 log_test $? 0 "IPv6 fibmatch"
274 275
275 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 276 ip -netns testns route get fibmatch 198.51.100.1 | \
276 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0
277
278 ip netns exec testns ip route get fibmatch 198.51.100.1 &> /dev/null
279 check_err $?
280 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 &> /dev/null
281 check_err $?
282
283 ip netns exec testns ip route get fibmatch 198.51.100.1 | \
284 grep -q "linkdown" 277 grep -q "linkdown"
285 check_fail $? 278 log_test $? 1 "IPv4 - no linkdown flag"
286 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \ 279 ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
287 grep -q "linkdown" 280 grep -q "linkdown"
288 check_fail $? 281 log_test $? 1 "IPv6 - no linkdown flag"
289 282
290 ip netns exec testns ip link set dev dummy0 carrier off 283 set -e
284 ip -netns testns link set dev dummy0 carrier off
285 sleep 1
286 set +e
291 287
292 ip netns exec testns ip route get fibmatch 198.51.100.1 &> /dev/null 288 echo " Carrier off on nexthop"
293 check_err $? 289 ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
294 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 &> /dev/null 290 log_test $? 0 "IPv4 fibmatch"
295 check_err $? 291 ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
292 log_test $? 0 "IPv6 fibmatch"
296 293
297 ip netns exec testns ip route get fibmatch 198.51.100.1 | \ 294 ip -netns testns route get fibmatch 198.51.100.1 | \
298 grep -q "linkdown" 295 grep -q "linkdown"
299 check_fail $? 296 log_test $? 1 "IPv4 - linkdown flag set"
300 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \ 297 ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
301 grep -q "linkdown" 298 grep -q "linkdown"
302 check_fail $? 299 log_test $? 1 "IPv6 - linkdown flag set"
303 300
304 ip netns exec testns ip address add 192.0.2.1/24 dev dummy0 301 set -e
305 ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0 302 ip -netns testns address add 192.0.2.1/24 dev dummy0
303 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
304 set +e
306 305
307 ip netns exec testns ip route get fibmatch 192.0.2.1 &> /dev/null 306 echo " Route to local address with carrier down"
308 check_err $? 307 ip -netns testns route get fibmatch 192.0.2.1 &> /dev/null
309 ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 &> /dev/null 308 log_test $? 0 "IPv4 fibmatch"
310 check_err $? 309 ip -netns testns -6 route get fibmatch 2001:db8:2::1 &> /dev/null
310 log_test $? 0 "IPv6 fibmatch"
311 311
312 ip netns exec testns ip route get fibmatch 192.0.2.1 | \ 312 ip -netns testns route get fibmatch 192.0.2.1 | \
313 grep -q "linkdown" 313 grep -q "linkdown"
314 check_fail $? 314 log_test $? 1 "IPv4 linkdown flag set"
315 ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 | \ 315 ip -netns testns -6 route get fibmatch 2001:db8:2::1 | \
316 grep -q "linkdown" 316 grep -q "linkdown"
317 check_fail $? 317 log_test $? 1 "IPv6 linkdown flag set"
318 318
319 ip netns exec testns ip link del dev dummy0 319 cleanup
320
321 ip netns del testns
322
323 if [ $ret -ne 0 ]; then
324 echo "FAIL: local route carrier test"
325 return 1
326 fi
327 echo "PASS: local route carrier test"
328} 320}
329 321
330fib_carrier_unicast_test() 322fib_carrier_unicast_test()
331{ 323{
332 ret=0 324 ret=0
333 325
334 netns_create "testns" 326 echo
335 327 echo "Single path route carrier test"
336 ip netns exec testns ip link add dummy0 type dummy
337 ip netns exec testns ip link set dev dummy0 up
338 328
339 ip netns exec testns ip link set dev dummy0 carrier on 329 setup
340 330
341 ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 331 set -e
342 ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 332 ip -netns testns link set dev dummy0 carrier on
333 set +e
343 334
344 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 335 echo " Start point"
345 check_err $? 336 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
346 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null 337 log_test $? 0 "IPv4 fibmatch"
347 check_err $? 338 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
339 log_test $? 0 "IPv6 fibmatch"
348 340
349 ip netns exec testns ip route get fibmatch 198.51.100.2 | \ 341 ip -netns testns route get fibmatch 198.51.100.2 | \
350 grep -q "linkdown" 342 grep -q "linkdown"
351 check_fail $? 343 log_test $? 1 "IPv4 no linkdown flag"
352 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \ 344 ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
353 grep -q "linkdown" 345 grep -q "linkdown"
354 check_fail $? 346 log_test $? 1 "IPv6 no linkdown flag"
355 347
356 ip netns exec testns ip link set dev dummy0 carrier off 348 set -e
349 ip -netns testns link set dev dummy0 carrier off
350 set +e
357 351
358 ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null 352 echo " Carrier down"
359 check_err $? 353 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
360 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null 354 log_test $? 0 "IPv4 fibmatch"
361 check_err $? 355 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
356 log_test $? 0 "IPv6 fibmatch"
362 357
363 ip netns exec testns ip route get fibmatch 198.51.100.2 | \ 358 ip -netns testns route get fibmatch 198.51.100.2 | \
364 grep -q "linkdown" 359 grep -q "linkdown"
365 check_err $? 360 log_test $? 0 "IPv4 linkdown flag set"
366 ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \ 361 ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
367 grep -q "linkdown" 362 grep -q "linkdown"
368 check_err $? 363 log_test $? 0 "IPv6 linkdown flag set"
369 364
370 ip netns exec testns ip address add 192.0.2.1/24 dev dummy0 365 set -e
371 ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0 366 ip -netns testns address add 192.0.2.1/24 dev dummy0
367 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
368 set +e
372 369
373 ip netns exec testns ip route get fibmatch 192.0.2.2 &> /dev/null 370 echo " Second address added with carrier down"
374 check_err $? 371 ip -netns testns route get fibmatch 192.0.2.2 &> /dev/null
375 ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 &> /dev/null 372 log_test $? 0 "IPv4 fibmatch"
376 check_err $? 373 ip -netns testns -6 route get fibmatch 2001:db8:2::2 &> /dev/null
374 log_test $? 0 "IPv6 fibmatch"
377 375
378 ip netns exec testns ip route get fibmatch 192.0.2.2 | \ 376 ip -netns testns route get fibmatch 192.0.2.2 | \
379 grep -q "linkdown" 377 grep -q "linkdown"
380 check_err $? 378 log_test $? 0 "IPv4 linkdown flag set"
381 ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 | \ 379 ip -netns testns -6 route get fibmatch 2001:db8:2::2 | \
382 grep -q "linkdown" 380 grep -q "linkdown"
383 check_err $? 381 log_test $? 0 "IPv6 linkdown flag set"
384 382
385 ip netns exec testns ip link del dev dummy0 383 cleanup
386
387 ip netns del testns
388
389 if [ $ret -ne 0 ]; then
390 echo "FAIL: unicast route carrier test"
391 return 1
392 fi
393 echo "PASS: unicast route carrier test"
394} 384}
395 385
396fib_carrier_test() 386fib_carrier_test()
397{ 387{
398 echo "Running netdev carrier change tests"
399
400 fib_carrier_local_test 388 fib_carrier_local_test
401 fib_carrier_unicast_test 389 fib_carrier_unicast_test
402} 390}
@@ -424,6 +412,9 @@ if [ $? -ne 0 ]; then
424 exit 0 412 exit 0
425fi 413fi
426 414
415# start clean
416cleanup &> /dev/null
417
427fib_test 418fib_test
428 419
429exit $ret 420exit $ret