summaryrefslogtreecommitdiff
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
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
-rw-r--r--scripts/VyattaQosUtil.pm19
-rwxr-xr-xscripts/vyatta-qos-util.pl15
-rw-r--r--templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def3
-rw-r--r--templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def3
-rw-r--r--templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def3
-rw-r--r--templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def3
6 files changed, 36 insertions, 10 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
diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def
index 2871b23..6f15037 100644
--- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def
+++ b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/bandwidth/node.def
@@ -1,8 +1,7 @@
type: txt
default: "100%"
help: Set the bandwidth used for this class
-syntax:expression: exec "[[ \"$VAR(@)\" =~ '^[0-9]+(\.[0-9]*)?%$' ]] || \
- /opt/vyatta/sbin/vyatta-qos-util.pl --rate \"$VAR(@)\""
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \"$VAR(@)\""
comp_help: Allowed values:
<number> Bandwidth in Kbps
<number>%% Percentage of overall rate (default 100%%)
diff --git a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def
index 82c5ff0..11bf6b9 100644
--- a/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def
+++ b/templates/qos-policy/traffic-shaper/node.tag/class/node.tag/ceiling/node.def
@@ -1,7 +1,6 @@
type: txt
help: Set the bandwidth limit for this class
-syntax:expression: exec "[[ \"$VAR(@)\" =~ '^[0-9]+(\.[0-9]*)?%$' ]] || \
- /opt/vyatta/sbin/vyatta-qos-util.pl --rate \"$VAR(@)\""
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \"$VAR(@)\""
comp_help: Allowed values:
<number> Limit in Kbps
<number>%% Percentage of overall rate
diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def
index 21b6e88..4d454d4 100644
--- a/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def
+++ b/templates/qos-policy/traffic-shaper/node.tag/default/bandwidth/node.def
@@ -1,7 +1,6 @@
type: txt
help: Set the bandwidth used for default traffic
-syntax:expression: exec "[[ \"$VAR(@)\" =~ '^[0-9]+(\.[0-9]*)?%$' ]] || \
- /opt/vyatta/sbin/vyatta-qos-util.pl --rate \"$VAR(@)\""
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \"$VAR(@)\""
comp_help: Allowed values:
<number> Bandwidth in Kbps per second
<number>%% Percentage of overall rate
diff --git a/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def b/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def
index 9b3c855..463c6bb 100644
--- a/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def
+++ b/templates/qos-policy/traffic-shaper/node.tag/default/ceiling/node.def
@@ -1,8 +1,7 @@
type: txt
help: Set the bandwidth limit for default traffic
default: "100%"
-syntax:expression: exec "[[ \"$VAR(@)\" =~ '^[0-9]+(\.[0-9]*)?%$' ]] || \
- /opt/vyatta/sbin/vyatta-qos-util.pl --rate \"$VAR(@)\""
+syntax:expression: exec "/opt/vyatta/sbin/vyatta-qos-util.pl --percent-or-rate \"$VAR(@)\""
comp_help: Allowed values:
<number> Limit in Kbps
<number>%% Percentage of overall rate (default 100%%)