From bb78be860c22628305fcf8445000de9dedd0a240 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 15 Jul 2010 13:13:02 -0700 Subject: Fix problems when combining match rules Can't have 2 filters at same priority level, need to cascade them. --- lib/Vyatta/Qos/RoundRobin.pm | 4 +++- lib/Vyatta/Qos/TrafficLimiter.pm | 3 ++- lib/Vyatta/Qos/TrafficShaper.pm | 4 +++- 3 files changed, 8 insertions(+), 3 deletions(-) (limited to 'lib') 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} ); } } } -- cgit v1.2.3