blob: 672f263f8f53b7ce781db80c7d47442b26f41b11 [file] [log] [blame]
Ido Schimmel607bd2e2018-01-07 12:45:16 +02001#!/bin/bash
2# SPDX-License-Identifier: GPL-2.0
3
4# This test is for checking IPv4 and IPv6 FIB behavior in response to
5# different events.
6
7ret=0
8
9check_err()
10{
11 if [ $ret -eq 0 ]; then
12 ret=$1
13 fi
14}
15
16check_fail()
17{
18 if [ $1 -eq 0 ]; then
19 ret=1
20 fi
21}
22
23netns_create()
24{
25 local testns=$1
26
27 ip netns add $testns
28 ip netns exec $testns ip link set dev lo up
29}
30
31fib_unreg_unicast_test()
32{
33 ret=0
34
35 netns_create "testns"
36
David Ahern07f4e622018-02-13 08:37:33 -080037 ip -netns testns link add dummy0 type dummy
38 ip -netns testns link set dev dummy0 up
Ido Schimmel607bd2e2018-01-07 12:45:16 +020039
David Ahern07f4e622018-02-13 08:37:33 -080040 ip -netns testns address add 198.51.100.1/24 dev dummy0
41 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel607bd2e2018-01-07 12:45:16 +020042
David Ahern07f4e622018-02-13 08:37:33 -080043 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020044 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -080045 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020046 check_err $?
47
David Ahern07f4e622018-02-13 08:37:33 -080048 ip -netns testns link del dev dummy0
Ido Schimmel607bd2e2018-01-07 12:45:16 +020049 check_err $?
50
David Ahern07f4e622018-02-13 08:37:33 -080051 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020052 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -080053 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020054 check_fail $?
55
56 ip netns del testns
57
58 if [ $ret -ne 0 ]; then
59 echo "FAIL: unicast route test"
60 return 1
61 fi
62 echo "PASS: unicast route test"
63}
64
65fib_unreg_multipath_test()
66{
67 ret=0
68
69 netns_create "testns"
70
David Ahern07f4e622018-02-13 08:37:33 -080071 ip -netns testns link add dummy0 type dummy
72 ip -netns testns link set dev dummy0 up
Ido Schimmel607bd2e2018-01-07 12:45:16 +020073
David Ahern07f4e622018-02-13 08:37:33 -080074 ip -netns testns link add dummy1 type dummy
75 ip -netns testns link set dev dummy1 up
Ido Schimmel607bd2e2018-01-07 12:45:16 +020076
David Ahern07f4e622018-02-13 08:37:33 -080077 ip -netns testns address add 198.51.100.1/24 dev dummy0
78 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel607bd2e2018-01-07 12:45:16 +020079
David Ahern07f4e622018-02-13 08:37:33 -080080 ip -netns testns address add 192.0.2.1/24 dev dummy1
81 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy1
Ido Schimmel607bd2e2018-01-07 12:45:16 +020082
David Ahern07f4e622018-02-13 08:37:33 -080083 ip -netns testns route add 203.0.113.0/24 \
Ido Schimmel607bd2e2018-01-07 12:45:16 +020084 nexthop via 198.51.100.2 dev dummy0 \
85 nexthop via 192.0.2.2 dev dummy1
David Ahern07f4e622018-02-13 08:37:33 -080086 ip -netns testns -6 route add 2001:db8:3::/64 \
Ido Schimmel607bd2e2018-01-07 12:45:16 +020087 nexthop via 2001:db8:1::2 dev dummy0 \
88 nexthop via 2001:db8:2::2 dev dummy1
89
David Ahern07f4e622018-02-13 08:37:33 -080090 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020091 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -080092 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020093 check_err $?
94
David Ahern07f4e622018-02-13 08:37:33 -080095 ip -netns testns link del dev dummy0
Ido Schimmel607bd2e2018-01-07 12:45:16 +020096 check_err $?
97
David Ahern07f4e622018-02-13 08:37:33 -080098 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +020099 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800100 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
Ido Schimmel607bd2e2018-01-07 12:45:16 +0200101 # In IPv6 we do not flush the entire multipath route.
102 check_err $?
103
David Ahern07f4e622018-02-13 08:37:33 -0800104 ip -netns testns link del dev dummy1
Ido Schimmel607bd2e2018-01-07 12:45:16 +0200105
106 ip netns del testns
107
108 if [ $ret -ne 0 ]; then
109 echo "FAIL: multipath route test"
110 return 1
111 fi
112 echo "PASS: multipath route test"
113}
114
115fib_unreg_test()
116{
117 echo "Running netdev unregister tests"
118
119 fib_unreg_unicast_test
120 fib_unreg_multipath_test
121}
122
Ido Schimmel5adb7682018-01-07 12:45:17 +0200123fib_down_unicast_test()
124{
125 ret=0
126
127 netns_create "testns"
128
David Ahern07f4e622018-02-13 08:37:33 -0800129 ip -netns testns link add dummy0 type dummy
130 ip -netns testns link set dev dummy0 up
Ido Schimmel5adb7682018-01-07 12:45:17 +0200131
David Ahern07f4e622018-02-13 08:37:33 -0800132 ip -netns testns address add 198.51.100.1/24 dev dummy0
133 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel5adb7682018-01-07 12:45:17 +0200134
David Ahern07f4e622018-02-13 08:37:33 -0800135 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200136 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800137 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200138 check_err $?
139
David Ahern07f4e622018-02-13 08:37:33 -0800140 ip -netns testns link set dev dummy0 down
Ido Schimmel5adb7682018-01-07 12:45:17 +0200141 check_err $?
142
David Ahern07f4e622018-02-13 08:37:33 -0800143 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200144 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800145 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200146 check_fail $?
147
David Ahern07f4e622018-02-13 08:37:33 -0800148 ip -netns testns link del dev dummy0
Ido Schimmel5adb7682018-01-07 12:45:17 +0200149
150 ip netns del testns
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
159fib_down_multipath_test_do()
160{
161 local down_dev=$1
162 local up_dev=$2
163
David Ahern07f4e622018-02-13 08:37:33 -0800164 ip -netns testns route get fibmatch 203.0.113.1 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200165 oif $down_dev &> /dev/null
166 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800167 ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200168 oif $down_dev &> /dev/null
169 check_fail $?
170
David Ahern07f4e622018-02-13 08:37:33 -0800171 ip -netns testns route get fibmatch 203.0.113.1 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200172 oif $up_dev &> /dev/null
173 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800174 ip -netns testns -6 route get fibmatch 2001:db8:3::1 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200175 oif $up_dev &> /dev/null
176 check_err $?
177
David Ahern07f4e622018-02-13 08:37:33 -0800178 ip -netns testns route get fibmatch 203.0.113.1 | \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200179 grep $down_dev | grep -q "dead linkdown"
180 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800181 ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200182 grep $down_dev | grep -q "dead linkdown"
183 check_err $?
184
David Ahern07f4e622018-02-13 08:37:33 -0800185 ip -netns testns route get fibmatch 203.0.113.1 | \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200186 grep $up_dev | grep -q "dead linkdown"
187 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800188 ip -netns testns -6 route get fibmatch 2001:db8:3::1 | \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200189 grep $up_dev | grep -q "dead linkdown"
190 check_fail $?
191}
192
193fib_down_multipath_test()
194{
195 ret=0
196
197 netns_create "testns"
198
David Ahern07f4e622018-02-13 08:37:33 -0800199 ip -netns testns link add dummy0 type dummy
200 ip -netns testns link set dev dummy0 up
Ido Schimmel5adb7682018-01-07 12:45:17 +0200201
David Ahern07f4e622018-02-13 08:37:33 -0800202 ip -netns testns link add dummy1 type dummy
203 ip -netns testns link set dev dummy1 up
Ido Schimmel5adb7682018-01-07 12:45:17 +0200204
David Ahern07f4e622018-02-13 08:37:33 -0800205 ip -netns testns address add 198.51.100.1/24 dev dummy0
206 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel5adb7682018-01-07 12:45:17 +0200207
David Ahern07f4e622018-02-13 08:37:33 -0800208 ip -netns testns address add 192.0.2.1/24 dev dummy1
209 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy1
Ido Schimmel5adb7682018-01-07 12:45:17 +0200210
David Ahern07f4e622018-02-13 08:37:33 -0800211 ip -netns testns route add 203.0.113.0/24 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200212 nexthop via 198.51.100.2 dev dummy0 \
213 nexthop via 192.0.2.2 dev dummy1
David Ahern07f4e622018-02-13 08:37:33 -0800214 ip -netns testns -6 route add 2001:db8:3::/64 \
Ido Schimmel5adb7682018-01-07 12:45:17 +0200215 nexthop via 2001:db8:1::2 dev dummy0 \
216 nexthop via 2001:db8:2::2 dev dummy1
217
David Ahern07f4e622018-02-13 08:37:33 -0800218 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200219 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800220 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200221 check_err $?
222
David Ahern07f4e622018-02-13 08:37:33 -0800223 ip -netns testns link set dev dummy0 down
Ido Schimmel5adb7682018-01-07 12:45:17 +0200224 check_err $?
225
226 fib_down_multipath_test_do "dummy0" "dummy1"
227
David Ahern07f4e622018-02-13 08:37:33 -0800228 ip -netns testns link set dev dummy0 up
Ido Schimmel5adb7682018-01-07 12:45:17 +0200229 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800230 ip -netns testns link set dev dummy1 down
Ido Schimmel5adb7682018-01-07 12:45:17 +0200231 check_err $?
232
233 fib_down_multipath_test_do "dummy1" "dummy0"
234
David Ahern07f4e622018-02-13 08:37:33 -0800235 ip -netns testns link set dev dummy0 down
Ido Schimmel5adb7682018-01-07 12:45:17 +0200236 check_err $?
237
David Ahern07f4e622018-02-13 08:37:33 -0800238 ip -netns testns route get fibmatch 203.0.113.1 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200239 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800240 ip -netns testns -6 route get fibmatch 2001:db8:3::1 &> /dev/null
Ido Schimmel5adb7682018-01-07 12:45:17 +0200241 check_fail $?
242
David Ahern07f4e622018-02-13 08:37:33 -0800243 ip -netns testns link del dev dummy1
244 ip -netns testns link del dev dummy0
Ido Schimmel5adb7682018-01-07 12:45:17 +0200245
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}
254
255fib_down_test()
256{
257 echo "Running netdev down tests"
258
259 fib_down_unicast_test
260 fib_down_multipath_test
261}
262
Ido Schimmel82e45b62018-01-07 12:45:18 +0200263fib_carrier_local_test()
264{
265 ret=0
266
267 # Local routes should not be affected when carrier changes.
268 netns_create "testns"
269
David Ahern07f4e622018-02-13 08:37:33 -0800270 ip -netns testns link add dummy0 type dummy
271 ip -netns testns link set dev dummy0 up
Ido Schimmel82e45b62018-01-07 12:45:18 +0200272
David Ahern07f4e622018-02-13 08:37:33 -0800273 ip -netns testns link set dev dummy0 carrier on
Ido Schimmel82e45b62018-01-07 12:45:18 +0200274
David Ahern07f4e622018-02-13 08:37:33 -0800275 ip -netns testns address add 198.51.100.1/24 dev dummy0
276 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200277
David Ahern07f4e622018-02-13 08:37:33 -0800278 ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200279 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800280 ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200281 check_err $?
282
David Ahern07f4e622018-02-13 08:37:33 -0800283 ip -netns testns route get fibmatch 198.51.100.1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200284 grep -q "linkdown"
285 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800286 ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200287 grep -q "linkdown"
288 check_fail $?
289
David Ahern07f4e622018-02-13 08:37:33 -0800290 ip -netns testns link set dev dummy0 carrier off
Ido Schimmel82e45b62018-01-07 12:45:18 +0200291
David Ahern07f4e622018-02-13 08:37:33 -0800292 ip -netns testns route get fibmatch 198.51.100.1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200293 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800294 ip -netns testns -6 route get fibmatch 2001:db8:1::1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200295 check_err $?
296
David Ahern07f4e622018-02-13 08:37:33 -0800297 ip -netns testns route get fibmatch 198.51.100.1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200298 grep -q "linkdown"
299 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800300 ip -netns testns -6 route get fibmatch 2001:db8:1::1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200301 grep -q "linkdown"
302 check_fail $?
303
David Ahern07f4e622018-02-13 08:37:33 -0800304 ip -netns testns address add 192.0.2.1/24 dev dummy0
305 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200306
David Ahern07f4e622018-02-13 08:37:33 -0800307 ip -netns testns route get fibmatch 192.0.2.1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200308 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800309 ip -netns testns -6 route get fibmatch 2001:db8:2::1 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200310 check_err $?
311
David Ahern07f4e622018-02-13 08:37:33 -0800312 ip -netns testns route get fibmatch 192.0.2.1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200313 grep -q "linkdown"
314 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800315 ip -netns testns -6 route get fibmatch 2001:db8:2::1 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200316 grep -q "linkdown"
317 check_fail $?
318
David Ahern07f4e622018-02-13 08:37:33 -0800319 ip -netns testns link del dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200320
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}
329
330fib_carrier_unicast_test()
331{
332 ret=0
333
334 netns_create "testns"
335
David Ahern07f4e622018-02-13 08:37:33 -0800336 ip -netns testns link add dummy0 type dummy
337 ip -netns testns link set dev dummy0 up
Ido Schimmel82e45b62018-01-07 12:45:18 +0200338
David Ahern07f4e622018-02-13 08:37:33 -0800339 ip -netns testns link set dev dummy0 carrier on
Ido Schimmel82e45b62018-01-07 12:45:18 +0200340
David Ahern07f4e622018-02-13 08:37:33 -0800341 ip -netns testns address add 198.51.100.1/24 dev dummy0
342 ip -netns testns -6 address add 2001:db8:1::1/64 dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200343
David Ahern07f4e622018-02-13 08:37:33 -0800344 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200345 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800346 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200347 check_err $?
348
David Ahern07f4e622018-02-13 08:37:33 -0800349 ip -netns testns route get fibmatch 198.51.100.2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200350 grep -q "linkdown"
351 check_fail $?
David Ahern07f4e622018-02-13 08:37:33 -0800352 ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200353 grep -q "linkdown"
354 check_fail $?
355
David Ahern07f4e622018-02-13 08:37:33 -0800356 ip -netns testns link set dev dummy0 carrier off
Ido Schimmel82e45b62018-01-07 12:45:18 +0200357
David Ahern07f4e622018-02-13 08:37:33 -0800358 ip -netns testns route get fibmatch 198.51.100.2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200359 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800360 ip -netns testns -6 route get fibmatch 2001:db8:1::2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200361 check_err $?
362
David Ahern07f4e622018-02-13 08:37:33 -0800363 ip -netns testns route get fibmatch 198.51.100.2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200364 grep -q "linkdown"
365 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800366 ip -netns testns -6 route get fibmatch 2001:db8:1::2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200367 grep -q "linkdown"
368 check_err $?
369
David Ahern07f4e622018-02-13 08:37:33 -0800370 ip -netns testns address add 192.0.2.1/24 dev dummy0
371 ip -netns testns -6 address add 2001:db8:2::1/64 dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200372
David Ahern07f4e622018-02-13 08:37:33 -0800373 ip -netns testns route get fibmatch 192.0.2.2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200374 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800375 ip -netns testns -6 route get fibmatch 2001:db8:2::2 &> /dev/null
Ido Schimmel82e45b62018-01-07 12:45:18 +0200376 check_err $?
377
David Ahern07f4e622018-02-13 08:37:33 -0800378 ip -netns testns route get fibmatch 192.0.2.2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200379 grep -q "linkdown"
380 check_err $?
David Ahern07f4e622018-02-13 08:37:33 -0800381 ip -netns testns -6 route get fibmatch 2001:db8:2::2 | \
Ido Schimmel82e45b62018-01-07 12:45:18 +0200382 grep -q "linkdown"
383 check_err $?
384
David Ahern07f4e622018-02-13 08:37:33 -0800385 ip -netns testns link del dev dummy0
Ido Schimmel82e45b62018-01-07 12:45:18 +0200386
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}
395
396fib_carrier_test()
397{
398 echo "Running netdev carrier change tests"
399
400 fib_carrier_local_test
401 fib_carrier_unicast_test
402}
403
Ido Schimmel607bd2e2018-01-07 12:45:16 +0200404fib_test()
405{
406 fib_unreg_test
Ido Schimmel5adb7682018-01-07 12:45:17 +0200407 fib_down_test
Ido Schimmel82e45b62018-01-07 12:45:18 +0200408 fib_carrier_test
Ido Schimmel607bd2e2018-01-07 12:45:16 +0200409}
410
411if [ "$(id -u)" -ne 0 ];then
412 echo "SKIP: Need root privileges"
413 exit 0
414fi
415
416if [ ! -x "$(command -v ip)" ]; then
417 echo "SKIP: Could not run test without ip tool"
418 exit 0
419fi
420
421ip route help 2>&1 | grep -q fibmatch
422if [ $? -ne 0 ]; then
423 echo "SKIP: iproute2 too old, missing fibmatch"
424 exit 0
425fi
426
427fib_test
428
429exit $ret