| #!/bin/bash |
| # SPDX-License-Identifier: GPL-2.0 |
| |
| CHECK_TC="yes" |
| |
| # 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 |
| } |
| |
| tc_check_packets() |
| { |
| local id=$1 |
| local handle=$2 |
| local count=$3 |
| |
| __tc_check_packets "$id" "$handle" "$count" "==" |
| } |
| |
| tc_check_packets_hitting() |
| { |
| local id=$1 |
| local handle=$2 |
| |
| __tc_check_packets "$id" "$handle" 0 ">" |
| } |