Skip to content

Commit 1fad59e

Browse files
sbrivio-rhdavem330
authored andcommitted
selftests: pmtu: Add pmtu_vti6_link_change_mtu test
This test checks that MTU configured from userspace is used on link creation and changes, and that when it's not passed from userspace, it's calculated properly from the MTU of the lower layer. Signed-off-by: Stefano Brivio <[email protected]> Signed-off-by: David S. Miller <[email protected]>
1 parent 8b6022f commit 1fad59e

File tree

1 file changed

+61
-6
lines changed

1 file changed

+61
-6
lines changed

tools/testing/selftests/net/pmtu.sh

Lines changed: 61 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,21 @@
3636
#
3737
# - pmtu_vti6_link_add_mtu
3838
# 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
3945

4046
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"
4754

4855
NS_A="ns-$(mktemp -u XXXXXX)"
4956
NS_B="ns-$(mktemp -u XXXXXX)"
@@ -64,6 +71,10 @@ vti6_a_addr="fd00:2::a"
6471
vti6_b_addr="fd00:2::b"
6572
vti6_mask="64"
6673

74+
dummy6_0_addr="fc00:1000::0"
75+
dummy6_1_addr="fc00:1001::0"
76+
dummy6_mask="64"
77+
6778
cleanup_done=1
6879
err_buf=
6980

@@ -386,6 +397,50 @@ test_pmtu_vti6_link_add_mtu() {
386397
return ${fail}
387398
}
388399

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+
389444
trap cleanup EXIT
390445

391446
exitcode=0

0 commit comments

Comments
 (0)