]> git.ipfire.org Git - ipfire-2.x.git/commitdiff
Revert "Revert "Make IMQ Switchable between PREROUTING and POSTROUTING""
authorArne Fitzenreiter <arne_f@ipfire.org>
Sun, 20 Oct 2019 20:24:16 +0000 (20:24 +0000)
committerArne Fitzenreiter <arne_f@ipfire.org>
Sun, 20 Oct 2019 20:24:16 +0000 (20:24 +0000)
This reverts commit ec01ebe246072cae77bc53d3c1fc09ad8277a89f.

config/qos/makeqosscripts.pl

index 31defe78d2162f6180bab7f23733f60314df91e0..66dbd122cec0026b2c7ee88985cf2477c5e68175 100644 (file)
@@ -75,6 +75,7 @@ $qossettings{'RED_DEV'} = `cat /var/ipfire/red/iface`;
 $qossettings{'IMQ_DEV'} = 'imq0';
 $qossettings{'TOS'} = '';
 $qossettings{'VALID'} = 'yes';
+$qossettings{'IMQ_MODE'} = 'PREROUTING';
 
 &General::readhash("${General::swroot}/qos/settings", \%qossettings);
 
@@ -511,6 +512,9 @@ foreach $subclassentry (sort @subclasses) {
                print "\ttc filter add dev $qossettings{'DEVICE'} parent 2:0 prio 0 protocol ip handle $qossettings{'SCLASS'} fw flowid 2:$qossettings{'SCLASS'}\n";
        }
 }
+
+if ( $qossettings{'IMQ_MODE'} eq 'POSTROUTING' )
+{
 print <<END
 
        ### ADD QOS-INC CHAIN TO THE MANGLE TABLE IN IPTABLES
@@ -524,6 +528,24 @@ print <<END
        ### SET TOS
 END
 ;
+}
+else
+{
+print <<END
+
+       ### ADD QOS-INC CHAIN TO THE MANGLE TABLE IN IPTABLES
+       iptables -t mangle -N QOS-INC
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p ah -j RETURN
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p esp -j RETURN
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -p ip -j RETURN
+       iptables -t mangle -I PREROUTING -i $qossettings{'RED_DEV'} -j QOS-INC
+       iptables -t mangle -A PREROUTING -i $qossettings{'RED_DEV'} -j QOS-TOS
+
+       ### SET TOS
+END
+;
+}
+
        foreach $tosruleentry (sort @tosrules)
        {
                @tosruleline = split( /\;/, $tosruleentry );
@@ -688,8 +710,10 @@ print <<END
        iptables -t mangle --delete POSTROUTING -o $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 --delete FORWARD -i $qossettings{'RED_DEV'} -j QOS-INC
-       iptables -t mangle --delete FORWARD -i $qossettings{'RED_DEV'} -j QOS-TOS
+       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 --delete PREROUTING -i $qossettings{'RED_DEV'} -j QOS-INC >/dev/null 2>&1
+       iptables -t mangle --delete PREROUTING -i $qossettings{'RED_DEV'} -j QOS-TOS >/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