This test checks that route exceptions can be successfully listed and flushed using ip -6 route {list,flush} cache.
Signed-off-by: Stefano Brivio <sbri...@redhat.com> --- This will cause a minor conflict with David Ahern's patch: "[PATCH net-next 17/19] selftests: pmtu: Add support for routing via nexthop objects", currently under review. The "re-run with nh" flag for this test in the test list will need to be set to 1. I can also re-submit this based on that patch, if it helps. tools/testing/selftests/net/pmtu.sh | 51 ++++++++++++++++++++++++++++- 1 file changed, 50 insertions(+), 1 deletion(-) diff --git a/tools/testing/selftests/net/pmtu.sh b/tools/testing/selftests/net/pmtu.sh index 4a1275990d7e..efda4fb1c989 100755 --- a/tools/testing/selftests/net/pmtu.sh +++ b/tools/testing/selftests/net/pmtu.sh @@ -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. @@ -150,7 +154,8 @@ tests=" pmtu_vti6_link_add_mtu vti6: MTU setting on link creation pmtu_vti6_link_change_mtu vti6: MTU changes on link changes cleanup_ipv4_exception ipv4: cleanup of cached exceptions - cleanup_ipv6_exception ipv6: cleanup of cached exceptions" + cleanup_ipv6_exception ipv6: cleanup of cached exceptions + list_flush_ipv6_exception ipv6: list and flush cached exceptions" NS_A="ns-A" NS_B="ns-B" @@ -1090,6 +1095,50 @@ test_cleanup_ipv4_exception() { test_cleanup_vxlanX_exception 4 } +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]..." -- 2.20.1