SNMP-Info
view release on metacpan or search on metacpan
lib/SNMP/Info/Layer2/Baystack.pm view on Meta::CPAN
sub os_bin {
my $baystack = shift;
my $descr = $baystack->description();
return unless defined $descr;
# 303 / 304
if ( $descr =~ m/Rev: \d+\.(\d+\.\d+\.\d+)-\d+\.\d+\.\d+\.\d+/ ) {
return $1;
}
# 450
if ( $descr =~ m/FW:V(\d+\.\d+)/ ) {
return $1;
}
if ( $descr =~ m/FW:(\d+\.\d+\.\d+\.\d+)/i ) {
return $1;
}
return;
}
sub vendor {
return 'avaya';
}
sub model {
my $baystack = shift;
my $id = $baystack->id();
return unless defined $id;
my $model = &SNMP::translateObj($id);
return $id unless defined $model;
my $descr = $baystack->description();
return '303' if ( defined $descr and $descr =~ /\D303\D/ );
return '304' if ( defined $descr and $descr =~ /\D304\D/ );
return 'BPS' if ( $model =~ /BPS2000/i );
# Pull sreg- from all
$model =~ s/^sreg-//;
# Strip ES/ERS/BayStack etc. from those families
$model =~ s/^(E(R)?S|BayStack|Ethernet(Routing)?Switch)-?//;
$model =~ s/-ethSwitchNMM//;
return $model;
}
sub interfaces {
my $baystack = shift;
my $partial = shift;
my $i_index = $baystack->i_index($partial) || {};
my $index_factor = $baystack->index_factor();
my $slot_offset = $baystack->slot_offset();
my %if;
foreach my $iid ( keys %$i_index ) {
my $index = $i_index->{$iid};
next unless defined $index;
# Ignore cascade ports
next if $index > $index_factor * 8;
my $port = ( $index % $index_factor );
my $slot = ( int( $index / $index_factor ) ) + $slot_offset;
my $slotport = "$slot.$port";
$if{$iid} = $slotport;
}
return \%if;
}
sub i_mac {
my $baystack = shift;
my $partial = shift;
my $i_mac = $baystack->orig_i_mac($partial) || {};
my %i_mac;
# Baystack 303's with a hw rev < 2.11.4.5 report the mac as all zeros
foreach my $iid ( keys %$i_mac ) {
my $mac = $i_mac->{$iid};
next unless defined $mac;
next if $mac eq '00:00:00:00:00:00';
$i_mac{$iid} = $mac;
}
return \%i_mac;
}
sub i_name {
my $baystack = shift;
my $partial = shift;
my $i_index = $baystack->i_index($partial) || {};
my $i_alias = $baystack->i_alias($partial) || {};
my $i_name2 = $baystack->orig_i_name($partial) || {};
my %i_name;
foreach my $iid ( keys %$i_name2 ) {
my $name = $i_name2->{$iid};
my $alias = $i_alias->{$iid};
$i_name{$iid}
= ( defined $alias and $alias !~ /^\s*$/ )
? $alias
: $name;
}
return \%i_name;
}
sub index_factor {
my $baystack = shift;
my $model = $baystack->model() || "";
my $os = $baystack->os();
my $os_ver = $baystack->os_ver();
my $op_mode = $baystack->ns_op_mode();
$op_mode = 'pure' unless defined $op_mode;
if ( $os_ver =~ m/^(\d+)\./ ) {
$os_ver = $1;
( run in 2.827 seconds using v1.01-cache-2.11-cpan-f56aa216473 )