To simplify implementation of mirror-to-gretap tests, extend lib.sh with several new functions that might potentially be useful more broadly (although right now the mirroring tests will be the only client). Also add mirror_lib.sh with code useful for mirroring tests, mirror_gre_lib.sh with code specifically useful for mirror-to-gretap tests, and mirror_gre_topo.sh that primes a given test with a good baseline topology that the test can then tweak to its liking. Signed-off-by: Petr Machata <petrm@mellanox.com> Reviewed-by: Jiri Pirko <jiri@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
41 lines
898 B
Bash
41 lines
898 B
Bash
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
mirror_install()
|
|
{
|
|
local from_dev=$1; shift
|
|
local direction=$1; shift
|
|
local to_dev=$1; shift
|
|
local filter=$1; shift
|
|
|
|
tc filter add dev $from_dev $direction \
|
|
pref 1000 $filter \
|
|
action mirred egress mirror dev $to_dev
|
|
}
|
|
|
|
mirror_uninstall()
|
|
{
|
|
local from_dev=$1; shift
|
|
local direction=$1; shift
|
|
|
|
tc filter del dev $swp1 $direction pref 1000
|
|
}
|
|
|
|
mirror_test()
|
|
{
|
|
local vrf_name=$1; shift
|
|
local sip=$1; shift
|
|
local dip=$1; shift
|
|
local dev=$1; shift
|
|
local pref=$1; shift
|
|
local expect=$1; shift
|
|
|
|
local t0=$(tc_rule_stats_get $dev $pref)
|
|
ip vrf exec $vrf_name \
|
|
${PING} ${sip:+-I $sip} $dip -c 10 -i 0.1 -w 2 &> /dev/null
|
|
local t1=$(tc_rule_stats_get $dev $pref)
|
|
local delta=$((t1 - t0))
|
|
# Tolerate a couple stray extra packets.
|
|
((expect <= delta && delta <= expect + 2))
|
|
check_err $? "Expected to capture $expect packets, got $delta."
|
|
}
|