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.1q

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

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
239e754a 35c31d5c

+126
+126
tools/testing/selftests/net/forwarding/mirror_gre_bridge_1q.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 with vlan filtering (802.1q). 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 + # | | 192.0.2.129/28 | | 21 + # | | + $swp3 2001:db8:2::1/64 | | 22 + # | | | vid555 vid555[pvid,untagged] | | 23 + # | +---|-------------------------------------------------------------------+ | 24 + # | | ^ ^ | 25 + # | | + gt6 (ip6gretap) | + gt4 (gretap) | | 26 + # | | : loc=2001:db8:2::1 | : loc=192.0.2.129 | | 27 + # | | : rem=2001:db8:2::2 -+ : rem=192.0.2.130 -+ | 28 + # | | : ttl=100 : ttl=100 | 29 + # | | : tos=inherit : tos=inherit | 30 + # +-----|---------------------:------------------------:----------------------+ 31 + # | : : 32 + # +-----|---------------------:------------------------:----------------------+ 33 + # | H3 + $h3 + h3-gt6(ip6gretap) + h3-gt4 (gretap) | 34 + # | | loc=2001:db8:2::2 loc=192.0.2.130 | 35 + # | + $h3.555 rem=2001:db8:2::1 rem=192.0.2.129 | 36 + # | 192.0.2.130/28 ttl=100 ttl=100 | 37 + # | 2001:db8:2::2/64 tos=inherit tos=inherit | 38 + # +---------------------------------------------------------------------------+ 39 + 40 + ALL_TESTS=" 41 + test_gretap 42 + test_ip6gretap 43 + " 44 + 45 + NUM_NETIFS=6 46 + source lib.sh 47 + source mirror_lib.sh 48 + source mirror_gre_lib.sh 49 + source mirror_gre_topo_lib.sh 50 + 51 + setup_prepare() 52 + { 53 + h1=${NETIFS[p1]} 54 + swp1=${NETIFS[p2]} 55 + 56 + swp2=${NETIFS[p3]} 57 + h2=${NETIFS[p4]} 58 + 59 + swp3=${NETIFS[p5]} 60 + h3=${NETIFS[p6]} 61 + 62 + vrf_prepare 63 + mirror_gre_topo_create 64 + 65 + ip link set dev $swp3 master br1 66 + bridge vlan add dev br1 vid 555 pvid untagged self 67 + ip address add dev br1 192.0.2.129/28 68 + ip address add dev br1 2001:db8:2::1/64 69 + 70 + ip -4 route add 192.0.2.130/32 dev br1 71 + ip -6 route add 2001:db8:2::2/128 dev br1 72 + 73 + vlan_create $h3 555 v$h3 192.0.2.130/28 2001:db8:2::2/64 74 + bridge vlan add dev $swp3 vid 555 75 + } 76 + 77 + cleanup() 78 + { 79 + pre_cleanup 80 + 81 + ip link set dev $swp3 nomaster 82 + vlan_destroy $h3 555 83 + 84 + mirror_gre_topo_destroy 85 + vrf_cleanup 86 + } 87 + 88 + test_gretap() 89 + { 90 + full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap" 91 + full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap" 92 + } 93 + 94 + test_ip6gretap() 95 + { 96 + full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap" 97 + full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap" 98 + } 99 + 100 + tests() 101 + { 102 + slow_path_trap_install $swp1 ingress 103 + slow_path_trap_install $swp1 egress 104 + 105 + tests_run 106 + 107 + slow_path_trap_uninstall $swp1 egress 108 + slow_path_trap_uninstall $swp1 ingress 109 + } 110 + 111 + trap cleanup EXIT 112 + 113 + setup_prepare 114 + setup_wait 115 + 116 + tcflags="skip_hw" 117 + tests 118 + 119 + if ! tc_offload_check; then 120 + echo "WARN: Could not test offloaded functionality" 121 + else 122 + tcflags="skip_sw" 123 + tests 124 + fi 125 + 126 + exit $EXIT_STATUS