135388a6aSPetr Machata#!/bin/bash 235388a6aSPetr Machata# SPDX-License-Identifier: GPL-2.0 335388a6aSPetr Machata 435388a6aSPetr Machata# This test uses standard topology for testing mirroring. See mirror_topo_lib.sh 535388a6aSPetr Machata# for more details. 635388a6aSPetr Machata# 735388a6aSPetr Machata# Test for "tc action mirred egress mirror" that mirrors to a vlan device. 835388a6aSPetr Machata 935388a6aSPetr MachataALL_TESTS=" 1035388a6aSPetr Machata test_vlan 1135388a6aSPetr Machata test_tagged_vlan 1235388a6aSPetr Machata" 1335388a6aSPetr Machata 1435388a6aSPetr MachataNUM_NETIFS=6 1535388a6aSPetr Machatasource lib.sh 1635388a6aSPetr Machatasource mirror_lib.sh 1735388a6aSPetr Machatasource mirror_topo_lib.sh 1835388a6aSPetr Machata 1935388a6aSPetr Machatasetup_prepare() 2035388a6aSPetr Machata{ 2135388a6aSPetr Machata h1=${NETIFS[p1]} 2235388a6aSPetr Machata swp1=${NETIFS[p2]} 2335388a6aSPetr Machata 2435388a6aSPetr Machata swp2=${NETIFS[p3]} 2535388a6aSPetr Machata h2=${NETIFS[p4]} 2635388a6aSPetr Machata 2735388a6aSPetr Machata swp3=${NETIFS[p5]} 2835388a6aSPetr Machata h3=${NETIFS[p6]} 2935388a6aSPetr Machata 3035388a6aSPetr Machata vrf_prepare 3135388a6aSPetr Machata mirror_topo_create 3235388a6aSPetr Machata 3335388a6aSPetr Machata vlan_create $swp3 555 3435388a6aSPetr Machata 3535388a6aSPetr Machata vlan_create $h3 555 v$h3 3635388a6aSPetr Machata matchall_sink_create $h3.555 3735388a6aSPetr Machata 3835388a6aSPetr Machata vlan_create $h1 111 v$h1 192.0.2.17/28 3935388a6aSPetr Machata bridge vlan add dev $swp1 vid 111 4035388a6aSPetr Machata 4135388a6aSPetr Machata vlan_create $h2 111 v$h2 192.0.2.18/28 4235388a6aSPetr Machata bridge vlan add dev $swp2 vid 111 4335388a6aSPetr Machata} 4435388a6aSPetr Machata 4535388a6aSPetr Machatacleanup() 4635388a6aSPetr Machata{ 4735388a6aSPetr Machata pre_cleanup 4835388a6aSPetr Machata 4935388a6aSPetr Machata vlan_destroy $h2 111 5035388a6aSPetr Machata vlan_destroy $h1 111 5135388a6aSPetr Machata vlan_destroy $h3 555 5235388a6aSPetr Machata vlan_destroy $swp3 555 5335388a6aSPetr Machata 5435388a6aSPetr Machata mirror_topo_destroy 5535388a6aSPetr Machata vrf_cleanup 5635388a6aSPetr Machata} 5735388a6aSPetr Machata 5835388a6aSPetr Machatatest_vlan_dir() 5935388a6aSPetr Machata{ 6035388a6aSPetr Machata local direction=$1; shift 6135388a6aSPetr Machata local forward_type=$1; shift 6235388a6aSPetr Machata local backward_type=$1; shift 6335388a6aSPetr Machata 6435388a6aSPetr Machata RET=0 6535388a6aSPetr Machata 6635388a6aSPetr Machata mirror_install $swp1 $direction $swp3.555 "matchall $tcflags" 6735388a6aSPetr Machata test_span_dir "$h3.555" "$direction" "$forward_type" "$backward_type" 6835388a6aSPetr Machata mirror_uninstall $swp1 $direction 6935388a6aSPetr Machata 7035388a6aSPetr Machata log_test "$direction mirror to vlan ($tcflags)" 7135388a6aSPetr Machata} 7235388a6aSPetr Machata 7335388a6aSPetr Machatatest_vlan() 7435388a6aSPetr Machata{ 7535388a6aSPetr Machata test_vlan_dir ingress 8 0 7635388a6aSPetr Machata test_vlan_dir egress 0 8 7735388a6aSPetr Machata} 7835388a6aSPetr Machata 7935388a6aSPetr Machatatest_tagged_vlan_dir() 8035388a6aSPetr Machata{ 8135388a6aSPetr Machata local direction=$1; shift 8235388a6aSPetr Machata local forward_type=$1; shift 8335388a6aSPetr Machata local backward_type=$1; shift 8435388a6aSPetr Machata 8535388a6aSPetr Machata RET=0 8635388a6aSPetr Machata 8735388a6aSPetr Machata mirror_install $swp1 $direction $swp3.555 "matchall $tcflags" 88*af0a5111SPetr Machata do_test_span_vlan_dir_ips 10 "$h3.555" 111 "$direction" ip \ 8935388a6aSPetr Machata 192.0.2.17 192.0.2.18 90*af0a5111SPetr Machata do_test_span_vlan_dir_ips 0 "$h3.555" 555 "$direction" ip \ 9135388a6aSPetr Machata 192.0.2.17 192.0.2.18 9235388a6aSPetr Machata mirror_uninstall $swp1 $direction 9335388a6aSPetr Machata 946ebe5a7aSPetr Machata log_test "$direction mirror tagged to vlan ($tcflags)" 9535388a6aSPetr Machata} 9635388a6aSPetr Machata 9735388a6aSPetr Machatatest_tagged_vlan() 9835388a6aSPetr Machata{ 9935388a6aSPetr Machata test_tagged_vlan_dir ingress 8 0 10035388a6aSPetr Machata test_tagged_vlan_dir egress 0 8 10135388a6aSPetr Machata} 10235388a6aSPetr Machata 10335388a6aSPetr Machatatest_all() 10435388a6aSPetr Machata{ 10535388a6aSPetr Machata slow_path_trap_install $swp1 ingress 10635388a6aSPetr Machata slow_path_trap_install $swp1 egress 10735388a6aSPetr Machata trap_install $h3 ingress 10835388a6aSPetr Machata 10935388a6aSPetr Machata tests_run 11035388a6aSPetr Machata 11100d56229SPetr Machata trap_uninstall $h3 ingress 11235388a6aSPetr Machata slow_path_trap_uninstall $swp1 egress 11335388a6aSPetr Machata slow_path_trap_uninstall $swp1 ingress 11435388a6aSPetr Machata} 11535388a6aSPetr Machata 11635388a6aSPetr Machatatrap cleanup EXIT 11735388a6aSPetr Machata 11835388a6aSPetr Machatasetup_prepare 11935388a6aSPetr Machatasetup_wait 12035388a6aSPetr Machata 12135388a6aSPetr Machatatcflags="skip_hw" 12235388a6aSPetr Machatatest_all 12335388a6aSPetr Machata 12435388a6aSPetr Machataif ! tc_offload_check; then 12535388a6aSPetr Machata echo "WARN: Could not test offloaded functionality" 12635388a6aSPetr Machataelse 12735388a6aSPetr Machata tcflags="skip_sw" 12835388a6aSPetr Machata test_all 12935388a6aSPetr Machatafi 13035388a6aSPetr Machata 13135388a6aSPetr Machataexit $EXIT_STATUS 132