File Index
Files and directories
Sign in
FILE

mirror_gre_nh.sh

File preview with syntax highlighting.

linux-6.19.14/tools/testing/selftests/net/forwarding/mirror_gre_nh.sh BASH
  1#!/bin/bash
  2# SPDX-License-Identifier: GPL-2.0
  3
  4# This test uses standard topology for testing gretap. See
  5# mirror_gre_topo_lib.sh for more details.
  6#
  7# Test that gretap and ip6gretap mirroring works when the other tunnel endpoint
  8# is reachable through a next-hop route (as opposed to directly-attached route).
  9
 10ALL_TESTS="
 11	test_gretap
 12	test_ip6gretap
 13"
 14
 15NUM_NETIFS=6
 16source lib.sh
 17source mirror_lib.sh
 18source mirror_gre_lib.sh
 19source mirror_gre_topo_lib.sh
 20
 21setup_prepare()
 22{
 23	h1=${NETIFS[p1]}
 24	swp1=${NETIFS[p2]}
 25
 26	swp2=${NETIFS[p3]}
 27	h2=${NETIFS[p4]}
 28
 29	swp3=${NETIFS[p5]}
 30	h3=${NETIFS[p6]}
 31
 32	sysctl_set net.ipv4.conf.all.rp_filter 0
 33	sysctl_set net.ipv4.conf.$h3.rp_filter 0
 34
 35	vrf_prepare
 36	mirror_gre_topo_create
 37
 38	sysctl_set net.ipv4.conf.v$h3.rp_filter 0
 39
 40	ip address add dev $swp3 192.0.2.161/28
 41	ip address add dev $h3 192.0.2.162/28
 42	ip address add dev gt4 192.0.2.129/32
 43	ip address add dev h3-gt4 192.0.2.130/32
 44
 45	# IPv6 route can't be added after address. Such routes are rejected due
 46	# to the gateway address having been configured on the local system. It
 47	# works the other way around though.
 48	ip address add dev $swp3 2001:db8:4::1/64
 49	ip -6 route add 2001:db8:2::2/128 via 2001:db8:4::2
 50	ip address add dev $h3 2001:db8:4::2/64
 51	ip address add dev gt6 2001:db8:2::1
 52	ip address add dev h3-gt6 2001:db8:2::2
 53}
 54
 55cleanup()
 56{
 57	pre_cleanup
 58
 59	ip -6 route del 2001:db8:2::2/128 via 2001:db8:4::2
 60	ip address del dev $h3 2001:db8:4::2/64
 61	ip address del dev $swp3 2001:db8:4::1/64
 62
 63	ip address del dev $h3 192.0.2.162/28
 64	ip address del dev $swp3 192.0.2.161/28
 65
 66	sysctl_restore net.ipv4.conf.v$h3.rp_filter 0
 67
 68	mirror_gre_topo_destroy
 69	vrf_cleanup
 70
 71	sysctl_restore net.ipv4.conf.$h3.rp_filter
 72	sysctl_restore net.ipv4.conf.all.rp_filter
 73}
 74
 75test_gretap()
 76{
 77	RET=0
 78	mirror_install $swp1 ingress gt4 "matchall"
 79
 80	# For IPv4, test that there's no mirroring without the route directing
 81	# the traffic to tunnel remote address. Then add it and test that
 82	# mirroring starts. For IPv6 we can't test this due to the limitation
 83	# that routes for locally-specified IPv6 addresses can't be added.
 84	fail_test_span_gre_dir gt4
 85
 86	ip route add 192.0.2.130/32 via 192.0.2.162
 87	quick_test_span_gre_dir gt4
 88	ip route del 192.0.2.130/32 via 192.0.2.162
 89
 90	mirror_uninstall $swp1 ingress
 91	log_test "mirror to gre with next-hop remote"
 92}
 93
 94test_ip6gretap()
 95{
 96	RET=0
 97
 98	mirror_install $swp1 ingress gt6 "matchall"
 99	quick_test_span_gre_dir gt6
100	mirror_uninstall $swp1 ingress
101
102	log_test "mirror to ip6gre with next-hop remote"
103}
104
105trap cleanup EXIT
106
107setup_prepare
108setup_wait
109
110tests_run
111
112exit $EXIT_STATUS
~/ Read-only file preview.