]> git.ipfire.org Git - people/pmueller/ipfire-2.x.git/blobdiff - config/qos/makeqosscripts.pl
Revert "QoS: Drop support for setting TOS bits per class"
[people/pmueller/ipfire-2.x.git] / config / qos / makeqosscripts.pl
index 2dadc72fcc7cebaf9af6aec6b5790bc5c5fd6921..e5d038e2e089668ca677137da255114814bc6143 100644 (file)
@@ -128,6 +128,7 @@ case "\$1" in
                echo "[iptables]"
                iptables -t mangle -n -L QOS-OUT -v -x 2> /dev/null
                iptables -t mangle -n -L QOS-INC -v -x 2> /dev/null
+               iptables -t mangle -n -L QOS-TOS -v -x 2> /dev/null
                exit 0
          ;;
        esac
@@ -190,7 +191,9 @@ print <<END
 
        ### ADD QOS-OUT CHAIN TO THE MANGLE TABLE IN IPTABLES
        iptables -t mangle -N QOS-OUT
+       iptables -t mangle -N QOS-TOS
        iptables -t mangle -I POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-OUT
+       iptables -t mangle -A POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-TOS
 
        ### Don't change mark on traffic for the ipsec tunnel
        iptables -t mangle -A QOS-OUT -m mark --mark 50 -j RETURN
@@ -398,6 +401,7 @@ print <<END
        ### ADD QOS-INC CHAIN TO THE MANGLE TABLE IN IPTABLES
        iptables -t mangle -N QOS-INC
        iptables -t mangle -A FORWARD -i $qossettings{'RED_DEV'} -j QOS-INC
+       iptables -t mangle -A FORWARD -i $qossettings{'RED_DEV'} -j QOS-TOS
 
        ### SET TOS
 END
@@ -505,6 +509,22 @@ print <<END
        ### REDUNDANT: SET ALL NONMARKED PACKETS TO DEFAULT CLASS
        iptables -t mangle -A QOS-INC -j CLASSIFY --set-class 2:$qossettings{'DEFCLASS_INC'}
 
+       ### SETTING TOS BITS
+END
+;
+       foreach $classentry (sort @classes)
+       {
+               @classline = split( /\;/, $classentry );
+               $qossettings{'CLASS'} = $classline[1];
+               $qossettings{'TOS'} = abs $classline[7] * 2;
+               if ($qossettings{'TOS'} ne "0") {
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'CLASS'} -j TOS --set-tos $qossettings{'TOS'}\n";
+                       print "\tiptables -t mangle -A QOS-TOS -m mark --mark $qossettings{'CLASS'} -j RETURN\n";
+               }
+       }
+
+print <<END
+
        ## STARTING COLLECTOR
        /usr/local/bin/qosd $qossettings{'RED_DEV'} >/dev/null 2>&1
        /usr/local/bin/qosd $qossettings{'IMQ_DEV'} >/dev/null 2>&1
@@ -533,11 +553,15 @@ print <<END
 
        # REMOVE & FLUSH CHAINS
        iptables -t mangle --delete POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-OUT >/dev/null 2>&1
+       iptables -t mangle --delete POSTROUTING -o $qossettings{'RED_DEV'} -j QOS-TOS >/dev/null 2>&1
        iptables -t mangle --delete FORWARD -i $qossettings{'RED_DEV'} -j QOS-INC >/dev/null 2>&1
+       iptables -t mangle --delete FORWARD -i $qossettings{'RED_DEV'} -j QOS-TOS >/dev/null 2>&1
        iptables -t mangle --flush  QOS-OUT >/dev/null 2>&1
        iptables -t mangle --delete-chain QOS-OUT >/dev/null 2>&1
        iptables -t mangle --flush  QOS-INC >/dev/null 2>&1
        iptables -t mangle --delete-chain QOS-INC >/dev/null 2>&1
+       iptables -t mangle --flush  QOS-TOS >/dev/null 2>&1
+       iptables -t mangle --delete-chain QOS-TOS >/dev/null 2>&1
 
        rmmod sch_htb >/dev/null 2>&1