From: Arne Fitzenreiter Date: Sun, 20 Oct 2019 20:18:00 +0000 (+0000) Subject: Revert "QoS: Drop support for subclasses" X-Git-Tag: v2.23-core137~34 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=50e97cd55f43fd70feab62aad5bc1b97b9da05e3;p=ipfire-2.x.git Revert "QoS: Drop support for subclasses" This reverts commit bc4d4da87009ebffcd93d30dcbfffff797b92588. --- diff --git a/config/qos/makeqosscripts.pl b/config/qos/makeqosscripts.pl index e5d038e2e0..0c07a60f13 100644 --- a/config/qos/makeqosscripts.pl +++ b/config/qos/makeqosscripts.pl @@ -35,22 +35,26 @@ my $errormessage = ""; my $c = ""; my $direntry = ""; my $classentry = ""; +my $subclassentry = ""; my $l7ruleentry = ""; my $portruleentry = ""; my $tosruleentry = ""; my @tmp = (); my @classes = (); +my @subclasses = (); my @l7rules = (); my @portrules = (); my @tosrules = (); my @tmpline = (); my @classline = (); +my @subclassline = (); my @tosruleline = (); my @l7ruleline = (); my @portruleline = (); my @proto = (); my %selected= () ; my $classfile = "/var/ipfire/qos/classes"; +my $subclassfile = "/var/ipfire/qos/subclasses"; my $level7file = "/var/ipfire/qos/level7config"; my $portfile = "/var/ipfire/qos/portconfig"; my $tosfile = "/var/ipfire/qos/tosconfig"; @@ -77,6 +81,9 @@ $qossettings{'VALID'} = 'yes'; open( FILE, "< $classfile" ) or die "Unable to read $classfile"; @classes = ; close FILE; +open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; +@subclasses = ; +close FILE; open( FILE, "< $level7file" ) or die "Unable to read $level7file"; @l7rules = ; close FILE; @@ -176,6 +183,27 @@ foreach $classentry (sort @classes) print "\n"; } } +foreach $subclassentry (sort @subclasses) { + @subclassline = split( /\;/, $subclassentry ); + if ($qossettings{'RED_DEV'} eq $subclassline[0]) { + $qossettings{'DEVICE'} = $subclassline[0]; + $qossettings{'CLASS'} = $subclassline[1]; + $qossettings{'SCLASS'} = $subclassline[2]; + $qossettings{'SPRIO'} = $subclassline[3]; + $qossettings{'SRATE'} = $subclassline[4]; + $qossettings{'SCEIL'} = $subclassline[5]; + $qossettings{'SBURST'} = $subclassline[6]; + $qossettings{'SCBURST'} = $subclassline[7]; + print "\ttc class add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} classid 1:$qossettings{'SCLASS'} htb rate $qossettings{'SRATE'}kbit ceil $qossettings{'SCEIL'}kbit prio $qossettings{'SPRIO'} "; + if ($qossettings{'SBURST'} > 0) { + print "burst $qossettings{'SBURST'}k "; + } + if (($qossettings{'SCBURST'} ne '') && ($qossettings{'SCBURST'} ne 0)) { + print "cburst $qossettings{'CBURST'}k"; + } + print "\n"; + } +} print "\n\t### ATTACH QDISC TO LEAF CLASSES\n"; foreach $classentry (sort @classes) @@ -187,6 +215,14 @@ foreach $classentry (sort @classes) print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n"; } } +foreach $subclassentry (sort @subclasses) { + @subclassline = split( /\;/, $subclassentry ); + if ($qossettings{'RED_DEV'} eq $subclassline[0]) { + $qossettings{'DEVICE'} = $subclassline[0]; + $qossettings{'SCLASS'} = $subclassline[2]; + print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 1:$qossettings{'SCLASS'} handle $qossettings{'SCLASS'}: fq_codel $fqcodel_options\n"; + } +} print < 0) { + print "burst $qossettings{'SBURST'}k "; + } + if (($qossettings{'SCBURST'} ne '') && ($qossettings{'SCBURST'} ne 0)) { + print "cburst $qossettings{'CBURST'}k"; + } + print "\n"; + } +} print "\n\t### ATTACH QDISC TO LEAF CLASSES\n"; foreach $classentry (sort @classes) @@ -396,6 +453,15 @@ foreach $classentry (sort @classes) print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'CLASS'} handle $qossettings{'CLASS'}: fq_codel $fqcodel_options\n"; } } +foreach $subclassentry (sort @subclasses) { + @subclassline = split( /\;/, $subclassentry ); + if ($qossettings{'IMQ_DEV'} eq $subclassline[0]) { + $qossettings{'DEVICE'} = $subclassline[0]; + $qossettings{'SCLASS'} = $subclassline[2]; + print "\ttc qdisc add dev $qossettings{'DEVICE'} parent 2:$qossettings{'SCLASS'} handle $qossettings{'SCLASS'}: fq_codel $fqcodel_options\n"; + } +} + print <must be saved, otherwise it will be discarded! diff --git a/doc/language_issues.es b/doc/language_issues.es index a4c5bf1f5f..2af165d6b1 100644 --- a/doc/language_issues.es +++ b/doc/language_issues.es @@ -9,7 +9,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -19,7 +18,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -131,7 +129,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -478,7 +475,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.fr b/doc/language_issues.fr index 3d657059fe..f48d65a809 100644 --- a/doc/language_issues.fr +++ b/doc/language_issues.fr @@ -31,7 +31,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -41,7 +40,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -161,7 +159,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -580,7 +577,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.it b/doc/language_issues.it index 973a7c12cb..59c6499541 100644 --- a/doc/language_issues.it +++ b/doc/language_issues.it @@ -10,7 +10,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -20,7 +19,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -139,7 +137,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -555,7 +552,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.nl b/doc/language_issues.nl index 2d5e067267..836745e5af 100644 --- a/doc/language_issues.nl +++ b/doc/language_issues.nl @@ -10,7 +10,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -20,7 +19,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -138,7 +136,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -550,7 +547,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.pl b/doc/language_issues.pl index a4c5bf1f5f..2af165d6b1 100644 --- a/doc/language_issues.pl +++ b/doc/language_issues.pl @@ -9,7 +9,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -19,7 +18,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -131,7 +129,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -478,7 +475,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.ru b/doc/language_issues.ru index 06e68dfd30..b904157b1b 100644 --- a/doc/language_issues.ru +++ b/doc/language_issues.ru @@ -10,7 +10,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -20,7 +19,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -132,7 +130,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -481,7 +478,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/doc/language_issues.tr b/doc/language_issues.tr index 5bbf9a1b50..cf773d8cbd 100644 --- a/doc/language_issues.tr +++ b/doc/language_issues.tr @@ -31,7 +31,6 @@ WARNING: translation string unused: Queuelenght WARNING: translation string unused: Remote IP WARNING: translation string unused: Remote VPN IP WARNING: translation string unused: Resolv -WARNING: translation string unused: Subclass WARNING: translation string unused: TOS Bits WARNING: translation string unused: Verbose WARNING: translation string unused: access allowed @@ -41,7 +40,6 @@ WARNING: translation string unused: add cron WARNING: translation string unused: add network WARNING: translation string unused: add new ovpn WARNING: translation string unused: add service -WARNING: translation string unused: add subclass WARNING: translation string unused: add xtaccess WARNING: translation string unused: add-route WARNING: translation string unused: admin user password has been changed @@ -161,7 +159,6 @@ WARNING: translation string unused: cfg restart WARNING: translation string unused: check for net traffic update WARNING: translation string unused: choose config WARNING: translation string unused: choose media -WARNING: translation string unused: class in use WARNING: translation string unused: clear cache WARNING: translation string unused: compression WARNING: translation string unused: connect @@ -583,7 +580,6 @@ WARNING: translation string unused: proxy no proxy extend WARNING: translation string unused: proxy no proxy local WARNING: translation string unused: proxy port WARNING: translation string unused: psk -WARNING: translation string unused: qos add subclass WARNING: translation string unused: quick control WARNING: translation string unused: reboot ask WARNING: translation string unused: reboot question diff --git a/html/cgi-bin/qos.cgi b/html/cgi-bin/qos.cgi index 320eef67d1..b7af11204e 100644 --- a/html/cgi-bin/qos.cgi +++ b/html/cgi-bin/qos.cgi @@ -38,16 +38,19 @@ my $errormessage = ""; my $c = ""; my $direntry = ""; my $classentry = ""; +my $subclassentry = ""; my $l7ruleentry = ""; my $portruleentry = ""; my $tosruleentry = ""; my @tmp = (); my @classes = (); +my @subclasses = (); my @l7rules = (); my @portrules = (); my @tosrules = (); my @tmpline = (); my @classline = (); +my @subclassline = (); my @l7ruleline = (); my @portruleline = (); my @tosruleline = (); @@ -55,6 +58,7 @@ my @proto = (); my %selected= (); my @checked = (); my $classfile = "/var/ipfire/qos/classes"; +my $subclassfile = "/var/ipfire/qos/subclasses"; my $level7file = "/var/ipfire/qos/level7config"; my $portfile = "/var/ipfire/qos/portconfig"; my $tosfile = "/var/ipfire/qos/tosconfig"; @@ -81,6 +85,7 @@ $qossettings{'IMQ_DEV_SEL'} = ''; $qossettings{'PRIO'} = ''; $qossettings{'SPD'} = ''; $qossettings{'CLASS'} = ''; +$qossettings{'SCLASS'} = ''; $qossettings{'QPORT'} = ''; $qossettings{'DPORT'} = ''; $qossettings{'QIP'} = ''; @@ -93,6 +98,7 @@ $qossettings{'MAXBWDTH'} = ''; $qossettings{'BURST'} = ''; $qossettings{'CBURST'} = ''; $qossettings{'DOCLASS'} = ''; +$qossettings{'DOSCLASS'} = ''; $qossettings{'DOLEVEL7'} = ''; $qossettings{'DOPORT'} = ''; $qossettings{'CLASS'} = ''; @@ -188,12 +194,60 @@ elsif ($qossettings{'DOCLASS'} eq $Lang::tr{'delete'}) } } close FILE; + open( FILE, "< $subclassfile" ) or die "Unable to read $classfile"; + @tmp = ; + close FILE; + open( FILE, "> $subclassfile" ) or die "Unable to write $classfile"; + foreach $subclassentry (sort @tmp) + { + @tmpline = split( /\;/, $subclassentry ); + if ( $tmpline[1] ne $qossettings{'CLASS'} ) + { + print FILE $subclassentry; + } + } + close FILE; $message = "$Lang::tr{'Class'} $qossettings{'CLASS'} $Lang::tr{'Class was deleted'}"; } ############################################################################################################################ ############################################################################################################################ +if ($qossettings{'DOSCLASS'} eq $Lang::tr{'save'}) +{ + &validsubclass(); + &validminbwdth(); + if ( $qossettings{'VALID'} eq 'yes' ) { + open( FILE, ">> $subclassfile" ) or die "Unable to write $subclassfile"; + print FILE <; + close FILE; + open( FILE, "> $subclassfile" ) or die "Unable to write $classfile"; + foreach $subclassentry (sort @tmp) + { + @tmpline = split( /\;/, $subclassentry ); + if ( $tmpline[2] ne $qossettings{'CLASS'} ) + { + print FILE $subclassentry; + } + } + close FILE; + $message = "$Lang::tr{'Subclass'} $qossettings{'CLASS'} $Lang::tr{'was deleted'}."; +} + +############################################################################################################################ +############################################################################################################################ + if ($qossettings{'DOLEVEL7'} eq $Lang::tr{'save'}) { if ( $qossettings{'QIP'} ne '' ) { @@ -558,6 +612,13 @@ elsif ($qossettings{'ACTION'} eq $Lang::tr{'parentclass add'} ) &Header::closepage(); exit } +elsif ($qossettings{'ACTION'} eq $Lang::tr{'qos add subclass'}) +{ + &subclass(); + &Header::closebigbox(); + &Header::closepage(); + exit +} elsif ($qossettings{'ACTION'} eq $Lang::tr{'Add Rule'}) { &Header::openbox('100%', 'center', $Lang::tr{'Add Rule'}); @@ -906,6 +967,81 @@ END &Header::closebox(); } +sub subclass { + &Header::openbox('100%', 'center', $Lang::tr{'Subclass'}); + print < + +END +; + if ( $message ne "" ) { + print "
$message"; + } + print <$Lang::tr{'current class'}: $qossettings{'CLASS'} +
$Lang::tr{'enter data'} +
$Lang::tr{'Subclass'}:  +
$Lang::tr{'priority'}:
$Lang::tr{'guaranteed bandwith'}: + +   +
$Lang::tr{'max bandwith'}: + +   +
Burst: + +   +
Ceilburst: + +   +
TOS-Bit: + + + +   +
+END +; + &Header::closebox(); +} + sub level7rule { &Header::openbox('100%', 'center', $Lang::tr{'Level7 Rule'}); print <; close FILE; if (@classes) { + open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; + @subclasses = ; + close FILE; open( FILE, "< $level7file" ) or die "Unable to read $level7file"; @l7rules = ; close FILE; @@ -1064,6 +1203,11 @@ sub showclasses { $classline[7] +
+ + + +
@@ -1242,6 +1386,41 @@ END } END ; + foreach $subclassentry (sort @subclasses) + { + @subclassline = split( /\;/, $subclassentry ); + if ( $subclassline[1] eq $classline[1] ) { + print <
$Lang::tr{'Subclass'}: + $subclassline[2] + $subclassline[3] + $subclassline[4] + $subclassline[5] + $subclassline[6] + $subclassline[7] + $subclassline[8] + + +
+ + + + +
+ + + +
+
+ + + +
+
+END +; + } + } print < END @@ -1309,3 +1488,21 @@ sub validclass { } } } + +sub validsubclass { + if ( $qossettings{'VALID'} eq 'yes' ) { + open( FILE, "< $subclassfile" ) or die "Unable to read $subclassfile"; + @tmp = ; + close FILE; + foreach $subclassentry (sort @tmp) + { + @tmpline = split( /\;/, $subclassentry ); + if ( $tmpline[2] eq $qossettings{'SCLASS'} ) + { + $qossettings{'VALID'} = 'no'; + $message = "$Lang::tr{'class in use'}"; + last + } + } + } +}