1# SPDX-License-Identifier: GPL-2.0 2 3mirror_install() 4{ 5 local from_dev=$1; shift 6 local direction=$1; shift 7 local to_dev=$1; shift 8 local filter=$1; shift 9 10 tc filter add dev $from_dev $direction \ 11 pref 1000 $filter \ 12 action mirred egress mirror dev $to_dev 13} 14 15mirror_uninstall() 16{ 17 local from_dev=$1; shift 18 local direction=$1; shift 19 20 tc filter del dev $swp1 $direction pref 1000 21} 22 23mirror_test() 24{ 25 local vrf_name=$1; shift 26 local sip=$1; shift 27 local dip=$1; shift 28 local dev=$1; shift 29 local pref=$1; shift 30 local expect=$1; shift 31 32 local t0=$(tc_rule_stats_get $dev $pref) 33 ip vrf exec $vrf_name \ 34 ${PING} ${sip:+-I $sip} $dip -c 10 -i 0.1 -w 2 &> /dev/null 35 local t1=$(tc_rule_stats_get $dev $pref) 36 local delta=$((t1 - t0)) 37 # Tolerate a couple stray extra packets. 38 ((expect <= delta && delta <= expect + 2)) 39 check_err $? "Expected to capture $expect packets, got $delta." 40} 41