summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Hemminger <stephen.hemminger@vyatta.com>2010-07-15 13:13:02 -0700
committerStephen Hemminger <stephen.hemminger@vyatta.com>2010-07-15 13:13:02 -0700
commitbb78be860c22628305fcf8445000de9dedd0a240 (patch)
treefc7c83cb2381cb7aef067f0636dfe5b5d8b57366
parent381dcdcc46b8652135d59342e33535d1aa750e05 (diff)
downloadvyatta-cfg-qos-bb78be860c22628305fcf8445000de9dedd0a240.tar.gz
vyatta-cfg-qos-bb78be860c22628305fcf8445000de9dedd0a240.zip
Fix problems when combining match rules
Can't have 2 filters at same priority level, need to cascade them.
-rw-r--r--lib/Vyatta/Qos/RoundRobin.pm4
-rw-r--r--lib/Vyatta/Qos/TrafficLimiter.pm3
-rw-r--r--lib/Vyatta/Qos/TrafficShaper.pm4
3 files changed, 8 insertions, 3 deletions
diff --git a/lib/Vyatta/Qos/RoundRobin.pm b/lib/Vyatta/Qos/RoundRobin.pm
index a1d7787..b7d72b2 100644
--- a/lib/Vyatta/Qos/RoundRobin.pm
+++ b/lib/Vyatta/Qos/RoundRobin.pm
@@ -67,8 +67,10 @@ sub commands {
foreach my $class (@$classes) {
$class->gen_class( $dev, 'drr', $parent );
$class->gen_leaf( $dev, $parent );
+ my $prio = 1;
+
foreach my $match ( $class->matchRules() ) {
- $match->filter( $dev, $parent, $class->{id}, 1);
+ $match->filter( $dev, $parent, $class->{id}, $prio++);
}
}
}
diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm
index 665f784..b731c64 100644
--- a/lib/Vyatta/Qos/TrafficLimiter.pm
+++ b/lib/Vyatta/Qos/TrafficLimiter.pm
@@ -106,7 +106,8 @@ sub commands {
my $police = " police rate " . $class->{rate}
. " action drop burst " . $class->{burst};
- $match->filter( $dev, $parent, $id, $class->{priority}, undef, $police );
+ $match->filter( $dev, $parent, $id, $class->{priority},
+ undef, $police );
}
}
diff --git a/lib/Vyatta/Qos/TrafficShaper.pm b/lib/Vyatta/Qos/TrafficShaper.pm
index f89ae60..4fa3008 100644
--- a/lib/Vyatta/Qos/TrafficShaper.pm
+++ b/lib/Vyatta/Qos/TrafficShaper.pm
@@ -151,8 +151,10 @@ sub commands {
$class->gen_class( $dev, 'htb', $parent, $rate );
$class->gen_leaf( $dev, $parent, $rate );
+ my $prio = 1;
foreach my $match ( $class->matchRules() ) {
- $match->filter( $dev, $parent, $class->{id}, 1, $class->{dsmark} );
+ $match->filter( $dev, $parent, $class->{id},
+ $prio++, $class->{dsmark} );
}
}
}