2018-05-24 14:27:48 +00:00
|
|
|
#!/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"
|
selftests: forwarding: Fix packet matching in mirroring selftests
In commit 6de6e46d27ef ("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: 6de6e46d27ef ("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>
2021-11-09 16:17:34 +00:00
|
|
|
do_test_span_vlan_dir_ips 10 "$h3.555" 111 "$direction" ip \
|
2018-05-24 14:27:48 +00:00
|
|
|
192.0.2.17 192.0.2.18
|
selftests: forwarding: Fix packet matching in mirroring selftests
In commit 6de6e46d27ef ("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: 6de6e46d27ef ("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>
2021-11-09 16:17:34 +00:00
|
|
|
do_test_span_vlan_dir_ips 0 "$h3.555" 555 "$direction" ip \
|
2018-05-24 14:27:48 +00:00
|
|
|
192.0.2.17 192.0.2.18
|
|
|
|
mirror_uninstall $swp1 $direction
|
|
|
|
|
2018-05-31 22:37:47 +00:00
|
|
|
log_test "$direction mirror tagged to vlan ($tcflags)"
|
2018-05-24 14:27:48 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
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
|
|
|
|
|
2018-05-31 22:37:44 +00:00
|
|
|
trap_uninstall $h3 ingress
|
2018-05-24 14:27:48 +00:00
|
|
|
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
|