snap_tc_marks() {
dev="$1"
tc -s filter show dev "$dev" 2>/dev/null | awk '
/ mark 0x/ {
mark=$2; mask=$3; suc=0
for(i=1;i<=NF;i++) if($i=="(success") { suc=$(i+1); gsub(/\)/,"",suc) }
printf "%s %s %s\n", mark, mask, suc
}
' | sort
}
diff_tc_marks() {
awk 'NR==FNR { b[$1 FS $2]=$3; next }
{ k=$1 FS $2; d=$3-(b[k]+0); if(d) printf "%-12s %-12s %+d\n",$1,$2,d }' \
"$1" "$2" | sort -k3,3nr
}
tcwan="$(cat /sys/module/tdts_udb/parameters/qos_wan 2>/dev/null || nvram get wan_ifname)"
snap_tc_marks br0 > /tmp/m.br0.before
snap_tc_marks "$tcwan" > /tmp/m.tcwan.before
# (speedtest ran here)
snap_tc_marks br0 > /tmp/m.br0.after
snap_tc_marks "$tcwan" > /tmp/m.tcwan.after
diff_tc_marks /tmp/m.br0.before /tmp/m.br0.after
diff_tc_marks /tmp/m.tcwan.before /tmp/m.tcwan.after