diff --git a/ChangeLog b/ChangeLog index 4f557673..bc69c030 100644 --- a/ChangeLog +++ b/ChangeLog @@ -30,6 +30,10 @@ version 1.0 () + Added set_i_duplex_admin() and set_i_speed_admin() to CiscoStack class + CDP added to Aironet class + Added Juniper class + + Added support for Catalyst 4000 and 4500, get admin. duplex + and speed properly + + Added i_speed_high(), which i_speed() uses if needed to support + interfaces >4Gbps * More error checking in _load_attr() around bulkwalk code * Minor warning fix in L3::Aironet::os_ver() @@ -52,6 +56,8 @@ version 1.0 () * Check root ip for reachability before assignment * HP class should recognize more models * Fix in HP class for models not returning full bp_index + * [ 1436103 ] L2::Aironet devices weren't getting their model + translated properly verison 0.9 (11/15/04) + ** Added full Nortel/Bay/BayStack support diff --git a/Info.pm b/Info.pm index d1be83bb..43d7e674 100644 --- a/Info.pm +++ b/Info.pm @@ -1220,7 +1220,30 @@ INTEGER. Interface MTU value. Speed of the link, human format. See munge_speed() later in document for details. -(B) +(B, B if necessary) + +=cut + +sub i_speed { + my $l3 = shift; + my $i_speed = $l3->orig_i_speed(); + my $i_speed_high = undef; + foreach my $i (keys %$i_speed) { + if ($i_speed->{$i} eq "4294967295") { + $i_speed_high = $l3->i_speed_high() unless defined($i_speed_high); + $i_speed->{$i} = $i_speed_high->{$i} if ($i_speed_high->{$i}); + } + } + return $i_speed; +} + +=item $info->i_speed_high() + +Speed of a high-speed link, human format. See munge_highspeed() later in +document for details. You should not need to call this directly, as +i_speed() will call it if it needs to. + +(B) =item $info->i_mac() @@ -1244,7 +1267,7 @@ Administrative status of the port. Typical values are 'enabled' and 'disabled'. The value of sysUpTime when this port last changed states (up,down). -(B) +(B) =item $info->i_name() @@ -1619,6 +1642,7 @@ These are table entries, such as the IfIndex 'ip_netmask' => 'ipAdEntNetMask', 'ip_broadcast' => 'ipAdEntBcastAddr', # ifXTable - Extension Table + 'i_speed_high' => 'ifHighSpeed', 'i_pkts_multi_in' => 'ifInMulticastPkts', 'i_pkts_multi_out' => 'ifOutMulticastPkts', 'i_pkts_bcast_in' => 'ifInBroadcastPkts', @@ -1685,6 +1709,7 @@ Sample %MUNGE: 'i_mac' => \&munge_mac, 'layers' => \&munge_dec2bin, 'i_speed' => \&munge_speed, + 'i_speed_high' => \&munge_highspeed, 'i_octet_in64' => \&munge_counter64, 'i_octet_out64' => \&munge_counter64, 'i_pkts_ucast_in64' => \&munge_counter64, @@ -1857,6 +1882,7 @@ Makes human friendly speed ratings using %SPEED_MAP %SPEED_MAP = ( '56000' => '56 kbps', '64000' => '64 kbps', + '115000' => '115 kpbs', '1500000' => '1.5 Mbps', '1536000' => 'T1', '1544000' => 'T1', @@ -1875,6 +1901,8 @@ Makes human friendly speed ratings using %SPEED_MAP '45000000' => '45 Mbps', '45045000' => 'DS3', '46359642' => 'DS3', + '51850000' => 'OC-1', + '54000000' => '54 Mbps', '64000000' => '64 Mbps', '100000000' => '100 Mbps', '149760000' => 'ATM on OC-3', @@ -1913,6 +1941,7 @@ Makes human friendly speed ratings using %SPEED_MAP '45045000' => 'DS3', '46359642' => 'DS3', '51850000' => 'OC-1', + '54000000' => '54 Mbps', '64000000' => '64 Mbps', '100000000' => '100 Mbps', '149760000' => 'ATM on OC-3', @@ -1934,6 +1963,32 @@ sub munge_speed { return $map || $speed; } +=item munge_highspeed() + +Makes human friendly speed ratings for ifHighSpeed + +=cut + +sub munge_highspeed { + my $speed = shift; + my $fmt = "%d Mbps"; + + if ($speed > 9999999) { + $fmt = "%d Tbps"; + $speed /= 1000000; + } elsif ($speed > 999999) { + $fmt = "%.1f Tbps"; + $speed /= 1000000.0; + } elsif ($speed > 9999) { + $fmt = "%d Gbps"; + $speed /= 1000; + } elsif ($speed > 999) { + $fmt = "%.1f Gbps"; + $speed /= 1000.0; + } + return sprintf($fmt, $speed); +} + =item munge_ip() Takes a binary IP and makes it dotted ASCII