diff --git a/lib/SNMP/Info/Layer3/DLink.pm b/lib/SNMP/Info/Layer3/DLink.pm index 05b76ec5..d30533e8 100644 --- a/lib/SNMP/Info/Layer3/DLink.pm +++ b/lib/SNMP/Info/Layer3/DLink.pm @@ -32,6 +32,7 @@ use strict; use warnings; use Exporter; use SNMP::Info::Layer3; +use Data::Dumper; @SNMP::Info::Layer3::DLink::ISA = qw/SNMP::Info::Layer3 Exporter/; @SNMP::Info::Layer3::DLink::EXPORT_OK = qw//; @@ -102,7 +103,25 @@ sub os { sub os_ver { my $obj = shift; - return $obj->fwver(); + my $os_ver = undef; + my $model = $obj->model(); + my $id = $obj->id(); + + #Due to the zoo of MIB from DLink by 1210 series + $os_ver = $obj->session()->get($id.'.1.3.0') if $model =~ /1210/; + + while (not defined $os_ver) { + $os_ver = $obj->dlink_fw(); + last if defined $os_ver; + + $os_ver = $obj->session()->get('enterprises.171.10.94.89.89.2.4.0'); + last; + } + + my $brom = $obj->brom(); + $os_ver .= ' bootrom:' . $brom if defined $brom; + + return $os_ver if defined $os_ver; } sub serial { @@ -121,35 +140,41 @@ sub serial { return $dlink->SUPER::serial(); } -sub fwver { - my $dlink=shift; - my $model = $dlink->model(); - my $id = $dlink->id(); - my $fw; - if ($model =~ /1210/) { - #Due to the zoo of MIB from DLink by 1210 series - $fw->{0} = $dlink->session()->get($id.'.1.3.0'); - } else { - $fw = $dlink->dlink_fw(); - } - return $fw->{0} if ( defined $fw->{0} and $fw->{0} !~ /^\s*$/ and $fw->{0} !~ 'NOSUCHOBJECT'); +sub brom { + my $obj = shift; + my $brom = undef; + + $brom = $obj->session()->get('enterprises.171.10.94.89.89.2.10.0'); + + return $brom if defined $brom; } sub hwver { - my $dlink=shift; - my $id = $dlink->id(); + my $obj=shift; + my $id = $obj->id(); my $model = &SNMP::translateObj($id); - my $hw; - if ($model =~ /1210/) { - #Due to the zoo of MIB from DLink by 1210 series - $hw->{0} = $dlink->session()->get($id.'.1.2.0'); - } else { - $hw = $dlink->dlink_hw(); - } - return $hw->{0} if ( defined $hw->{0} and $hw->{0} !~ /^\s*$/ and $hw->{0} !~ 'NOSUCHOBJECT'); + my $hw = undef; - $hw = $dlink->session()->get('rmon.19.3.0'); - return $hw if defined($hw); + #Due to the zoo of MIB from DLink by 1210 series + $hw = $obj->session()->get($id.'.1.2.0') if $model =~ /1210/; + $hw = undef if defined $hw and $hw eq 'NOSUCHOBJECT'; + + while(not defined $hw){ + $hw = $obj->dlink_hw() || undef; + $hw = undef if defined $hw and $hw eq 'NOSUCHOBJECT'; + last if defined $hw; + + $hw = $obj->session()->get('rmon.19.3.0') || undef; + $hw = undef if defined $hw and $hw eq 'NOSUCHOBJECT'; + last if defined $hw; + + $hw = $obj->session()->get('enterprises.171.10.94.89.89.2.10.0') || undef; + $hw = undef if defined $hw and $hw eq 'NOSUCHOBJECT'; + + last; + } + + return $hw if defined $hw; } sub stp_i_root_port {