@@ -120,9 +120,150 @@ fib_unreg_test()
120
120
fib_unreg_multipath_test
121
121
}
122
122
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
+
123
263
fib_test ()
124
264
{
125
265
fib_unreg_test
266
+ fib_down_test
126
267
}
127
268
128
269
if [ " $( id -u) " -ne 0 ]; then
0 commit comments