Changeset 25640


Ignore:
Timestamp:
2011-02-21T02:33:27+01:00 (7 years ago)
Author:
nbd
Message:

qos-scripts: drop the use of IMQ, use ifb and act_connmark instead

Location:
trunk/package/qos-scripts
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/package/qos-scripts/Makefile

    r25052 r25640  
    1919  SECTION:=utils 
    2020  CATEGORY:=Base system 
    21   DEPENDS:=+tc +kmod-sched +iptables +iptables-mod-filter +iptables-mod-ipopt +iptables-mod-conntrack-extra +iptables-mod-imq 
     21  DEPENDS:=+tc +kmod-sched +iptables +iptables-mod-filter +iptables-mod-ipopt +iptables-mod-conntrack-extra 
    2222  TITLE:=QoS scripts 
    2323  PKGARCH:=all 
  • trunk/package/qos-scripts/files/usr/bin/qos-stat

    r25052 r25640  
    3434}        
    3535 
     36get_device() { 
     37        ( config_load network; scan_interfaces; config_get "$1" ifname ) 
     38} 
     39 
    3640interface_stats() { 
    3741        local interface="$1" 
    3842        local device 
    3943 
    40         config_get device "$interface" device 
     44        device="$(get_device "$interface")" 
     45        [ -z "$device" ] && config_get device "$interface" device 
    4146        config_get_bool enabled "$interface" enabled 1 
    4247        [ -z "$device" -o 1 -ne "$enabled" ] && { 
    4348                return 1 
    4449        } 
    45         config_get_bool halfduplex "$interface" halfduplex 
     50        config_get_bool halfduplex "$interface" halfduplex 0 
    4651 
    47         [ 1 -ne "$halfduplex" ] && { 
     52        if [ 1 -ne "$halfduplex" ]; then 
    4853                unset halfduplex 
    4954                print_comments "$interface" "Egress" "Start" 
    5055                tc -s class show dev "$device" 
    5156                print_comments "$interface" "Egress" "End" 
    52         } 
     57                id="root" 
     58        else 
     59                id="" 
     60        fi 
    5361 
    5462        print_comments "$interface" "Ingress${halfduplex:+/Egress}" "Start" 
    55         tc -s class show dev "$(iptables -v -L PREROUTING -t mangle | awk '/IMQ: todev .*$/ && $6 ~ /'$device'/ {print "imq"$12}')" 
     63        tc -s class show dev "$(tc filter show dev $device $id | grep mirred | sed -e 's,.*\(ifb.*\)).*,\1,')" 
    5664        print_comments "$interface" "Ingress${halfduplex:+/Egress}" "End" 
    5765} 
  • trunk/package/qos-scripts/files/usr/bin/qos-stop

    r6501 r25640  
    11#!/bin/sh 
    2 for iface in $(tc qdisc show | grep hfsc | awk '{print $5}'); do 
    3         tc qdisc del dev "$iface" root 
     2for iface in $(tc qdisc show | grep -E '(hfsc|ingress)' | awk '{print $5}'); do 
     3        tc qdisc del dev "$iface" ingress 2>&- >&- 
     4        tc qdisc del dev "$iface" root 2>&- >&- 
    45done 
    56iptables -t mangle -F 
  • trunk/package/qos-scripts/files/usr/lib/qos/generate.sh

    r23227 r25640  
    211211                        [ 1 -eq "$enabled" ] || return 0 
    212212                        config_get classgroup "$CONFIG_SECTION" classgroup 
    213                         config_set "$CONFIG_SECTION" imqdev "$C" 
     213                        config_set "$CONFIG_SECTION" ifbdev "$C" 
    214214                        C=$(($C+1)) 
    215215                        append INTERFACES "$CONFIG_SECTION" 
     
    275275start_interface() { 
    276276        local iface="$1" 
    277         local num_imq="$2" 
     277        local num_ifb="$2" 
    278278        config_get device "$iface" device 
    279279        config_get_bool enabled "$iface" enabled 1 
     
    299299                        ;; 
    300300                        down) 
    301                                 [ "$(ls -d /proc/sys/net/ipv4/conf/imq* 2>&- | wc -l)" -ne "$num_imq" ] && add_insmod imq numdevs="$num_imq" 
    302                                 config_get imqdev "$iface" imqdev 
     301                                [ "$(ls -d /proc/sys/net/ipv4/conf/ifb* 2>&- | wc -l)" -ne "$num_ifb" ] && add_insmod ifb numifbs="$num_ifb" 
     302                                config_get ifbdev "$iface" ifbdev 
    303303                                [ "$overhead" = 1 ] && download=$(($download * 98 / 100 - (80 * 1024 / $download))) 
    304                                 dev="imq$imqdev" 
     304                                dev="ifb$ifbdev" 
    305305                                rate="$download" 
    306306                                dl_mode=1 
     
    327327tc class add dev $dev parent 1: classid 1:1 hfsc sc rate ${rate}kbit ul rate ${rate}kbit" 
    328328        done 
     329        [ -n "$download" ] && { 
     330                add_insmod cls_u32 
     331                add_insmod em_u32 
     332                add_insmod act_connmark 
     333                add_insmod act_mirred 
     334                add_insmod sch_ingress 
     335        } 
     336        if [ -n "$halfduplex" ]; then 
     337                export dev_up="tc qdisc del dev $device root >&- 2>&- 
     338tc qdisc add dev $device root handle 1: hfsc 
     339tc filter add dev $device parent 1: protocol ip prio 10 u32 match u32 0 0 flowid 1:1 action mirred egress redirect dev ifb$ifbdev" 
     340        elif [ -n "$download" ]; then 
     341                append dev_${dir} "tc qdisc del dev $device ingress >&- 2>&- 
     342tc qdisc add dev $device ingress 
     343tc filter add dev $device parent ffff: protocol ip prio 1 u32 match u32 0 0 flowid 1:1 action connmark action mirred egress redirect dev ifb$ifbdev" "$N" 
     344        fi 
    329345        add_insmod cls_fw 
    330346        add_insmod sch_hfsc 
     
    335351${INSMOD:+$INSMOD$N}${dev_up:+$dev_up 
    336352$clsq 
    337 }${imqdev:+$dev_down 
     353}${ifbdev:+$dev_down 
    338354$d_clsq 
    339355$d_clsl 
     
    396412                config_get classgroup "$iface" classgroup 
    397413                config_get device "$iface" device 
    398                 config_get imqdev "$iface" imqdev 
     414                config_get ifbdev "$iface" ifbdev 
    399415                config_get upload "$iface" upload 
    400416                config_get download "$iface" download 
    401417                config_get halfduplex "$iface" halfduplex 
    402418                download="${download:-${halfduplex:+$upload}}" 
    403                 add_insmod ipt_IMQ 
    404419                append up "iptables -t mangle -A OUTPUT -o $device -j ${cg}" "$N" 
    405420                append up "iptables -t mangle -A FORWARD -o $device -j ${cg}" "$N" 
    406                 [ -z "$download" ] || { 
    407                         append down "iptables -t mangle -A POSTROUTING -o $device -j ${cg}" "$N" 
    408                         [ -z "$halfduplex" ] || { 
    409                                 append down "iptables -t mangle -A POSTROUTING -o $device -j IMQ --todev $imqdev" "$N" 
    410                         } 
    411                         append down "iptables -t mangle -A PREROUTING -i $device -j ${cg}" "$N" 
    412                         append down "iptables -t mangle -A PREROUTING -i $device -j IMQ --todev $imqdev" "$N" 
    413                 } 
    414421        done 
    415422        cat <<EOF 
Note: See TracChangeset for help on using the changeset viewer.