qos-scripts: drop the use of IMQ, use ifb and act_connmark instead
[openwrt/svn-archive/archive.git] / package / qos-scripts / files / usr / bin / qos-stat
index d7858d7a11c883fb1da59f40ba9ba5aad41e69c4..8a39df084700aaf3ebe13a5a6d950e858a0e88f0 100755 (executable)
@@ -33,26 +33,34 @@ print_comments() {
        echo ''
 }      
 
+get_device() {
+       ( config_load network; scan_interfaces; config_get "$1" ifname )
+}
+
 interface_stats() {
        local interface="$1"
        local device
 
-       config_get device "$interface" device
+       device="$(get_device "$interface")"
+       [ -z "$device" ] && config_get device "$interface" device
        config_get_bool enabled "$interface" enabled 1
        [ -z "$device" -o 1 -ne "$enabled" ] && {
                return 1
        }
-       config_get_bool halfduplex "$interface" halfduplex
+       config_get_bool halfduplex "$interface" halfduplex 0
 
-       [ 1 -ne "$halfduplex" ] && {
+       if [ 1 -ne "$halfduplex" ]; then
                unset halfduplex
                print_comments "$interface" "Egress" "Start"
                tc -s class show dev "$device"
                print_comments "$interface" "Egress" "End"
-       }
+               id="root"
+       else
+               id=""
+       fi
 
        print_comments "$interface" "Ingress${halfduplex:+/Egress}" "Start"
-       tc -s class show dev "$(iptables -v -L PREROUTING -t mangle | awk '/IMQ: todev .*$/ && $6 ~ /'$device'/ {print "imq"$12}')"
+       tc -s class show dev "$(tc filter show dev $device $id | grep mirred | sed -e 's,.*\(ifb.*\)).*,\1,')"
        print_comments "$interface" "Ingress${halfduplex:+/Egress}" "End"
 }