diff --git a/lib/SNMP/Info/Layer3/Raisecom.pm b/lib/SNMP/Info/Layer3/Raisecom.pm index 4083dc18..a0a2d249 100755 --- a/lib/SNMP/Info/Layer3/Raisecom.pm +++ b/lib/SNMP/Info/Layer3/Raisecom.pm @@ -68,7 +68,7 @@ sub main { #All another known ways to HW while (not defined($hw)) { - $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/; + $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140; $hw = $1 if defined $1; last; } @@ -90,36 +90,71 @@ sub main { last; } - #All another known ways to Bootrom - $obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/; - $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2); - - $brom = $obj->brom_oid || undef if not defined($brom); - #Serial $serial = $obj->serial_oid_8886_6_140 || undef; #### #final formatting before output. #### - $model .= ' HW:' . $hw if defined($model) and defined($hw); - $os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom); + #$model .= ' HW:' . $hw if defined($model) and defined($hw); + #$os_ver .= ' bootrom:' . $brom if defined($os_ver) and defined($brom); return { 'model' => $model, 'os_ver' => $os_ver, 'serial' => $serial }; } sub os_ver { my $obj = shift; - return main($obj)->{os_ver}; + my $os_ver = $obj->main()->{os_ver}; + my $brom = $obj->brom() || undef; + + $os_ver .= ' Bootrom:' . $brom if defined $brom; + return $os_ver if defined $os_ver; } sub model { my $obj = shift; - return main($obj)->{model}; + my $model = $obj->main()->{model} || undef; + my $hw = $obj->hw() || undef; + + if (not defined $model or $model eq 'NOSUCHOBJECT') { + $model = $obj->session()->get('enterprises.8886.22.2.1.2.0') || undef; + } + + $model .= ' HW:' . $hw if defined $hw; + return $model if defined $model; + return $obj->id(); } sub serial { my $obj = shift; - return main($obj)->{serial}; + my $serial = $obj->main()->{serial} || undef; + + while(not defined $serial) { + $serial = $obj->session()->get('mib-2.47.1.1.1.1.11.1') || undef; + last; + } + return $serial if defined $serial; +} + +sub hwver { + my $obj = shift; + my $hw = $obj->session()->get('mib-2.47.1.1.1.1.8.1') || undef; + + while (not defined($hw)) { + $obj->hw_oid_8886_6_140 =~ /.*[v,V]ersion[:,\s]*(.*)/ if defined $obj->hw_oid_8886_6_140; + $hw = $1 if defined $1; + last; + } + return $hw if defined $hw; +} + +sub brom { + my $obj = shift; + my $brom = undef; + + $obj->brom_oid_8886_6_140 =~ /Bootstrap_([\d\W]+)\.ISCOM.*\.(\d*\.+\d*)/ if defined $obj->brom_oid_8886_6_140; + $brom = $1 . ' (' . $2 . ')' if defined($1) and defined($2); + + $brom = $obj->brom_oid || undef if not defined($brom); } 1;