diff options
author | Ido Schimmel <idosch@mellanox.com> | 2018-01-07 05:45:16 -0500 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-01-07 21:29:41 -0500 |
commit | 607bd2e502f5528e1aef94e4d6f8252ccc4dbd6a (patch) | |
tree | f59c4186182753fd1014ade9ac473b26c68c6150 /tools | |
parent | 1de178edc76e4ad87d02fcadf73af97f52e87caa (diff) |
selftests: fib_tests: Add test cases for IPv4/IPv6 FIB
Add test cases to check that IPv4 and IPv6 react to a netdev being
unregistered as expected.
Signed-off-by: Ido Schimmel <idosch@mellanox.com>
Acked-by: David Ahern <dsahern@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/testing/selftests/net/Makefile | 1 | ||||
-rwxr-xr-x | tools/testing/selftests/net/fib_tests.sh | 146 |
2 files changed, 147 insertions, 0 deletions
diff --git a/tools/testing/selftests/net/Makefile b/tools/testing/selftests/net/Makefile index 500c74db746c..d7c30d366935 100644 --- a/tools/testing/selftests/net/Makefile +++ b/tools/testing/selftests/net/Makefile | |||
@@ -5,6 +5,7 @@ CFLAGS = -Wall -Wl,--no-as-needed -O2 -g | |||
5 | CFLAGS += -I../../../../usr/include/ | 5 | CFLAGS += -I../../../../usr/include/ |
6 | 6 | ||
7 | TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh | 7 | TEST_PROGS := run_netsocktests run_afpackettests test_bpf.sh netdevice.sh rtnetlink.sh |
8 | TEST_PROGS += fib_tests.sh | ||
8 | TEST_GEN_FILES = socket | 9 | TEST_GEN_FILES = socket |
9 | TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy | 10 | TEST_GEN_FILES += psock_fanout psock_tpacket msg_zerocopy |
10 | TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa | 11 | TEST_GEN_PROGS = reuseport_bpf reuseport_bpf_cpu reuseport_bpf_numa |
diff --git a/tools/testing/selftests/net/fib_tests.sh b/tools/testing/selftests/net/fib_tests.sh new file mode 100755 index 000000000000..767d2ab2385d --- /dev/null +++ b/tools/testing/selftests/net/fib_tests.sh | |||
@@ -0,0 +1,146 @@ | |||
1 | #!/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 | |||
7 | ret=0 | ||
8 | |||
9 | check_err() | ||
10 | { | ||
11 | if [ $ret -eq 0 ]; then | ||
12 | ret=$1 | ||
13 | fi | ||
14 | } | ||
15 | |||
16 | check_fail() | ||
17 | { | ||
18 | if [ $1 -eq 0 ]; then | ||
19 | ret=1 | ||
20 | fi | ||
21 | } | ||
22 | |||
23 | netns_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 | |||
31 | fib_unreg_unicast_test() | ||
32 | { | ||
33 | ret=0 | ||
34 | |||
35 | netns_create "testns" | ||
36 | |||
37 | ip netns exec testns ip link add dummy0 type dummy | ||
38 | ip netns exec testns ip link set dev dummy0 up | ||
39 | |||
40 | ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 | ||
41 | ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 | ||
42 | |||
43 | ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null | ||
44 | check_err $? | ||
45 | ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null | ||
46 | check_err $? | ||
47 | |||
48 | ip netns exec testns ip link del dev dummy0 | ||
49 | check_err $? | ||
50 | |||
51 | ip netns exec testns ip route get fibmatch 198.51.100.2 &> /dev/null | ||
52 | check_fail $? | ||
53 | ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 &> /dev/null | ||
54 | 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 | |||
65 | fib_unreg_multipath_test() | ||
66 | { | ||
67 | ret=0 | ||
68 | |||
69 | netns_create "testns" | ||
70 | |||
71 | ip netns exec testns ip link add dummy0 type dummy | ||
72 | ip netns exec testns ip link set dev dummy0 up | ||
73 | |||
74 | ip netns exec testns ip link add dummy1 type dummy | ||
75 | ip netns exec testns ip link set dev dummy1 up | ||
76 | |||
77 | ip netns exec testns ip address add 198.51.100.1/24 dev dummy0 | ||
78 | ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0 | ||
79 | |||
80 | ip netns exec testns ip address add 192.0.2.1/24 dev dummy1 | ||
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 \ | ||
85 | nexthop via 192.0.2.2 dev dummy1 | ||
86 | ip netns exec testns ip -6 route add 2001:db8:3::/64 \ | ||
87 | nexthop via 2001:db8:1::2 dev dummy0 \ | ||
88 | nexthop via 2001:db8:2::2 dev dummy1 | ||
89 | |||
90 | ip netns exec testns ip route get fibmatch 203.0.113.1 &> /dev/null | ||
91 | check_err $? | ||
92 | ip netns exec testns ip -6 route get fibmatch 2001:db8:3::1 &> /dev/null | ||
93 | check_err $? | ||
94 | |||
95 | ip netns exec testns ip link del dev dummy0 | ||
96 | check_err $? | ||
97 | |||
98 | ip netns exec testns ip route get fibmatch 203.0.113.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. | ||
102 | check_err $? | ||
103 | |||
104 | ip netns exec testns ip link del dev dummy1 | ||
105 | |||
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 | |||
115 | fib_unreg_test() | ||
116 | { | ||
117 | echo "Running netdev unregister tests" | ||
118 | |||
119 | fib_unreg_unicast_test | ||
120 | fib_unreg_multipath_test | ||
121 | } | ||
122 | |||
123 | fib_test() | ||
124 | { | ||
125 | fib_unreg_test | ||
126 | } | ||
127 | |||
128 | if [ "$(id -u)" -ne 0 ];then | ||
129 | echo "SKIP: Need root privileges" | ||
130 | exit 0 | ||
131 | fi | ||
132 | |||
133 | if [ ! -x "$(command -v ip)" ]; then | ||
134 | echo "SKIP: Could not run test without ip tool" | ||
135 | exit 0 | ||
136 | fi | ||
137 | |||
138 | ip route help 2>&1 | grep -q fibmatch | ||
139 | if [ $? -ne 0 ]; then | ||
140 | echo "SKIP: iproute2 too old, missing fibmatch" | ||
141 | exit 0 | ||
142 | fi | ||
143 | |||
144 | fib_test | ||
145 | |||
146 | exit $ret | ||