package SNMP::Class::Varbind::IpForwarding;
use warnings;
use strict;
use Carp qw(cluck carp croak confess);
use SNMP::Class::OID;
use Data::Dumper;
use Log::Log4perl qw(:easy);
use base qw(SNMP::Class::Varbind);
#we have to call the register_callback function in the INIT block to make sure
#that the SNMP::Class::Varbind module is actually loaded
INIT {
SNMP::Class::Varbind::register_handler("label","ipForwarding",__PACKAGE__);
DEBUG "Handler for ".__PACKAGE__." registered";
}
#sub initialize_callback_object {
# my $self = shift(@_);
# croak "self appears to be undefined" unless ref $self;
# my $forwarding = $self->raw_value;
# DEBUG "raw_value is $forwarding";
# $self->{value} = SNMP::Class::Value::IpForwarding->new($self->raw_value);
#}
sub value {
return SNMP::Class::Value::IpForwarding->new(shift(@_)->raw_value);
}
1;
package SNMP::Class::Value::IpForwarding;
use Carp qw(cluck carp croak confess);
use warnings;
use strict;
use Data::Dumper;
use Log::Log4perl qw(:easy);
use overload
'""' => \&str_forwarding,
'bool' => \&bool_forwarding,
'0+' => \&num_forwarding,
'<=>' => \&equals,
'cmp' => \&equals
;
sub new {
defined ( my $class = shift(@_) ) or confess "Incorrect call to new";
defined ( my $raw_value = shift(@_) ) or confess "missing argument to new";
return bless { raw_value => $raw_value },$class;
}
sub is_forwarding {
defined ( my $self = shift(@_) ) or confess "Incorrect call";
if ($self->{raw_value} == 1) {
return 1;
}
return;
}
sub str_forwarding {
defined ( my $self = shift(@_) ) or confess "Incorrect call";
return "forwarding" if ($self->{raw_value} == 1);
return "not forwarding";
}
sub bool_forwarding {
defined ( my $self = shift(@_) ) or confess "Incorrect call";
return 1 if ($self->{raw_value} == 1);
return;
}
sub num_forwarding {
defined ( my $self = shift(@_) ) or confess "Incorrect call";
return 1 if ($self->{raw_value} == 1);
return 2;
}
sub equals {
defined ( my $self = shift(@_) ) or confess "Incorrect call";
defined ( my $item = shift(@_) ) or confess "Incorrect call";
if (
($item =~ /^forwarding$/i)
||
($item == 1)
||
($item =~ /^true$/i)
||
($item =~ /^yes$/i)
) {
return 1;
}
return 0;
}
1;