af0a51113c
In commit6de6e46d27
("cls_flower: Fix inability to match GRE/IPIP packets"), cls_flower was fixed to match an outer packet of a tunneled packet as would be expected, rather than dissecting to the inner packet and matching on that. This fix uncovered several issues in packet matching in mirroring selftests: - in mirror_gre_bridge_1d_vlan.sh and mirror_gre_vlan_bridge_1q.sh, the vlan_ethtype match is copied around as "ip", even as some of the tests are running over ip6gretap. This is fixed by using an "ipv6" for vlan_ethtype in the ip6gretap tests. - in mirror_gre_changes.sh, a filter to count GRE packets is set up to match TTL of 50. This used to trigger in the offloaded datapath, where the envelope TTL was matched, but not in the software datapath, which considered TTL of the inner packet. Now that both match consistently, all the packets were double-counted. This is fixed by marking the filter as skip_hw, leaving only the SW datapath component active. Fixes:6de6e46d27
("cls_flower: Fix inability to match GRE/IPIP packets") Signed-off-by: Petr Machata <petrm@nvidia.com> Signed-off-by: David S. Miller <davem@davemloft.net>
132 lines
2.3 KiB
Bash
Executable File
132 lines
2.3 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
# This test uses standard topology for testing mirroring. See mirror_topo_lib.sh
|
|
# for more details.
|
|
#
|
|
# Test for "tc action mirred egress mirror" that mirrors to a vlan device.
|
|
|
|
ALL_TESTS="
|
|
test_vlan
|
|
test_tagged_vlan
|
|
"
|
|
|
|
NUM_NETIFS=6
|
|
source lib.sh
|
|
source mirror_lib.sh
|
|
source mirror_topo_lib.sh
|
|
|
|
setup_prepare()
|
|
{
|
|
h1=${NETIFS[p1]}
|
|
swp1=${NETIFS[p2]}
|
|
|
|
swp2=${NETIFS[p3]}
|
|
h2=${NETIFS[p4]}
|
|
|
|
swp3=${NETIFS[p5]}
|
|
h3=${NETIFS[p6]}
|
|
|
|
vrf_prepare
|
|
mirror_topo_create
|
|
|
|
vlan_create $swp3 555
|
|
|
|
vlan_create $h3 555 v$h3
|
|
matchall_sink_create $h3.555
|
|
|
|
vlan_create $h1 111 v$h1 192.0.2.17/28
|
|
bridge vlan add dev $swp1 vid 111
|
|
|
|
vlan_create $h2 111 v$h2 192.0.2.18/28
|
|
bridge vlan add dev $swp2 vid 111
|
|
}
|
|
|
|
cleanup()
|
|
{
|
|
pre_cleanup
|
|
|
|
vlan_destroy $h2 111
|
|
vlan_destroy $h1 111
|
|
vlan_destroy $h3 555
|
|
vlan_destroy $swp3 555
|
|
|
|
mirror_topo_destroy
|
|
vrf_cleanup
|
|
}
|
|
|
|
test_vlan_dir()
|
|
{
|
|
local direction=$1; shift
|
|
local forward_type=$1; shift
|
|
local backward_type=$1; shift
|
|
|
|
RET=0
|
|
|
|
mirror_install $swp1 $direction $swp3.555 "matchall $tcflags"
|
|
test_span_dir "$h3.555" "$direction" "$forward_type" "$backward_type"
|
|
mirror_uninstall $swp1 $direction
|
|
|
|
log_test "$direction mirror to vlan ($tcflags)"
|
|
}
|
|
|
|
test_vlan()
|
|
{
|
|
test_vlan_dir ingress 8 0
|
|
test_vlan_dir egress 0 8
|
|
}
|
|
|
|
test_tagged_vlan_dir()
|
|
{
|
|
local direction=$1; shift
|
|
local forward_type=$1; shift
|
|
local backward_type=$1; shift
|
|
|
|
RET=0
|
|
|
|
mirror_install $swp1 $direction $swp3.555 "matchall $tcflags"
|
|
do_test_span_vlan_dir_ips 10 "$h3.555" 111 "$direction" ip \
|
|
192.0.2.17 192.0.2.18
|
|
do_test_span_vlan_dir_ips 0 "$h3.555" 555 "$direction" ip \
|
|
192.0.2.17 192.0.2.18
|
|
mirror_uninstall $swp1 $direction
|
|
|
|
log_test "$direction mirror tagged to vlan ($tcflags)"
|
|
}
|
|
|
|
test_tagged_vlan()
|
|
{
|
|
test_tagged_vlan_dir ingress 8 0
|
|
test_tagged_vlan_dir egress 0 8
|
|
}
|
|
|
|
test_all()
|
|
{
|
|
slow_path_trap_install $swp1 ingress
|
|
slow_path_trap_install $swp1 egress
|
|
trap_install $h3 ingress
|
|
|
|
tests_run
|
|
|
|
trap_uninstall $h3 ingress
|
|
slow_path_trap_uninstall $swp1 egress
|
|
slow_path_trap_uninstall $swp1 ingress
|
|
}
|
|
|
|
trap cleanup EXIT
|
|
|
|
setup_prepare
|
|
setup_wait
|
|
|
|
tcflags="skip_hw"
|
|
test_all
|
|
|
|
if ! tc_offload_check; then
|
|
echo "WARN: Could not test offloaded functionality"
|
|
else
|
|
tcflags="skip_sw"
|
|
test_all
|
|
fi
|
|
|
|
exit $EXIT_STATUS
|