Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests: forwarding: Test mirror-to-gretap w/ UL 802.1d

Test for "tc action mirred egress mirror" that mirrors to gretap when
the underlay route points at a VLAN-unaware bridge (802.1d).

Signed-off-by: Petr Machata <petrm@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>

authored by

Petr Machata and committed by
David S. Miller
35c31d5c 2d1b1385

+132
+132
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1d.sh
··· 1 + #!/bin/bash 2 + # SPDX-License-Identifier: GPL-2.0 3 + 4 + # Test for "tc action mirred egress mirror" when the underlay route points at a 5 + # bridge device without vlan filtering (802.1d). 6 + # 7 + # This test uses standard topology for testing mirror-to-gretap. See 8 + # mirror_gre_topo_lib.sh for more details. The full topology is as follows: 9 + # 10 + # +---------------------+ +---------------------+ 11 + # | H1 | | H2 | 12 + # | + $h1 | | $h2 + | 13 + # | | 192.0.2.1/28 | | 192.0.2.2/28 | | 14 + # +-----|---------------+ +---------------|-----+ 15 + # | | 16 + # +-----|-------------------------------------------------------------|-----+ 17 + # | SW o---> mirror | | 18 + # | +---|-------------------------------------------------------------|---+ | 19 + # | | + $swp1 + br1 (802.1q bridge) $swp2 + | | 20 + # | +---------------------------------------------------------------------+ | 21 + # | | 22 + # | +---------------------------------------------------------------------+ | 23 + # | | + br2 (802.1d bridge) | | 24 + # | | 192.0.2.129/28 | | 25 + # | | + $swp3 2001:db8:2::1/64 | | 26 + # | +---|-----------------------------------------------------------------+ | 27 + # | | ^ ^ | 28 + # | | + gt6 (ip6gretap) | + gt4 (gretap) | | 29 + # | | : loc=2001:db8:2::1 | : loc=192.0.2.129 | | 30 + # | | : rem=2001:db8:2::2 -+ : rem=192.0.2.130 -+ | 31 + # | | : ttl=100 : ttl=100 | 32 + # | | : tos=inherit : tos=inherit | 33 + # +-----|---------------------:----------------------:----------------------+ 34 + # | : : 35 + # +-----|---------------------:----------------------:----------------------+ 36 + # | H3 + $h3 + h3-gt6(ip6gretap) + h3-gt4 (gretap) | 37 + # | 192.0.2.130/28 loc=2001:db8:2::2 loc=192.0.2.130 | 38 + # | 2001:db8:2::2/64 rem=2001:db8:2::1 rem=192.0.2.129 | 39 + # | ttl=100 ttl=100 | 40 + # | tos=inherit tos=inherit | 41 + # +-------------------------------------------------------------------------+ 42 + 43 + ALL_TESTS=" 44 + test_gretap 45 + test_ip6gretap 46 + " 47 + 48 + NUM_NETIFS=6 49 + source lib.sh 50 + source mirror_lib.sh 51 + source mirror_gre_lib.sh 52 + source mirror_gre_topo_lib.sh 53 + 54 + setup_prepare() 55 + { 56 + h1=${NETIFS[p1]} 57 + swp1=${NETIFS[p2]} 58 + 59 + swp2=${NETIFS[p3]} 60 + h2=${NETIFS[p4]} 61 + 62 + swp3=${NETIFS[p5]} 63 + h3=${NETIFS[p6]} 64 + 65 + vrf_prepare 66 + mirror_gre_topo_create 67 + 68 + ip link add name br2 type bridge vlan_filtering 0 69 + ip link set dev br2 up 70 + 71 + ip link set dev $swp3 master br2 72 + ip route add 192.0.2.130/32 dev br2 73 + ip -6 route add 2001:db8:2::2/128 dev br2 74 + 75 + ip address add dev br2 192.0.2.129/28 76 + ip address add dev br2 2001:db8:2::1/64 77 + 78 + ip address add dev $h3 192.0.2.130/28 79 + ip address add dev $h3 2001:db8:2::2/64 80 + } 81 + 82 + cleanup() 83 + { 84 + pre_cleanup 85 + 86 + ip address del dev $h3 2001:db8:2::2/64 87 + ip address del dev $h3 192.0.2.130/28 88 + ip link del dev br2 89 + 90 + mirror_gre_topo_destroy 91 + vrf_cleanup 92 + } 93 + 94 + test_gretap() 95 + { 96 + full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap" 97 + full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap" 98 + } 99 + 100 + test_ip6gretap() 101 + { 102 + full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap" 103 + full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap" 104 + } 105 + 106 + test_all() 107 + { 108 + slow_path_trap_install $swp1 ingress 109 + slow_path_trap_install $swp1 egress 110 + 111 + tests_run 112 + 113 + slow_path_trap_uninstall $swp1 egress 114 + slow_path_trap_uninstall $swp1 ingress 115 + } 116 + 117 + trap cleanup EXIT 118 + 119 + setup_prepare 120 + setup_wait 121 + 122 + tcflags="skip_hw" 123 + test_all 124 + 125 + if ! tc_offload_check; then 126 + echo "WARN: Could not test offloaded functionality" 127 + else 128 + tcflags="skip_sw" 129 + test_all 130 + fi 131 + 132 + exit $EXIT_STATUS