From 4d3064d0aaf2fd58337fa887df280e3b67456ddf Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Tue, 20 Jul 2010 18:28:21 -0700 Subject: Fix default match rule Need to generate a filter to cause default filter rule to exist. Otherwise default does nothing. --- lib/Vyatta/Qos/TrafficLimiter.pm | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) (limited to 'lib') diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm index c30cbb9..93ea302 100644 --- a/lib/Vyatta/Qos/TrafficLimiter.pm +++ b/lib/Vyatta/Qos/TrafficLimiter.pm @@ -100,21 +100,24 @@ sub commands { } foreach my $class (@$classes) { - foreach my $match ( $class->matchRules() ) { - my $id = $class->{id}; - $id = $maxid + 1 if ( $id == 0 ); - - my $police = - " police rate " - . $class->{rate} - . " action drop burst " - . $class->{burst}; - - $match->filter( $dev, $parent, $id, $class->{priority}, undef, - $police ); - } + my $id = $class->{id}; + my $police = " police rate " . $class->{rate} + . " action drop burst " . $class->{burst}; + + if ($id == 0) { + $id = $maxid + 1; + + # Null filter for default rule + printf "filter add dev %s parent %x: prio %d", $dev, $parent, 255; + print " protocol all basic"; + print " %s flowid %x:%x\n", $police, $parent, $id; + } else { + foreach my $match ( $class->matchRules() ) { + $match->filter( $dev, $parent, $id, $class->{priority}, undef, + $police ); + } + } } - } 1; -- cgit v1.2.3