Skip to content

Commit 5adb768

Browse files
idoschdavem330
authored andcommitted
selftests: fib_tests: Add test cases for netdev down
Check that IPv4 and IPv6 react the same when a netdev is being put administratively down. Signed-off-by: Ido Schimmel <[email protected]> Acked-by: David Ahern <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 607bd2e commit 5adb768

File tree

1 file changed

+141
-0
lines changed

1 file changed

+141
-0
lines changed

tools/testing/selftests/net/fib_tests.sh

Lines changed: 141 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,9 +120,150 @@ fib_unreg_test()
120120
fib_unreg_multipath_test
121121
}
122122

123+
fib_down_unicast_test()
124+
{
125+
ret=0
126+
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+
135+
ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null
136+
check_err $?
137+
ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null
138+
check_err $?
139+
140+
ip netns exec testns ip link set dev dummy0 down
141+
check_err $?
142+
143+
ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null
144+
check_fail $?
145+
ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null
146+
check_fail $?
147+
148+
ip netns exec testns ip link del dev dummy0
149+
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+
159+
fib_down_multipath_test_do()
160+
{
161+
local down_dev=$1
162+
local up_dev=$2
163+
164+
ip netns exec testns ip route get fibmatch 203.0.113.1 \
165+
oif $down_dev &> /dev/null
166+
check_fail $?
167+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \
168+
oif $down_dev &> /dev/null
169+
check_fail $?
170+
171+
ip netns exec testns ip route get fibmatch 203.0.113.1 \
172+
oif $up_dev &> /dev/null
173+
check_err $?
174+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 \
175+
oif $up_dev &> /dev/null
176+
check_err $?
177+
178+
ip netns exec testns ip route get fibmatch 203.0.113.1 | \
179+
grep $down_dev | grep -q "dead linkdown"
180+
check_err $?
181+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \
182+
grep $down_dev | grep -q "dead linkdown"
183+
check_err $?
184+
185+
ip netns exec testns ip route get fibmatch 203.0.113.1 | \
186+
grep $up_dev | grep -q "dead linkdown"
187+
check_fail $?
188+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 | \
189+
grep $up_dev | grep -q "dead linkdown"
190+
check_fail $?
191+
}
192+
193+
fib_down_multipath_test()
194+
{
195+
ret=0
196+
197+
netns_create "testns"
198+
199+
ip netns exec testns ip link add dummy0 type dummy
200+
ip netns exec testns ip link set dev dummy0 up
201+
202+
ip netns exec testns ip link add dummy1 type dummy
203+
ip netns exec testns ip link set dev dummy1 up
204+
205+
ip netns exec testns ip address add 198.51.100.1/24 dev dummy0
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 \
213+
nexthop via 192.0.2.2 dev dummy1
214+
ip netns exec testns ip -6 route add 2001:db8:3::/64 \
215+
nexthop via 2001:db8:1::2 dev dummy0 \
216+
nexthop via 2001:db8:2::2 dev dummy1
217+
218+
ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null
219+
check_err $?
220+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null
221+
check_err $?
222+
223+
ip netns exec testns ip link set dev dummy0 down
224+
check_err $?
225+
226+
fib_down_multipath_test_do "dummy0" "dummy1"
227+
228+
ip netns exec testns ip link set dev dummy0 up
229+
check_err $?
230+
ip netns exec testns ip link set dev dummy1 down
231+
check_err $?
232+
233+
fib_down_multipath_test_do "dummy1" "dummy0"
234+
235+
ip netns exec testns ip link set dev dummy0 down
236+
check_err $?
237+
238+
ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null
239+
check_fail $?
240+
ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null
241+
check_fail $?
242+
243+
ip netns exec testns ip link del dev dummy1
244+
ip netns exec testns ip link del dev dummy0
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+
}
254+
255+
fib_down_test()
256+
{
257+
echo "Running netdev down tests"
258+
259+
fib_down_unicast_test
260+
fib_down_multipath_test
261+
}
262+
123263
fib_test()
124264
{
125265
fib_unreg_test
266+
fib_down_test
126267
}
127268

128269
if [ "$(id -u)" -ne 0 ];then

0 commit comments

Comments
 (0)