1239e754aSPetr Machata#!/bin/bash 2239e754aSPetr Machata# SPDX-License-Identifier: GPL-2.0 3239e754aSPetr Machata 4239e754aSPetr Machata# Test for "tc action mirred egress mirror" when the underlay route points at a 5239e754aSPetr Machata# bridge device with vlan filtering (802.1q). 6239e754aSPetr Machata# 7239e754aSPetr Machata# This test uses standard topology for testing mirror-to-gretap. See 8239e754aSPetr Machata# mirror_gre_topo_lib.sh for more details. The full topology is as follows: 9239e754aSPetr Machata# 10239e754aSPetr Machata# +---------------------+ +---------------------+ 11239e754aSPetr Machata# | H1 | | H2 | 12239e754aSPetr Machata# | + $h1 | | $h2 + | 13239e754aSPetr Machata# | | 192.0.2.1/28 | | 192.0.2.2/28 | | 14239e754aSPetr Machata# +-----|---------------+ +---------------|-----+ 15239e754aSPetr Machata# | | 16239e754aSPetr Machata# +-----|---------------------------------------------------------------|-----+ 17239e754aSPetr Machata# | SW o---> mirror | | 18239e754aSPetr Machata# | +---|---------------------------------------------------------------|---+ | 19239e754aSPetr Machata# | | + $swp1 + br1 (802.1q bridge) $swp2 + | | 20239e754aSPetr Machata# | | 192.0.2.129/28 | | 21239e754aSPetr Machata# | | + $swp3 2001:db8:2::1/64 | | 22239e754aSPetr Machata# | | | vid555 vid555[pvid,untagged] | | 23239e754aSPetr Machata# | +---|-------------------------------------------------------------------+ | 24239e754aSPetr Machata# | | ^ ^ | 25239e754aSPetr Machata# | | + gt6 (ip6gretap) | + gt4 (gretap) | | 26239e754aSPetr Machata# | | : loc=2001:db8:2::1 | : loc=192.0.2.129 | | 27239e754aSPetr Machata# | | : rem=2001:db8:2::2 -+ : rem=192.0.2.130 -+ | 28239e754aSPetr Machata# | | : ttl=100 : ttl=100 | 29239e754aSPetr Machata# | | : tos=inherit : tos=inherit | 30239e754aSPetr Machata# +-----|---------------------:------------------------:----------------------+ 31239e754aSPetr Machata# | : : 32239e754aSPetr Machata# +-----|---------------------:------------------------:----------------------+ 33239e754aSPetr Machata# | H3 + $h3 + h3-gt6(ip6gretap) + h3-gt4 (gretap) | 34239e754aSPetr Machata# | | loc=2001:db8:2::2 loc=192.0.2.130 | 35239e754aSPetr Machata# | + $h3.555 rem=2001:db8:2::1 rem=192.0.2.129 | 36239e754aSPetr Machata# | 192.0.2.130/28 ttl=100 ttl=100 | 37239e754aSPetr Machata# | 2001:db8:2::2/64 tos=inherit tos=inherit | 38239e754aSPetr Machata# +---------------------------------------------------------------------------+ 39239e754aSPetr Machata 40239e754aSPetr MachataALL_TESTS=" 41239e754aSPetr Machata test_gretap 42239e754aSPetr Machata test_ip6gretap 43239e754aSPetr Machata" 44239e754aSPetr Machata 45239e754aSPetr MachataNUM_NETIFS=6 46239e754aSPetr Machatasource lib.sh 47239e754aSPetr Machatasource mirror_lib.sh 48239e754aSPetr Machatasource mirror_gre_lib.sh 49239e754aSPetr Machatasource mirror_gre_topo_lib.sh 50239e754aSPetr Machata 51239e754aSPetr Machatasetup_prepare() 52239e754aSPetr Machata{ 53239e754aSPetr Machata h1=${NETIFS[p1]} 54239e754aSPetr Machata swp1=${NETIFS[p2]} 55239e754aSPetr Machata 56239e754aSPetr Machata swp2=${NETIFS[p3]} 57239e754aSPetr Machata h2=${NETIFS[p4]} 58239e754aSPetr Machata 59239e754aSPetr Machata swp3=${NETIFS[p5]} 60239e754aSPetr Machata h3=${NETIFS[p6]} 61239e754aSPetr Machata 62239e754aSPetr Machata vrf_prepare 63239e754aSPetr Machata mirror_gre_topo_create 643122257cSIdo Schimmel # Avoid changing br1's PVID while it is operational as a L3 interface. 653122257cSIdo Schimmel ip link set dev br1 down 66239e754aSPetr Machata 67239e754aSPetr Machata ip link set dev $swp3 master br1 68239e754aSPetr Machata bridge vlan add dev br1 vid 555 pvid untagged self 693122257cSIdo Schimmel ip link set dev br1 up 70239e754aSPetr Machata ip address add dev br1 192.0.2.129/28 71239e754aSPetr Machata ip address add dev br1 2001:db8:2::1/64 72239e754aSPetr Machata 73239e754aSPetr Machata ip -4 route add 192.0.2.130/32 dev br1 74239e754aSPetr Machata ip -6 route add 2001:db8:2::2/128 dev br1 75239e754aSPetr Machata 76239e754aSPetr Machata vlan_create $h3 555 v$h3 192.0.2.130/28 2001:db8:2::2/64 77239e754aSPetr Machata bridge vlan add dev $swp3 vid 555 78239e754aSPetr Machata} 79239e754aSPetr Machata 80239e754aSPetr Machatacleanup() 81239e754aSPetr Machata{ 82239e754aSPetr Machata pre_cleanup 83239e754aSPetr Machata 84239e754aSPetr Machata ip link set dev $swp3 nomaster 85239e754aSPetr Machata vlan_destroy $h3 555 86239e754aSPetr Machata 87239e754aSPetr Machata mirror_gre_topo_destroy 88239e754aSPetr Machata vrf_cleanup 89239e754aSPetr Machata} 90239e754aSPetr Machata 91239e754aSPetr Machatatest_gretap() 92239e754aSPetr Machata{ 93*c7c059fbSDanielle Ratson ip neigh replace 192.0.2.130 lladdr $(mac_get $h3) \ 94*c7c059fbSDanielle Ratson nud permanent dev br1 95239e754aSPetr Machata full_test_span_gre_dir gt4 ingress 8 0 "mirror to gretap" 96239e754aSPetr Machata full_test_span_gre_dir gt4 egress 0 8 "mirror to gretap" 97239e754aSPetr Machata} 98239e754aSPetr Machata 99239e754aSPetr Machatatest_ip6gretap() 100239e754aSPetr Machata{ 101*c7c059fbSDanielle Ratson ip neigh replace 2001:db8:2::2 lladdr $(mac_get $h3) \ 102*c7c059fbSDanielle Ratson nud permanent dev br1 103239e754aSPetr Machata full_test_span_gre_dir gt6 ingress 8 0 "mirror to ip6gretap" 104239e754aSPetr Machata full_test_span_gre_dir gt6 egress 0 8 "mirror to ip6gretap" 105239e754aSPetr Machata} 106239e754aSPetr Machata 107239e754aSPetr Machatatests() 108239e754aSPetr Machata{ 109239e754aSPetr Machata slow_path_trap_install $swp1 ingress 110239e754aSPetr Machata slow_path_trap_install $swp1 egress 111239e754aSPetr Machata 112239e754aSPetr Machata tests_run 113239e754aSPetr Machata 114239e754aSPetr Machata slow_path_trap_uninstall $swp1 egress 115239e754aSPetr Machata slow_path_trap_uninstall $swp1 ingress 116239e754aSPetr Machata} 117239e754aSPetr Machata 118239e754aSPetr Machatatrap cleanup EXIT 119239e754aSPetr Machata 120239e754aSPetr Machatasetup_prepare 121239e754aSPetr Machatasetup_wait 122239e754aSPetr Machata 123239e754aSPetr Machatatcflags="skip_hw" 124239e754aSPetr Machatatests 125239e754aSPetr Machata 126239e754aSPetr Machataif ! tc_offload_check; then 127239e754aSPetr Machata echo "WARN: Could not test offloaded functionality" 128239e754aSPetr Machataelse 129239e754aSPetr Machata tcflags="skip_sw" 130239e754aSPetr Machata tests 131239e754aSPetr Machatafi 132239e754aSPetr Machata 133239e754aSPetr Machataexit $EXIT_STATUS 134