From 20cc5a71f3c8cfed4640cb8565fb715be0a15ee8 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Thu, 5 Feb 2009 14:30:34 -0800 Subject: traffic limiter: move class to separate file Move LimiterClass to its own file, and fix perlcritic warnings --- lib/Vyatta/Qos/LimiterClass.pm | 74 ++++++++++++++++++++++++++++++++++++++++ lib/Vyatta/Qos/TrafficLimiter.pm | 67 +++--------------------------------- 2 files changed, 79 insertions(+), 62 deletions(-) create mode 100644 lib/Vyatta/Qos/LimiterClass.pm (limited to 'lib/Vyatta') diff --git a/lib/Vyatta/Qos/LimiterClass.pm b/lib/Vyatta/Qos/LimiterClass.pm new file mode 100644 index 0000000..8622efd --- /dev/null +++ b/lib/Vyatta/Qos/LimiterClass.pm @@ -0,0 +1,74 @@ +# Traffic limiter sub-class + +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2008 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +package Vyatta::Qos::LimiterClass; +use strict; +use warnings; + +require Vyatta::Config; +use Vyatta::Qos::Match; +use Vyatta::Qos::Util qw/getRate/; + +my %fields = ( + id => undef, + priority => undef, + burst => undef, + rate => undef, + _match => undef, +); + +sub new { + my ( $that, $config, $id ) = @_; + my $class = ref($that) || $that; + my $self = {%fields}; + + $self->{id} = $id; + + bless $self, $class; + $self->_define($config); + + return $self; +} + +sub _define { + my ( $self, $config ) = @_; + my $level = $config->setLevel(); + my @matches = (); + my $rate = $config->returnValue("bandwidth"); + + die "bandwidth must be defined for $level\n" unless $rate; + $self->{rate} = getRate($rate); + + $self->{burst} = $config->returnValue("burst"); + defined $self->{burst} or die "burst must be defined for $level\n"; + + $self->{priority} = $config->returnValue("priority"); + + foreach my $match ( $config->listNodes("match") ) { + $config->setLevel("$level match $match"); + push @matches, new Vyatta::Qos::Match($config); + } + $self->{_match} = \@matches; +} + +sub matchRules { + my ($self) = @_; + my $matches = $self->{_match}; + return @$matches; +} + +1; diff --git a/lib/Vyatta/Qos/TrafficLimiter.pm b/lib/Vyatta/Qos/TrafficLimiter.pm index 9b47be8..e9deda9 100644 --- a/lib/Vyatta/Qos/TrafficLimiter.pm +++ b/lib/Vyatta/Qos/TrafficLimiter.pm @@ -16,67 +16,12 @@ # All Rights Reserved. # **** End License **** -{ - - package LimiterClass; - use strict; - require Vyatta::Config; - use Vyatta::Qos::Match; - use Vyatta::Qos::Util qw/getRate/; - - my %fields = ( - id => undef, - priority => undef, - burst => undef, - rate => undef, - _match => undef, - ); - - sub new { - my ( $that, $config, $id ) = @_; - my $class = ref($that) || $that; - my $self = {%fields}; - - $self->{id} = $id; - - bless $self, $class; - $self->_define($config); - - return $self; - } - - sub _define { - my ( $self, $config ) = @_; - my $level = $config->setLevel(); - my @matches = (); - my $rate = $config->returnValue("bandwidth"); - - die "bandwidth must be defined for $level\n" unless $rate; - $self->{rate} = getRate($rate); - - $self->{burst} = $config->returnValue("burst"); - defined $self->{burst} or die "burst must be defined for $level\n"; - - $self->{priority} = $config->returnValue("priority"); - - foreach my $match ( $config->listNodes("match") ) { - $config->setLevel("$level match $match"); - push @matches, new Vyatta::Qos::Match($config); - } - $self->{_match} = \@matches; - } - - sub matchRules { - my ($self) = @_; - my $matches = $self->{_match}; - return @$matches; - } - -} - package Vyatta::Qos::TrafficLimiter; use strict; +use warnings; + require Vyatta::Config; +use Vyatta::Qos::LimiterClass; my %fields = ( _level => undef, @@ -182,14 +127,12 @@ sub isChanged { 'ip destination port' ) { - if ( $config->isChanged("$level $parm") ) { - return "$level $parm"; - } + return "$level $parm" if ( $config->isChanged("$level $parm") ); } } } - return undef; # false + return; # false } 1; -- cgit v1.2.3