diff --git a/lib/SNMP/Info/Layer3/CheckPoint.pm b/lib/SNMP/Info/Layer3/CheckPoint.pm index 1da0b90a..5dce4531 100644 --- a/lib/SNMP/Info/Layer3/CheckPoint.pm +++ b/lib/SNMP/Info/Layer3/CheckPoint.pm @@ -54,6 +54,10 @@ $VERSION = '3.68'; %SNMP::Info::Layer3::GLOBALS, 'netsnmp_vers' => 'versionTag', 'hrSystemUptime' => 'hrSystemUptime', + 'serial_number' => 'svnApplianceSerialNumber', + 'product_name' => 'svnApplianceProductName', + 'manufacturer' => 'svnApplianceManufacturer', + 'version' => 'svnVersion', ); %FUNCS = ( @@ -68,7 +72,13 @@ $VERSION = '3.68'; ); sub vendor { - return 'checkpoint'; + my $ckp = shift; + + if (defined $ckp->manufacturer) { + return $ckp->manufacturer; + } else { + return 'checkpoint'; + } } sub model { @@ -77,7 +87,9 @@ sub model { my $model = &SNMP::translateObj($id); - if (defined $model) { + if (defined $ckp->product_name) { + return $ckp->product_name; + } elsif (defined $model) { $model =~ s/^checkPoint//; return $model; } else { @@ -91,41 +103,48 @@ sub os { sub os_ver { my $ckp = shift; - my $extend_table = $ckp->extend_output_table() || {}; + if (defined $ckp->version) { + return $ckp->version; + } else { + my $extend_table = $ckp->extend_output_table() || {}; - my $descr = $ckp->description(); - my $vers = $ckp->netsnmp_vers(); - my $os_ver = undef; + my $descr = $ckp->description(); + my $vers = $ckp->netsnmp_vers(); + my $os_ver = undef; - foreach my $ex (keys %$extend_table) { - (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; - if ($name eq 'ckpVersion') { - return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/); - last; + foreach my $ex (keys %$extend_table) { + (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; + if ($name eq 'ckpVersion') { + return $1 if ($extend_table->{$ex} =~ /^This is Check Point's software version (.*)$/); + last; + } } - } - $os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ ); - if ($vers) { - $os_ver = "???" unless defined($os_ver); - $os_ver .= " / Net-SNMP " . $vers; + $os_ver = $1 if ( $descr =~ /^\S+\s+\S+\s+(\S+)\s+/ ); + if ($vers) { + $os_ver = "???" unless defined($os_ver); + $os_ver .= " / Net-SNMP " . $vers; + } + return $os_ver; } - - return $os_ver; } sub serial { my $ckp = shift; - my $extend_table = $ckp->extend_output_table() || {}; - foreach my $ex (keys %$extend_table) { - (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; - if ($name eq 'ckpAsset') { - return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/); - last; + if (defined $ckp->serial_number) { + return $ckp->serial_number; + } else { + my $extend_table = $ckp->extend_output_table() || {}; + + foreach my $ex (keys %$extend_table) { + (my $name = pack('C*',split(/\./,$ex))) =~ s/[^[:print:]]//g; + if ($name eq 'ckpAsset') { + return $1 if ($extend_table->{$ex} =~ /Serial Number: (\S+)/); + last; + } } } - return ''; } diff --git a/xt/lib/Test/SNMP/Info/Layer3/CheckPoint.pm b/xt/lib/Test/SNMP/Info/Layer3/CheckPoint.pm index 53e7e898..b6b6224b 100644 --- a/xt/lib/Test/SNMP/Info/Layer3/CheckPoint.pm +++ b/xt/lib/Test/SNMP/Info/Layer3/CheckPoint.pm @@ -53,6 +53,10 @@ sub setup : Tests(setup) { # CHECKPOINT-MIB::fw '_id' => '.1.3.6.1.4.1.2620.1.1', 'store' => {}, + '_serial_number' => '0123456789abcdef', + '_product_name' => 'Check Point 12200', + '_manufacturer' => 'Checkpoint', + '_version' => 'R80.20', }; $test->{info}->cache($cache_data); } @@ -68,14 +72,28 @@ sub vendor : Tests(2) { my $test = shift; can_ok($test->{info}, 'vendor'); - is($test->{info}->vendor(), 'checkpoint', q(Vendor returns 'checkpoint')); + is($test->{info}->vendor(), 'Checkpoint', q(Vendor returns 'Checkpoint')); +} + +sub os_ver : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'os_ver'); + is($test->{info}->os_ver(), 'R80.20',q(OS Version return 'R80.20')); +} + +sub serial : Tests(2) { + my $test = shift; + + can_ok($test->{info}, 'serial'); + is($test->{info}->serial(), '0123456789abcdef', q(Serial returns '0123456789abcdef')); } sub model : Tests(3) { my $test = shift; can_ok($test->{info}, 'model'); - is($test->{info}->model(), 'fw', q(Model is expected value)); + is($test->{info}->model(), 'Check Point 12200', q(Model is expected value)); $test->{info}->clear_cache(); is($test->{info}->model(), undef, q(No description returns undef model));