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."
|
||
|
}
|