@@ -1,17 +1,39 @@
Revision history for Perl extension Net::SNMPTrapd.
-0.01 Wed Jan 13 13:40:44 2010
- - original version; created by h2xs 1.23 with options
- -b 5.6.1 -v 0.01 -XAn Net::SNMPTrapd
+0.13 Mon Aug 4 09:30:00 2014
+ - Top down order for Changes.
+ - Added LICENSE to Makefile.PL.
+ - Cleanup code (remove Exporter).
-0.02 Mon Jan 18 16:29:48 2010
- - Allowed legacy and case insensitive calling of switches.
+0.12 Fri Aug 16 09:30:00 2013
+ - Updated Convert::ASN1 into single encode/decode.
+ - Added NULL varbind.
+ - Updated bin scripts: send has NULL value option, server has dump
-0.03 Mon Feb 5 09:29:48 2010
- - Updated tests to address Activestate auto-building of PPM
- which threw an error even though one didn't exist and
- every other version of build - including CPAN Testers
- had NO issues whatsoever.
+0.11 Mon Feb 4 09:30:00 2013
+ - pack_sockaddr_in / _in6 needed Socket:: prefix - RT# 83021.
+
+0.10 Tue Nov 20 21:30:00 2012
+ - Any Socket will do, fixed inet_ntoa issue with IPv6 in version 1.
+
+0.09 Sun Oct 7 21:30:00 2012
+ - Require Socket 1.87.
+
+0.08 Thu Oct 4 23:59:00 2012
+ - Make IO::Socket::IP optional with failback to IP::Socket::INET
+ with SUPER.
+ - Changed peeraddr(), peerport() accessors to remoteaddr(),
+ remoteport() to remove conflict with IO::Socket::*.
+
+0.07 Tue Sep 4 12:00:00 2012
+ - Timeout on advanced tests with EU::MM prompt().
+
+0.06 Fri Aug 24 12:00:00 2012
+ - Added server() accessor.
+
+0.05 Thu Aug 23 19:00:00 2012
+ - Changed to IO::Socket::IP and enabled IPv6 support.
+ - Updated bin/ scripts.
0.04 Thu Oct 21 12:00:00 2010
- Based on request user request, implemented parsing and
@@ -29,32 +51,15 @@ Revision history for Perl extension Net::SNMPTrapd.
debug subroutines directly for ASN.1 decode troubleshooting.
- More detailed error messages and more code comments.
-0.05 Thu Aug 23 19:00:00 2012
- - Changed to IO::Socket::IP and enabled IPv6 support.
- - Updated bin/ scripts.
-
-0.06 Fri Aug 24 12:00:00 2012
- - Added server() accessor.
-
-0.07 Tue Sep 4 12:00:00 2012
- - Timeout on advanced tests with EU::MM prompt().
-
-0.08 Thu Oct 4 23:59:00 2012
- - Make IO::Socket::IP optional with failback to IP::Socket::INET
- with SUPER.
- - Changed peeraddr(), peerport() accessors to remoteaddr(),
- remoteport() to remove conflict with IO::Socket::*.
-
-0.09 Sun Oct 7 21:30:00 2012
- - Require Socket 1.87.
-
-0.10 Tue Nov 20 21:30:00 2012
- - Any Socket will do, fixed inet_ntoa issue with IPv6 in version 1.
+0.03 Mon Feb 5 09:29:48 2010
+ - Updated tests to address Activestate auto-building of PPM
+ which threw an error even though one didn't exist and
+ every other version of build - including CPAN Testers
+ had NO issues whatsoever.
-0.11 Mon Feb 4 09:30:00 2013
- - pack_sockaddr_in / _in6 needed Socket:: prefix - RT# 83021.
+0.02 Mon Jan 18 16:29:48 2010
+ - Allowed legacy and case insensitive calling of switches.
-0.12 Fri Aug 16 09:30:00 2013
- - Updated Convert::ASN1 into single encode/decode.
- - Added NULL varbind.
- - Updated bin scripts: send has NULL value option, server has dump
+0.01 Wed Jan 13 13:40:44 2010
+ - original version; created by h2xs 1.23 with options
+ -b 5.6.1 -v 0.01 -XAn Net::SNMPTrapd
@@ -4,7 +4,9 @@ MANIFEST
README
bin/snmptrapd-sendtest.pl
bin/snmptrapd-simple.pl
-t/Net-SNMPTrapd.t
+t/00-Net-SNMPTrapd.t
+t/02-pod-coverage.t
+t/03-test-pod.t
test.pl
lib/Net/SNMPTrapd.pm
META.yml Module meta-data (added by MakeMaker)
@@ -4,9 +4,9 @@
"Michael Vincent <vin at vinsworld dot com>"
],
"dynamic_config" : 1,
- "generated_by" : "ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921",
+ "generated_by" : "ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.132140",
"license" : [
- "unknown"
+ "perl_5"
],
"meta-spec" : {
"url" : "http://search.cpan.org/perldoc?CPAN::Meta::Spec",
@@ -39,5 +39,5 @@
}
},
"release_status" : "stable",
- "version" : "0.12"
+ "version" : "0.13"
}
@@ -7,8 +7,8 @@ build_requires:
configure_requires:
ExtUtils::MakeMaker: 0
dynamic_config: 1
-generated_by: 'ExtUtils::MakeMaker version 6.6302, CPAN::Meta::Converter version 2.120921'
-license: unknown
+generated_by: 'ExtUtils::MakeMaker version 6.72, CPAN::Meta::Converter version 2.132140'
+license: perl
meta-spec:
url: http://module-build.sourceforge.net/META-spec-v1.4.html
version: 1.4
@@ -21,4 +21,4 @@ requires:
Convert::ASN1: 0.22
Socket: 0
Test::Simple: 0
-version: 0.12
+version: 0.13
@@ -1,10 +1,11 @@
-use 5.006001;
+use 5.008001;
use ExtUtils::MakeMaker;
# See lib/ExtUtils/MakeMaker.pm for details of how to influence
# the contents of the Makefile that is written.
WriteMakefile(
NAME => 'Net::SNMPTrapd',
VERSION_FROM => 'lib/Net/SNMPTrapd.pm', # finds $VERSION
+ ($ExtUtils::MakeMaker::VERSION >= 6.3002) ? ('LICENSE' => 'perl', ) : (),
EXE_FILES => ['bin/snmptrapd-simple.pl',
'bin/snmptrapd-sendtest.pl'],
PREREQ_PM => {Test::Simple => 0,
@@ -1,10 +1,12 @@
#! /usr/bin/perl
use strict;
-use Net::SNMP qw(:ALL);
+use warnings
use Getopt::Long qw(:config no_ignore_case); #bundling
use Pod::Usage;
+use Net::SNMP qw(:ALL);
+
my %opt;
my ($opt_help, $opt_man);
@@ -134,6 +136,8 @@ for my $host (@ARGV) {
$session->close()
}
+__END__
+
=head1 NAME
SNMPTRAPD-SENDTEST - SNMP Trap Tests
@@ -1,10 +1,12 @@
#!/usr/bin/perl
use strict;
-use Net::SNMPTrapd;
+use warnings;
use Getopt::Long qw(:config no_ignore_case); #bundling
use Pod::Usage;
+use Net::SNMPTrapd;
+
my %opt;
my ($opt_help, $opt_man);
@@ -87,23 +89,23 @@ while (1) {
$trap->dump
} else {
$p = sprintf "%s\t%i\t%i\t%s\t%s\t",
- $trap->remoteaddr,
- $trap->remoteport,
- $trap->version,
- $trap->community,
- $trap->pdu_type;
+ $trap->remoteaddr,
+ $trap->remoteport,
+ $trap->version,
+ $trap->community,
+ $trap->pdu_type;
if ($trap->version == 1) {
$p .= sprintf "%s\t%s\t%s\t%s\t%s\t",
- $trap->ent_OID,
- $trap->agentaddr,
- $trap->generic_trap,
- $trap->specific_trap,
- $trap->timeticks
+ $trap->ent_OID,
+ $trap->agentaddr,
+ $trap->generic_trap,
+ $trap->specific_trap,
+ $trap->timeticks
} else {
$p .= sprintf "%s\t%s\t%s\t",
- $trap->request_ID,
- $trap->error_status,
- $trap->error_index
+ $trap->request_ID,
+ $trap->error_status,
+ $trap->error_index
}
for my $varbind (@{$trap->varbinds}) {
for (keys(%{$varbind})) {
@@ -137,6 +139,8 @@ while (1) {
}
}
+__END__
+
=head1 NAME
SNMPTRAPD-SIMPLE - Simple SNMP Trap Server
@@ -1,29 +1,20 @@
package Net::SNMPTrapd;
########################################################
-#
# AUTHOR = Michael Vincent
# www.VinsWorld.com
-#
########################################################
-require 5.005;
-
use strict;
-use Exporter;
+use warnings;
use Convert::ASN1;
use Socket qw(inet_ntoa AF_INET IPPROTO_TCP);
my $AF_INET6 = eval { Socket::AF_INET6() };
my $NI_NUMERICHOST = eval { Socket::NI_NUMERICHOST() };
-our $VERSION = '0.12';
-our @ISA = qw(Exporter);
-our @EXPORT = qw();
-our %EXPORT_TAGS = (
- 'all' => [qw()]
- );
-our @EXPORT_OK = (@{$EXPORT_TAGS{'all'}});
+our $VERSION = '0.13';
+our @ISA;
my $HAVE_IO_Socket_IP = 0;
eval "use IO::Socket::IP -register";
@@ -43,8 +34,8 @@ use constant SNMPTRAPD_RFC_SIZE => 484; # RFC limit
use constant SNMPTRAPD_REC_SIZE => 1472; # Recommended size
use constant SNMPTRAPD_MAX_SIZE => 65467; # Actual limit (65535 - IP/UDP)
-our @TRAPTYPES = qw(COLDSTART WARMSTART LINKDOWN LINKUP AUTHFAIL EGPNEIGHBORLOSS ENTERPRISESPECIFIC);
-our @PDUTYPES = qw(GetRequest GetNextRequest Response SetRequest Trap GetBulkRequest InformRequest SNMPv2-Trap Report);
+my @TRAPTYPES = qw(COLDSTART WARMSTART LINKDOWN LINKUP AUTHFAIL EGPNEIGHBORLOSS ENTERPRISESPECIFIC);
+my @PDUTYPES = qw(GetRequest GetNextRequest Response SetRequest Trap GetBulkRequest InformRequest SNMPv2-Trap Report);
our $LASTERROR;
my $asn = Convert::ASN1->new;
@@ -102,7 +93,7 @@ $asn->prepare("
}
}
");
-our $snmpasn = $asn->find('PDU');
+my $snmpasn = $asn->find('PDU');
########################################################
# End Variables
@@ -126,35 +117,35 @@ sub new {
if (@_ == 1) {
$LASTERROR = "Insufficient number of args - @_";
- return(undef)
+ return undef
} else {
my %cfg = @_;
for (keys(%cfg)) {
if (/^-?localport$/i) {
- $params{'LocalPort'} = $cfg{$_}
+ $params{LocalPort} = $cfg{$_}
} elsif (/^-?localaddr$/i) {
- $params{'LocalAddr'} = $cfg{$_}
+ $params{LocalAddr} = $cfg{$_}
} elsif (/^-?family$/i) {
if ($cfg{$_} =~ /^(?:(?:(:?ip)?v?(?:4|6))|${\AF_INET}|$AF_INET6)$/) {
if ($cfg{$_} =~ /^(?:(?:(:?ip)?v?4)|${\AF_INET})$/) {
- $params{'Family'} = AF_INET
+ $params{Family} = AF_INET
} else {
if (!$HAVE_IO_Socket_IP) {
$LASTERROR = "IO::Socket::IP required for IPv6";
- return(undef)
+ return undef
}
- $params{'Family'} = $AF_INET6
+ $params{Family} = $AF_INET6
}
} else {
$LASTERROR = "Invalid family - $cfg{$_}";
- return(undef)
+ return undef
}
} elsif (/^-?timeout$/i) {
if ($cfg{$_} =~ /^\d+$/) {
- $params{'Timeout'} = $cfg{$_}
+ $params{Timeout} = $cfg{$_}
} else {
$LASTERROR = "Invalid timeout - $cfg{$_}";
- return(undef)
+ return undef
}
}
}
@@ -167,7 +158,7 @@ sub new {
}, $class
} else {
$LASTERROR = "Error opening socket for listener: $@";
- return(undef)
+ return undef
}
}
@@ -186,7 +177,7 @@ sub get_trap {
my $datagramsize = SNMPTRAPD_MAX_SIZE;
if (@_ == 1) {
$LASTERROR = "Insufficient number of args: @_";
- return(undef)
+ return undef
} else {
my %args = @_;
for (keys(%args)) {
@@ -202,22 +193,22 @@ sub get_trap {
$datagramsize = SNMPTRAPD_REC_SIZE
} else {
$LASTERROR = "Not a valid size: $args{$_}";
- return(undef)
+ return undef
}
# -timeout
} elsif (/^-?timeout$/i) {
if ($args{$_} =~ /^\d+$/) {
- $trap->{'Timeout'} = $args{$_}
+ $trap->{Timeout} = $args{$_}
} else {
$LASTERROR = "Invalid timeout - $args{$_}";
- return(undef)
+ return undef
}
}
}
}
- my $Timeout = $trap->{'Timeout'};
- my $udpserver = $self->{'_UDPSERVER_'};
+ my $Timeout = $trap->{Timeout};
+ my $udpserver = $self->{_UDPSERVER_};
my $datagram;
if ($Timeout != 0) {
@@ -235,15 +226,15 @@ sub get_trap {
# read the message
if ($udpserver->recv($datagram, $datagramsize)) {
- $trap->{'_TRAP_'}{'PeerPort'} = $udpserver->SUPER::peerport;
- $trap->{'_TRAP_'}{'PeerAddr'} = $udpserver->SUPER::peerhost;
- $trap->{'_TRAP_'}{'datagram'} = $datagram;
+ $trap->{_TRAP_}{PeerPort} = $udpserver->SUPER::peerport;
+ $trap->{_TRAP_}{PeerAddr} = $udpserver->SUPER::peerhost;
+ $trap->{_TRAP_}{datagram} = $datagram;
return bless $trap, $class
}
$LASTERROR = sprintf "Socket RECV error: $!";
- return(undef)
+ return undef
}
sub process_trap {
@@ -255,13 +246,13 @@ sub process_trap {
if (($self eq $class) && ($class eq __PACKAGE__)) {
my %th;
$self = \%th;
- ($self->{'_TRAP_'}{'datagram'}) = @_
+ ($self->{_TRAP_}{datagram}) = @_
}
# Net::SNMPTrapd::process_trap($data)
if ($class ne __PACKAGE__) {
my %th;
$self = \%th;
- ($self->{'_TRAP_'}{'datagram'}) = $class;
+ ($self->{_TRAP_}{datagram}) = $class;
$class = __PACKAGE__
}
@@ -272,7 +263,7 @@ sub process_trap {
for (keys(%args)) {
# -datagram
if ((/^-?data(?:gram)?$/i) || (/^-?pdu$/i)) {
- $self->{'_TRAP_'}{'datagram'} = $args{$_}
+ $self->{_TRAP_}{datagram} = $args{$_}
# -noresponse
} elsif (/^-?noresponse$/i) {
if (($args{$_} =~ /^\d+$/) && ($args{$_} > 0)) {
@@ -283,179 +274,179 @@ sub process_trap {
}
my $trap;
- if (!defined($trap = $snmpasn->decode($self->{'_TRAP_'}{'datagram'}))) {
+ if (!defined($trap = $snmpasn->decode($self->{_TRAP_}{datagram}))) {
$LASTERROR = sprintf "Error decoding PDU - %s", (defined($snmpasn->error) ? $snmpasn->error : "Unknown Convert::ASN1->decode() error. Consider $class dump()");
- return(undef)
+ return undef
}
#DEBUG: use Data::Dumper; print Dumper \$trap;
# Only understand SNMPv1 (0) and v2c (1)
- if ($trap->{'version'} > 1) {
- $LASTERROR = sprintf "Unrecognized SNMP version - %i", $trap->{'version'};
- return(undef)
+ if ($trap->{version} > 1) {
+ $LASTERROR = sprintf "Unrecognized SNMP version - %i", $trap->{version};
+ return undef
}
# set PDU Type for later use
- my $pdutype = sprintf "%s", keys(%{$trap->{'pdu_type'}});
+ my $pdutype = sprintf "%s", keys(%{$trap->{pdu_type}});
### Assemble decoded trap object
# Common
- $self->{'_TRAP_'}{'version'} = $trap->{'version'};
- $self->{'_TRAP_'}{'community'} = $trap->{'community'};
+ $self->{_TRAP_}{version} = $trap->{version};
+ $self->{_TRAP_}{community} = $trap->{community};
if ($pdutype eq 'trap') {
- $self->{'_TRAP_'}{'pdu_type'} = 4
+ $self->{_TRAP_}{pdu_type} = 4
} elsif ($pdutype eq 'inform_request') {
- $self->{'_TRAP_'}{'pdu_type'} = 6;
+ $self->{_TRAP_}{pdu_type} = 6;
# send response for InformRequest
if ($RESPONSE) {
- if ((my $r = &_InformRequest_Response(\$self, $trap, $pdutype)) ne 'OK') {
+ if ((my $r = _InformRequest_Response(\$self, $trap, $pdutype)) ne 'OK') {
$LASTERROR = sprintf "Error sending InformRequest Response - %s", $r;
- return(undef)
+ return undef
}
}
} elsif ($pdutype eq 'snmpv2_trap') {
- $self->{'_TRAP_'}{'pdu_type'} = 7
+ $self->{_TRAP_}{pdu_type} = 7
}
# v1
- if ($trap->{'version'} == 0) {
- $self->{'_TRAP_'}{'ent_oid'} = $trap->{'pdu_type'}->{$pdutype}->{'ent_oid'};
- $self->{'_TRAP_'}{'agent_addr'} = inetNtoa($trap->{'pdu_type'}->{$pdutype}->{'agent_addr'});
- $self->{'_TRAP_'}{'generic_trap'} = $trap->{'pdu_type'}->{$pdutype}->{'generic_trap'};
- $self->{'_TRAP_'}{'specific_trap'} = $trap->{'pdu_type'}->{$pdutype}->{'specific_trap'};
- $self->{'_TRAP_'}{'timeticks'} = $trap->{'pdu_type'}->{$pdutype}->{'timeticks'};
+ if ($trap->{version} == 0) {
+ $self->{_TRAP_}{ent_oid} = $trap->{pdu_type}->{$pdutype}->{ent_oid};
+ $self->{_TRAP_}{agent_addr} = _inetNtoa($trap->{pdu_type}->{$pdutype}->{agent_addr});
+ $self->{_TRAP_}{generic_trap} = $trap->{pdu_type}->{$pdutype}->{generic_trap};
+ $self->{_TRAP_}{specific_trap} = $trap->{pdu_type}->{$pdutype}->{specific_trap};
+ $self->{_TRAP_}{timeticks} = $trap->{pdu_type}->{$pdutype}->{timeticks};
# v2c
- } elsif ($trap->{'version'} == 1) {
- $self->{'_TRAP_'}{'request_id'} = $trap->{'pdu_type'}->{$pdutype}->{'request_id'};
- $self->{'_TRAP_'}{'error_status'} = $trap->{'pdu_type'}->{$pdutype}->{'error_status'};
- $self->{'_TRAP_'}{'error_index'} = $trap->{'pdu_type'}->{$pdutype}->{'error_index'};
+ } elsif ($trap->{version} == 1) {
+ $self->{_TRAP_}{request_id} = $trap->{pdu_type}->{$pdutype}->{request_id};
+ $self->{_TRAP_}{error_status} = $trap->{pdu_type}->{$pdutype}->{error_status};
+ $self->{_TRAP_}{error_index} = $trap->{pdu_type}->{$pdutype}->{error_index};
}
# varbinds
my @varbinds;
- for my $i (0..$#{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}}) {
+ for my $i (0..$#{$trap->{pdu_type}->{$pdutype}->{varbindlist}}) {
my %oidval;
- for (keys(%{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'value'}})) {
+ for (keys(%{$trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{value}})) {
# defined
- if (defined($trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'value'}{$_})) {
+ if (defined($trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{value}{$_})) {
# special cases: IP address, null
if ($_ eq 'ipaddr') {
- $oidval{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'oid'}} = inetNtoa($trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'value'}{$_})
+ $oidval{$trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{oid}} = _inetNtoa($trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{value}{$_})
} elsif ($_ eq 'null') {
- $oidval{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'oid'}} = '(NULL)'
+ $oidval{$trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{oid}} = '(NULL)'
# no special case: just assign it
} else {
- $oidval{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'oid'}} = $trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'value'}{$_}
+ $oidval{$trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{oid}} = $trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{value}{$_}
}
# not defined - ""
} else {
- $oidval{$trap->{'pdu_type'}->{$pdutype}->{'varbindlist'}[$i]->{'oid'}} = ""
+ $oidval{$trap->{pdu_type}->{$pdutype}->{varbindlist}[$i]->{oid}} = ""
}
}
push @varbinds, \%oidval
}
- $self->{'_TRAP_'}{'varbinds'} = \@varbinds;
+ $self->{_TRAP_}{varbinds} = \@varbinds;
return bless $self, $class
}
sub server {
my $self = shift;
- return $self->{'_UDPSERVER_'}
+ return $self->{_UDPSERVER_}
}
sub datagram {
my ($self, $arg) = @_;
if (defined($arg) && ($arg >= 1)) {
- return unpack ('H*', $self->{'_TRAP_'}{'datagram'})
+ return unpack ('H*', $self->{_TRAP_}{datagram})
} else {
- return $self->{'_TRAP_'}{'datagram'}
+ return $self->{_TRAP_}{datagram}
}
}
sub remoteaddr {
my $self = shift;
- return $self->{'_TRAP_'}{'PeerAddr'}
+ return $self->{_TRAP_}{PeerAddr}
}
sub remoteport {
my $self = shift;
- return $self->{'_TRAP_'}{'PeerPort'}
+ return $self->{_TRAP_}{PeerPort}
}
sub version {
my $self = shift;
- return $self->{'_TRAP_'}{'version'} + 1
+ return $self->{_TRAP_}{version} + 1
}
sub community {
my $self = shift;
- return $self->{'_TRAP_'}{'community'}
+ return $self->{_TRAP_}{community}
}
sub pdu_type {
my ($self, $arg) = @_;
if (defined($arg) && ($arg >= 1)) {
- return $self->{'_TRAP_'}{'pdu_type'}
+ return $self->{_TRAP_}{pdu_type}
} else {
- return $PDUTYPES[$self->{'_TRAP_'}{'pdu_type'}]
+ return $PDUTYPES[$self->{_TRAP_}{pdu_type}]
}
}
sub ent_OID {
my $self = shift;
- return $self->{'_TRAP_'}{'ent_oid'}
+ return $self->{_TRAP_}{ent_oid}
}
sub agentaddr {
my $self = shift;
- return $self->{'_TRAP_'}{'agent_addr'}
+ return $self->{_TRAP_}{agent_addr}
}
sub generic_trap {
my ($self, $arg) = @_;
if (defined($arg) && ($arg >= 1)) {
- return $self->{'_TRAP_'}{'generic_trap'}
+ return $self->{_TRAP_}{generic_trap}
} else {
- return $TRAPTYPES[$self->{'_TRAP_'}{'generic_trap'}]
+ return $TRAPTYPES[$self->{_TRAP_}{generic_trap}]
}
}
sub specific_trap {
my $self = shift;
- return $self->{'_TRAP_'}{'specific_trap'}
+ return $self->{_TRAP_}{specific_trap}
}
sub timeticks {
my $self = shift;
- return $self->{'_TRAP_'}{'timeticks'}
+ return $self->{_TRAP_}{timeticks}
}
sub request_ID {
my $self = shift;
- return $self->{'_TRAP_'}{'request_id'}
+ return $self->{_TRAP_}{request_id}
}
sub error_status {
my $self = shift;
- return $self->{'_TRAP_'}{'error_status'}
+ return $self->{_TRAP_}{error_status}
}
sub error_index {
my $self = shift;
- return $self->{'_TRAP_'}{'error_index'}
+ return $self->{_TRAP_}{error_index}
}
sub varbinds {
my $self = shift;
- return $self->{'_TRAP_'}{'varbinds'}
+ return $self->{_TRAP_}{varbinds}
}
sub error {
@@ -471,22 +462,22 @@ sub dump {
if (($self eq $class) && ($class eq __PACKAGE__)) {
my %th;
$self = \%th;
- ($self->{'_TRAP_'}{'datagram'}) = @_
+ ($self->{_TRAP_}{datagram}) = @_
}
# Net::SNMPTrapd::dump($datagram)
if ($class ne __PACKAGE__) {
my %th;
$self = \%th;
- ($self->{'_TRAP_'}{'datagram'}) = $class;
+ ($self->{_TRAP_}{datagram}) = $class;
$class = __PACKAGE__
}
- if (defined($self->{'_TRAP_'}{'datagram'})) {
- Convert::ASN1::asn_dump($self->{'_TRAP_'}{'datagram'});
- Convert::ASN1::asn_hexdump($self->{'_TRAP_'}{'datagram'});
+ if (defined($self->{_TRAP_}{datagram})) {
+ Convert::ASN1::asn_dump($self->{_TRAP_}{datagram});
+ Convert::ASN1::asn_hexdump($self->{_TRAP_}{datagram});
} else {
$LASTERROR = "Missing datagram to dump";
- return(undef)
+ return undef
}
return 1
@@ -506,40 +497,39 @@ sub _InformRequest_Response {
my $class = ref($$self) || $$self;
# Change from request to response
- $trap->{'pdu_type'}{'response'} = delete $trap->{'pdu_type'}{'inform_request'};
+ $trap->{pdu_type}{response} = delete $trap->{pdu_type}{inform_request};
my $buffer = $snmpasn->encode($trap);
if (!defined($buffer)) {
return $snmpasn->error
}
#DEBUG print "BUFFER = $buffer\n";
-
- if ($$self->{'_TRAP_'}->{'PeerAddr'} eq "") {
+ if (!defined($$self->{_TRAP_}->{PeerAddr}) || ($$self->{_TRAP_}->{PeerAddr} eq "")) {
return "Peer Addr undefined"
}
- if ($$self->{'_TRAP_'}->{'PeerPort'} == 0) {
+ if (!defined($$self->{_TRAP_}->{PeerPort}) || ($$self->{_TRAP_}->{PeerPort} == 0)) {
return "Peer Port undefined"
}
my $socket = $class->SUPER::new(
- Proto => "udp",
- PeerAddr => $$self->{'_TRAP_'}->{'PeerAddr'},
- PeerPort => $$self->{'_TRAP_'}->{'PeerPort'},
- # LocalPort should be set, but creates error.
- # Tried setting ReusePort on initial server,
- # but not implemented on Windows. What to do?
- #LocalPort => SNMPTRAPD_DEFAULT_PORT,
- Family => $$self->{'Family'}
- ) || return "Can't create Response socket";
+ Proto => "udp",
+ PeerAddr => $$self->{_TRAP_}->{PeerAddr},
+ PeerPort => $$self->{_TRAP_}->{PeerPort},
+ # LocalPort should be set, but creates error.
+ # Tried setting ReusePort on initial server,
+ # but not implemented on Windows. What to do?
+ #LocalPort => SNMPTRAPD_DEFAULT_PORT,
+ Family => $$self->{Family}
+ ) || return "Can't create Response socket";
$socket->send($buffer);
close $socket;
# Change back to request from response
- $trap->{'pdu_type'}{'inform_request'} = delete $trap->{'pdu_type'}{'response'};
+ $trap->{pdu_type}{inform_request} = delete $trap->{pdu_type}{response};
return ("OK")
}
-sub inetNtoa {
+sub _inetNtoa {
my ($addr) = @_;
if ($Socket::VERSION >= 1.94) {
@@ -0,0 +1,11 @@
+#!/usr/bin/perl
+# Before `make install' is performed this script should be runnable with
+# `make test'. After `make install' it should work as `perl Net-SNMPTrapd.t'
+
+use strict;
+use Test::Simple tests => 1;
+
+use Net::SNMPTrapd;
+ok(1, "Loading Module"); # If we made it this far, we're ok.
+
+#########################
@@ -0,0 +1,9 @@
+eval "use Test::Pod::Coverage";
+if ($@) {
+ use Test;
+ plan(tests => 1);
+ skip("Test::Pod::Coverage required for testing");
+}
+else {
+ all_pod_coverage_ok();
+}
@@ -0,0 +1,9 @@
+eval "use Test::Pod 1.00";
+if ($@) {
+ use Test;
+ plan(tests => 1);
+ skip("Test::Pod 1.00 required for testing");
+}
+else {
+ all_pod_files_ok();
+}
@@ -1,11 +0,0 @@
-#!/usr/bin/perl
-# Before `make install' is performed this script should be runnable with
-# `make test'. After `make install' it should work as `perl Net-SNMPTrapd.t'
-
-use strict;
-use Test::Simple tests => 1;
-
-use Net::SNMPTrapd;
-ok(1, "Loading Module"); # If we made it this far, we're ok.
-
-#########################
@@ -92,11 +92,11 @@ sub test4 {
# SNMPv1 Trap
my ($session, $error) = Net::SNMP->session(
- -hostname => 'localhost',
- -version => 1,
- -community => 'public',
- -port => 162
- );
+ -hostname => 'localhost',
+ -version => 1,
+ -community => 'public',
+ -port => 162
+ );
if (!defined($session)) {
printf "Error: Starting SNMP session (v1 trap) - %s\n", $error;
@@ -123,11 +123,11 @@ sub test4 {
# SNMPv2 Trap
($session, $error) = Net::SNMP->session(
- -hostname => 'localhost',
- -version => 2,
- -community => 'public',
- -port => 162
- );
+ -hostname => 'localhost',
+ -version => 2,
+ -community => 'public',
+ -port => 162
+ );
if (!defined($session)) {
printf "Error: Starting SNMP session (v2c trap) - %s\n", $error;
@@ -153,11 +153,11 @@ sub test4 {
# SNMPv2 InformRequest
# This will keep sending until a Response is successfully sent from the Server or until timeout
($session, $error) = Net::SNMP->session(
- -hostname => 'localhost',
- -version => 2,
- -community => 'public',
- -port => 162
- );
+ -hostname => 'localhost',
+ -version => 2,
+ -community => 'public',
+ -port => 162
+ );
if (!defined($session)) {
printf "Error: Starting SNMP session (v2c InformRequest) - %s\n", $error;
@@ -277,10 +277,10 @@ sub test5 {
use IO::Socket::INET;
my $snmptrapd = IO::Socket::INET->new(
- 'Proto' => 'udp',
- 'LocalPort' => 162,
- 'Timeout' => 10
- );
+ 'Proto' => 'udp',
+ 'LocalPort' => 162,
+ 'Timeout' => 10
+ );
if (!defined($snmptrapd)) {
print "Error: creating socket\n";
@@ -300,11 +300,11 @@ sub test5 {
# SNMPv2 InformRequest
# This will keep sending until a Response is successfully sent from the Server or until timeout
my ($session, $error) = Net::SNMP->session(
- -hostname => 'localhost',
- -version => 2,
- -community => 'public',
- -port => 162
- );
+ -hostname => 'localhost',
+ -version => 2,
+ -community => 'public',
+ -port => 162
+ );
if (!defined($session)) {
printf "Error: Starting SNMP session (v2c InformRequest) - %s\n", $error;