@@ -260,10 +260,152 @@ fib_down_test()
260
260
fib_down_multipath_test
261
261
}
262
262
263
+ fib_carrier_local_test ()
264
+ {
265
+ ret=0
266
+
267
+ # Local routes should not be affected when carrier changes.
268
+ netns_create " testns"
269
+
270
+ ip netns exec testns ip link add dummy0 type dummy
271
+ ip netns exec testns ip link set dev dummy0 up
272
+
273
+ ip netns exec testns ip link set dev dummy0 carrier on
274
+
275
+ ip netns exec testns ip address add 198.51.100.1/24 dev dummy0
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"
285
+ check_fail $?
286
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \
287
+ grep -q " linkdown"
288
+ check_fail $?
289
+
290
+ ip netns exec testns ip link set dev dummy0 carrier off
291
+
292
+ ip netns exec testns ip route get fibmatch 198.51.100.1 & > /dev/null
293
+ check_err $?
294
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 & > /dev/null
295
+ check_err $?
296
+
297
+ ip netns exec testns ip route get fibmatch 198.51.100.1 | \
298
+ grep -q " linkdown"
299
+ check_fail $?
300
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::1 | \
301
+ grep -q " linkdown"
302
+ check_fail $?
303
+
304
+ ip netns exec testns ip address add 192.0.2.1/24 dev dummy0
305
+ ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0
306
+
307
+ ip netns exec testns ip route get fibmatch 192.0.2.1 & > /dev/null
308
+ check_err $?
309
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 & > /dev/null
310
+ check_err $?
311
+
312
+ ip netns exec testns ip route get fibmatch 192.0.2.1 | \
313
+ grep -q " linkdown"
314
+ check_fail $?
315
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:2::1 | \
316
+ grep -q " linkdown"
317
+ check_fail $?
318
+
319
+ ip netns exec testns ip link del dev dummy0
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
+ }
329
+
330
+ fib_carrier_unicast_test ()
331
+ {
332
+ ret=0
333
+
334
+ netns_create " testns"
335
+
336
+ ip netns exec testns ip link add dummy0 type dummy
337
+ ip netns exec testns ip link set dev dummy0 up
338
+
339
+ ip netns exec testns ip link set dev dummy0 carrier on
340
+
341
+ ip netns exec testns ip address add 198.51.100.1/24 dev dummy0
342
+ ip netns exec testns ip -6 address add 2001:db8:1::1/64 dev dummy0
343
+
344
+ ip netns exec testns ip route get fibmatch 198.51.100.2 & > /dev/null
345
+ check_err $?
346
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 & > /dev/null
347
+ check_err $?
348
+
349
+ ip netns exec testns ip route get fibmatch 198.51.100.2 | \
350
+ grep -q " linkdown"
351
+ check_fail $?
352
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \
353
+ grep -q " linkdown"
354
+ check_fail $?
355
+
356
+ ip netns exec testns ip link set dev dummy0 carrier off
357
+
358
+ ip netns exec testns ip route get fibmatch 198.51.100.2 & > /dev/null
359
+ check_err $?
360
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 & > /dev/null
361
+ check_err $?
362
+
363
+ ip netns exec testns ip route get fibmatch 198.51.100.2 | \
364
+ grep -q " linkdown"
365
+ check_err $?
366
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:1::2 | \
367
+ grep -q " linkdown"
368
+ check_err $?
369
+
370
+ ip netns exec testns ip address add 192.0.2.1/24 dev dummy0
371
+ ip netns exec testns ip -6 address add 2001:db8:2::1/64 dev dummy0
372
+
373
+ ip netns exec testns ip route get fibmatch 192.0.2.2 & > /dev/null
374
+ check_err $?
375
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 & > /dev/null
376
+ check_err $?
377
+
378
+ ip netns exec testns ip route get fibmatch 192.0.2.2 | \
379
+ grep -q " linkdown"
380
+ check_err $?
381
+ ip netns exec testns ip -6 route get fibmatch 2001:db8:2::2 | \
382
+ grep -q " linkdown"
383
+ check_err $?
384
+
385
+ ip netns exec testns ip link del dev dummy0
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
+ }
395
+
396
+ fib_carrier_test ()
397
+ {
398
+ echo " Running netdev carrier change tests"
399
+
400
+ fib_carrier_local_test
401
+ fib_carrier_unicast_test
402
+ }
403
+
263
404
fib_test ()
264
405
{
265
406
fib_unreg_test
266
407
fib_down_test
408
+ fib_carrier_test
267
409
}
268
410
269
411
if [ " $( id -u) " -ne 0 ]; then
0 commit comments