Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e28799e5 authored by Stefano Brivio's avatar Stefano Brivio Committed by David S. Miller
Browse files

selftests: pmtu: Introduce list_flush_ipv6_exception test case



This test checks that route exceptions can be successfully listed and
flushed using ip -6 route {list,flush} cache.

Signed-off-by: default avatarStefano Brivio <sbrivio@redhat.com>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 48debfd7
Loading
Loading
Loading
Loading
+50 −1
Original line number Diff line number Diff line
@@ -111,6 +111,10 @@
#
# - cleanup_ipv6_exception
#	Same as above, but use IPv6 transport from A to B
#
# - list_flush_ipv6_exception
#	Using the same topology as in pmtu_ipv6, create exceptions, and check
#	they are shown when listing exception caches, gone after flushing them


# Kselftest framework requirement - SKIP code is 4.
@@ -151,7 +155,8 @@ tests="
	pmtu_vti6_link_add_mtu		vti6: MTU setting on link creation	0
	pmtu_vti6_link_change_mtu	vti6: MTU changes on link changes	0
	cleanup_ipv4_exception		ipv4: cleanup of cached exceptions	1
	cleanup_ipv6_exception		ipv6: cleanup of cached exceptions	1"
	cleanup_ipv6_exception		ipv6: cleanup of cached exceptions	1
	list_flush_ipv6_exception	ipv6: list and flush cached exceptions	1"

NS_A="ns-A"
NS_B="ns-B"
@@ -1202,6 +1207,50 @@ run_test_nh() {
	USE_NH=no
}

test_list_flush_ipv6_exception() {
	setup namespaces routing || return 2
	trace "${ns_a}"  veth_A-R1    "${ns_r1}" veth_R1-A \
	      "${ns_r1}" veth_R1-B    "${ns_b}"  veth_B-R1 \
	      "${ns_a}"  veth_A-R2    "${ns_r2}" veth_R2-A \
	      "${ns_r2}" veth_R2-B    "${ns_b}"  veth_B-R2

	dst1="${prefix6}:${b_r1}::1"
	dst2="${prefix6}:${b_r2}::1"

	# Set up initial MTU values
	mtu "${ns_a}"  veth_A-R1 2000
	mtu "${ns_r1}" veth_R1-A 2000
	mtu "${ns_r1}" veth_R1-B 1500
	mtu "${ns_b}"  veth_B-R1 1500

	mtu "${ns_a}"  veth_A-R2 2000
	mtu "${ns_r2}" veth_R2-A 2000
	mtu "${ns_r2}" veth_R2-B 1500
	mtu "${ns_b}"  veth_B-R2 1500

	fail=0

	# Create route exceptions
	run_cmd ${ns_a} ${ping6} -q -M want -i 0.1 -w 1 -s 1800 ${dst1}
	run_cmd ${ns_a} ${ping6} -q -M want -i 0.1 -w 1 -s 1800 ${dst2}

	if [ "$(${ns_a} ip -6 route list cache | wc -l)" -ne 2 ]; then
		err "  can't list cached exceptions"
		fail=1
	fi

	run_cmd ${ns_a} ip -6 route flush cache
	sleep 1
	pmtu1="$(route_get_dst_pmtu_from_exception "${ns_a}" ${dst1})"
	pmtu2="$(route_get_dst_pmtu_from_exception "${ns_a}" ${dst2})"
	if [ -n "${pmtu1}" ] || [ -n "${pmtu2}" ]; then
		err "  can't flush cached exceptions"
		fail=1
	fi

	return ${fail}
}

usage() {
	echo
	echo "$0 [OPTIONS] [TEST]..."