36
36
#
37
37
# - pmtu_vti6_link_add_mtu
38
38
# Same as above, for IPv6
39
+ #
40
+ # - pmtu_vti6_link_change_mtu
41
+ # Set up two dummy interfaces with different MTUs, create a vti6 tunnel
42
+ # and check that configured MTU is used on link creation and changes, and
43
+ # that MTU is properly calculated instead when MTU is not configured from
44
+ # userspace
39
45
40
46
tests="
41
- pmtu_vti6_exception vti6: PMTU exceptions
42
- pmtu_vti4_exception vti4: PMTU exceptions
43
- pmtu_vti4_default_mtu vti4: default MTU assignment
44
- pmtu_vti6_default_mtu vti6: default MTU assignment
45
- pmtu_vti4_link_add_mtu vti4: MTU setting on link creation
46
- pmtu_vti6_link_add_mtu vti6: MTU setting on link creation"
47
+ pmtu_vti6_exception vti6: PMTU exceptions
48
+ pmtu_vti4_exception vti4: PMTU exceptions
49
+ pmtu_vti4_default_mtu vti4: default MTU assignment
50
+ pmtu_vti6_default_mtu vti6: default MTU assignment
51
+ pmtu_vti4_link_add_mtu vti4: MTU setting on link creation
52
+ pmtu_vti6_link_add_mtu vti6: MTU setting on link creation
53
+ pmtu_vti6_link_change_mtu vti6: MTU changes on link changes"
47
54
48
55
NS_A=" ns-$( mktemp -u XXXXXX) "
49
56
NS_B=" ns-$( mktemp -u XXXXXX) "
@@ -64,6 +71,10 @@ vti6_a_addr="fd00:2::a"
64
71
vti6_b_addr=" fd00:2::b"
65
72
vti6_mask=" 64"
66
73
74
+ dummy6_0_addr=" fc00:1000::0"
75
+ dummy6_1_addr=" fc00:1001::0"
76
+ dummy6_mask=" 64"
77
+
67
78
cleanup_done=1
68
79
err_buf=
69
80
@@ -386,6 +397,50 @@ test_pmtu_vti6_link_add_mtu() {
386
397
return ${fail}
387
398
}
388
399
400
+ test_pmtu_vti6_link_change_mtu () {
401
+ setup namespaces || return 2
402
+
403
+ ${ns_a} ip link add dummy0 mtu 1500 type dummy
404
+ [ $? -ne 0 ] && err " dummy not supported" && return 2
405
+ ${ns_a} ip link add dummy1 mtu 3000 type dummy
406
+ ${ns_a} ip link set dummy0 up
407
+ ${ns_a} ip link set dummy1 up
408
+
409
+ ${ns_a} ip addr add ${dummy6_0_addr} /${dummy6_mask} dev dummy0
410
+ ${ns_a} ip addr add ${dummy6_1_addr} /${dummy6_mask} dev dummy1
411
+
412
+ fail=0
413
+
414
+ # Create vti6 interface bound to device, passing MTU, check it
415
+ ${ns_a} ip link add vti6_a mtu 1300 type vti6 remote ${dummy6_0_addr} local ${dummy6_0_addr}
416
+ mtu=" $( link_get_mtu " ${ns_a} " vti6_a) "
417
+ if [ ${mtu} -ne 1300 ]; then
418
+ err " vti6 MTU ${mtu} doesn't match configured value 1300"
419
+ fail=1
420
+ fi
421
+
422
+ # Move to another device with different MTU, without passing MTU, check
423
+ # MTU is adjusted
424
+ echo " ${ns_a} ip link set vti6_a type vti6 remote ${dummy6_1_addr} local ${dummy6_1_addr} " > /dev/kmsg
425
+ ${ns_a} ip link set vti6_a type vti6 remote ${dummy6_1_addr} local ${dummy6_1_addr}
426
+ mtu=" $( link_get_mtu " ${ns_a} " vti6_a) "
427
+ if [ ${mtu} -ne $(( 3000 - 40 )) ]; then
428
+ err " vti MTU ${mtu} is not dummy MTU 3000 minus IPv6 header length"
429
+ fail=1
430
+ fi
431
+
432
+ # Move it back, passing MTU, check MTU is not overridden
433
+ echo " ${ns_a} ip link set vti6_a mtu 1280 type vti6 remote ${dummy6_0_addr} local ${dummy6_0_addr} " > /dev/kmsg
434
+ ${ns_a} ip link set vti6_a mtu 1280 type vti6 remote ${dummy6_0_addr} local ${dummy6_0_addr}
435
+ mtu=" $( link_get_mtu " ${ns_a} " vti6_a) "
436
+ if [ ${mtu} -ne 1280 ]; then
437
+ err " vti6 MTU ${mtu} doesn't match configured value 1280"
438
+ fail=1
439
+ fi
440
+
441
+ return ${fail}
442
+ }
443
+
389
444
trap cleanup EXIT
390
445
391
446
exitcode=0
0 commit comments