summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2008-09-05 15:03:30 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2008-09-05 15:03:30 -0700
commit200fb453f43a3f0406c14b9003ca5a1e6f7587f4 (patch)
tree02a1a92a6952afabbb861c15f10ef908fa4b5f4a /scripts
parentdae88a60a1b40555db65f19a417b0600055a4b51 (diff)
downloadvyatta-cfg-qos-200fb453f43a3f0406c14b9003ca5a1e6f7587f4.tar.gz
vyatta-cfg-qos-200fb453f43a3f0406c14b9003ca5a1e6f7587f4.zip
Workaround CLI regex problem
Recent CLI changes seem to have broken working templates that do regex matching. Workaround this by doing the syntax checking all in the perl script Bugfix: 3553
Diffstat (limited to 'scripts')
-rw-r--r--scripts/VyattaQosUtil.pm19
-rwxr-xr-xscripts/vyatta-qos-util.pl15
2 files changed, 32 insertions, 2 deletions
diff --git a/scripts/VyattaQosUtil.pm b/scripts/VyattaQosUtil.pm
index 668f5c1..82dfd6b 100644
--- a/scripts/VyattaQosUtil.pm
+++ b/scripts/VyattaQosUtil.pm
@@ -17,7 +17,7 @@
package VyattaQosUtil;
require Exporter;
-@EXPORT = qw/getRate getBurstSize getProtocol getDsfield getIfIndex interfaceRate/;
+@EXPORT = qw/getRate getPercent getBurstSize getProtocol getDsfield getIfIndex interfaceRate/;
use strict;
sub get_num {
@@ -84,6 +84,23 @@ sub getRate {
}
}
+sub getPercent {
+ my $percent = shift;
+ my ($num, $suffix) = get_num($percent);
+
+ ($suffix eq '%')
+ or die "$percent incorrect suffix (expect %)\n";
+ defined $num
+ or die "$percent is not a valid percent bandwidth (not a number)\n";
+ ($num >= 0)
+ or die "$percent is not a acceptable percent bandwidth (negative value)\n";
+ ($num <= 100)
+ or die "$percent is not a acceptable percent bandwidth (greater than 100%)\n";
+
+ return $num;
+}
+
+
# Default time units for tc are usec.
my %timeunits = (
's' => 1000000,
diff --git a/scripts/vyatta-qos-util.pl b/scripts/vyatta-qos-util.pl
index 1e842b8..8c3bafd 100755
--- a/scripts/vyatta-qos-util.pl
+++ b/scripts/vyatta-qos-util.pl
@@ -22,7 +22,10 @@ use lib "/opt/vyatta/share/perl5/";
use VyattaQosUtil;
use Getopt::Long;
+my ($percent, $rate, $burst, $protocol, $dsfield, $time);
+
GetOptions(
+ "percent-or-rate=s" => \$percent,
"rate=s" => \$rate,
"burst=s" => \$burst,
"protocol=s" => \$protocol,
@@ -31,6 +34,15 @@ GetOptions(
"time=s" => \$time,
);
+if ( defined $percent ) {
+ if ($percent =~ /%$/) {
+ my $p = VyattaQosUtil::getPercent($percent);
+ } else {
+ my $r = VyattaQosUtil::getRate($percent);
+ }
+ exit 0;
+}
+
if ( defined $rate ) {
my $r = VyattaQosUtil::getRate($rate);
exit 0;
@@ -57,7 +69,8 @@ if ( defined $time ) {
}
print <<EOF;
-usage: vyatta-qos-util.pl --rate rate
+usage: vyatta-qos-util.pl --percent-or-rate value
+ vyatta-qos-util.pl --rate rate
vyatta-qos-util.pl --time time
vyatta-qos-util.pl --burst size
vyatta-qos-util.pl --protocol protocol