2018-02-28 10:25:16 +00:00
|
|
|
#!/bin/bash
|
|
|
|
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
|
2018-03-01 21:49:30 +00:00
|
|
|
CHECK_TC="yes"
|
|
|
|
|
2019-11-28 12:38:57 +00:00
|
|
|
# Can be overridden by the configuration file. See lib.sh
|
|
|
|
TC_HIT_TIMEOUT=${TC_HIT_TIMEOUT:=1000} # ms
|
|
|
|
|
|
|
|
__tc_check_packets()
|
|
|
|
{
|
|
|
|
local id=$1
|
|
|
|
local handle=$2
|
|
|
|
local count=$3
|
|
|
|
local operator=$4
|
|
|
|
|
|
|
|
start_time="$(date -u +%s%3N)"
|
|
|
|
while true
|
|
|
|
do
|
|
|
|
cmd_jq "tc -j -s filter show $id" \
|
|
|
|
".[] | select(.options.handle == $handle) | \
|
|
|
|
select(.options.actions[0].stats.packets $operator $count)" \
|
|
|
|
&> /dev/null
|
|
|
|
ret=$?
|
|
|
|
if [[ $ret -eq 0 ]]; then
|
|
|
|
return $ret
|
|
|
|
fi
|
|
|
|
current_time="$(date -u +%s%3N)"
|
|
|
|
diff=$(expr $current_time - $start_time)
|
|
|
|
if [ "$diff" -gt "$TC_HIT_TIMEOUT" ]; then
|
|
|
|
return 1
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
}
|
|
|
|
|
2018-02-28 10:25:16 +00:00
|
|
|
tc_check_packets()
|
|
|
|
{
|
|
|
|
local id=$1
|
|
|
|
local handle=$2
|
|
|
|
local count=$3
|
|
|
|
|
2019-11-28 12:38:57 +00:00
|
|
|
__tc_check_packets "$id" "$handle" "$count" "=="
|
2018-02-28 10:25:16 +00:00
|
|
|
}
|
2019-11-07 16:42:19 +00:00
|
|
|
|
|
|
|
tc_check_packets_hitting()
|
|
|
|
{
|
|
|
|
local id=$1
|
|
|
|
local handle=$2
|
|
|
|
|
2019-11-28 12:38:57 +00:00
|
|
|
__tc_check_packets "$id" "$handle" 0 ">"
|
2019-11-07 16:42:19 +00:00
|
|
|
}
|