This patch updates qos-scripts to support fair traffic sharing using the
[openwrt/svn-archive/archive.git] / package / qos-scripts / files / usr / lib / qos / tcrules.awk
index ebda506..90b4212 100644 (file)
@@ -13,7 +13,8 @@ BEGIN {
        pktsize[n] = $4
        delay[n] = $5
        maxrate[n] = ($6 * linespeed / 100)
-       qdisc_esfq[n] = $7
+       qdisc[n] = $7
+       filter[n] = $8
 }
 
 END {
@@ -68,11 +69,7 @@ END {
        # main qdisc
        for (i = 1; i <= n; i++) {
                printf "tc class add dev "device" parent 1:1 classid 1:"class[i]"0 hfsc"
-               if (qdisc_esfq[i] != "") {
-                       # user requested esfq
-                       print "esfq " qdisc_esfq[i] " limit " ql
-               } else if (rtm1[i] > 0) {
-                       # rt class - use sfq
+               if (rtm1[i] > 0) {
                        printf " rt m1 " int(rtm1[i]) "kbit d " int(d[i] * 1000) "us m2 " int(rtm2[i])"kbit"
                }
                printf " ls m1 " int(lsm1[i]) "kbit d " int(d[i] * 1000) "us m2 " int(lsm2[i]) "kbit"
@@ -96,7 +93,10 @@ END {
                max = 3 * min
                limit = (min + max) * 3
 
-               if (rtm1[i] > 0) {
+               if (qdisc[i] != "") {
+                       # user specified qdisc
+                       print qdisc[i] " limit " limit
+               } else if (rtm1[i] > 0) {
                        # rt class - use sfq
                        print "sfq perturb 2 limit "  limit
                } else {
@@ -123,6 +123,11 @@ END {
        # filter rule
        for (i = 1; i <= n; i++) {
                print "tc filter add dev "device" parent 1: prio "class[i]" protocol ip handle "class[i]" fw flowid 1:"class[i] "0" 
+               filterc=1
+               if (filter[i] != "") {
+                       print " tc filter add dev "device" parent "class[i]"00: handle "filterc"0 "filter[i]
+                       filterc=filterc+1
+               }
        }
 }