summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/Vyatta/Qos/TrafficLimiter.pm13
-rwxr-xr-xscripts/vyatta-qos.pl9
2 files changed, 16 insertions, 6 deletions
diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm
index e5731d0..ff4a8d2 100644
--- a/lib/Vyatta/Qos/TrafficLimiter.pm
+++ b/lib/Vyatta/Qos/TrafficLimiter.pm
@@ -76,11 +76,18 @@ sub _define {
}
sub commands {
- my ( $self, $dev ) = @_;
+ my ( $self, $dev, $direction ) = @_;
my $classes = $self->{_classes};
- my $parent = 0xffff;
+ my $parent;
+
+ if ($direction eq 'in') {
+ $parent = 0xffff;
+ printf "qdisc add dev %s handle %x: ingress\n", $dev, $parent;
+ } else {
+ $parent = 1;
+ printf "qdisc add dev %s handle $x: prio\n", $dev, $parent;
+ }
- printf "qdisc add dev %s handle %x: ingress\n", $dev, $parent;
foreach my $class (@$classes) {
foreach my $match ( $class->matchRules() ) {
my $police = " police rate " . $class->{rate}
diff --git a/scripts/vyatta-qos.pl b/scripts/vyatta-qos.pl
index 487fdc6..c962324 100755
--- a/scripts/vyatta-qos.pl
+++ b/scripts/vyatta-qos.pl
@@ -35,8 +35,11 @@ my %policies = (
'round-robin' => 'RoundRobin',
'priority-queue' => 'Priority',
'random-detect' => 'RandomDetect',
+ 'traffic-limiter' => 'TrafficLimiter',
},
- 'in' => { 'traffic-limiter' => 'TrafficLimiter', }
+ 'in' => {
+ 'traffic-limiter' => 'TrafficLimiter',
+ }
);
# find policy for name - also check for duplicates
@@ -119,7 +122,7 @@ sub delete_interface {
my $arg = $delcmd{$direction};
die "bad direction $direction\n" unless $arg;
-
+
my $cmd = "sudo tc qdisc del dev $interface ". $arg . " 2>/dev/null";
# ignore errors (may have no qdisc)
@@ -207,7 +210,7 @@ sub interfaces_using {
# these are arguments to update_interface()
push @inuse, [ $name, $direction, $policy ]
- if ($cur eq $policy);
+ if ($cur eq $policy);
}
}
return @inuse;