Compare commits
39 Commits
3.20
...
ver_3_2_1_
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
b24f1a8ac4 | ||
|
|
5454ab577e | ||
|
|
046c15a074 | ||
|
|
ddb9dda894 | ||
|
|
d7047bda13 | ||
|
|
c7934f4d10 | ||
|
|
c97dc06177 | ||
|
|
76b1faa159 | ||
|
|
1e0438857e | ||
|
|
b6494effa6 | ||
|
|
a359184b83 | ||
|
|
ce50a3f627 | ||
|
|
ee7d254329 | ||
|
|
d674b22b39 | ||
|
|
47954aba8e | ||
|
|
09e18e9b64 | ||
|
|
163ba86196 | ||
|
|
e57e7d99d5 | ||
|
|
7ad449303b | ||
|
|
49b853de1a | ||
|
|
03a81ad4be | ||
|
|
eb046b6a61 | ||
|
|
1bf62f9524 | ||
|
|
9aca213a5f | ||
|
|
ce8bb68200 | ||
|
|
7ee562c5ac | ||
|
|
bdb719004d | ||
|
|
842ac96d48 | ||
|
|
5bb9011fb4 | ||
|
|
97564f50b8 | ||
|
|
efcf6a0db3 | ||
|
|
9e813784f7 | ||
|
|
aaca03062b | ||
|
|
c1242017e2 | ||
|
|
5f1426a0a3 | ||
|
|
e84225fb23 | ||
|
|
32c0e64bfb | ||
|
|
0793ff31f5 | ||
|
|
d3c2c1b607 |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -1,2 +1,9 @@
|
|||||||
*.db
|
*.db
|
||||||
SNMP
|
SNMP
|
||||||
|
*.komodo*
|
||||||
|
blib/
|
||||||
|
META.*
|
||||||
|
MYMETA.*
|
||||||
|
Makefile
|
||||||
|
Makefile.old
|
||||||
|
pm_to_blib
|
||||||
|
|||||||
31
ChangeLog
31
ChangeLog
@@ -1,5 +1,35 @@
|
|||||||
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
|
SNMP::Info - Friendly OO-style interface to Network devices using SNMP.
|
||||||
|
|
||||||
|
version 3.21_001 (2014-11-14)
|
||||||
|
|
||||||
|
[NEW FEATURES]
|
||||||
|
|
||||||
|
* Support obtaining FDB in Avaya SPBM edge deployments in L2::Baystack
|
||||||
|
NOTE: This requires a RAPID-CITY MIB with the rcBridgeSpbmMacTable
|
||||||
|
* Support for Fortinet devices in new class L3::Fortinet
|
||||||
|
|
||||||
|
[ENHANCEMENTS]
|
||||||
|
|
||||||
|
* No longer ignore interfaces based on name, in base L2/L3/L7 device
|
||||||
|
classes. For several device classes SNMP::Info will now return tunnel
|
||||||
|
interfaces and/or loopbacks, if present.
|
||||||
|
* Use dot1qVlanCurrentTable if available to capture dynamic and static
|
||||||
|
VLANs, fall back to dot1qVlanStaticTable if not available.
|
||||||
|
* New method i_vlan_membership_untagged() for VLANs transmitted as
|
||||||
|
untagged frames.
|
||||||
|
* Capture Aruba AP hardware and software version when available
|
||||||
|
|
||||||
|
[BUG FIXES]
|
||||||
|
|
||||||
|
* [#64] Misdetection: Wireless APs, add products MIB to L2::3Com
|
||||||
|
* Use FDB ID to VID mapping if available to determine end station VLAN
|
||||||
|
rather than assuming they are the same.
|
||||||
|
* Capture port VLANs on Cisco interfaces which are configured for
|
||||||
|
trunking but are not in operational trunking mode
|
||||||
|
* Correct munging of stp_p_port(), i_stp_port(), and stp_root() methods
|
||||||
|
in Bridge
|
||||||
|
* In LLDP.pm don't create a variable in a conditional
|
||||||
|
|
||||||
version 3.20 (2014-09-08)
|
version 3.20 (2014-09-08)
|
||||||
|
|
||||||
[NEW FEATURES]
|
[NEW FEATURES]
|
||||||
@@ -248,7 +278,6 @@ version 3.05 (2013-08-16)
|
|||||||
* Properly report hardware version, Serial No. and OS Version for
|
* Properly report hardware version, Serial No. and OS Version for
|
||||||
Netgear.
|
Netgear.
|
||||||
|
|
||||||
|
|
||||||
version 3.03 (2013-07-11)
|
version 3.03 (2013-07-11)
|
||||||
|
|
||||||
[BUG FIXES]
|
[BUG FIXES]
|
||||||
|
|||||||
37
Info.pm
37
Info.pm
@@ -24,7 +24,7 @@ use vars
|
|||||||
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG %SPEED_MAP
|
||||||
$NOSUCH $BIGINT $REPEATERS/;
|
$NOSUCH $BIGINT $REPEATERS/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
@@ -32,7 +32,7 @@ SNMP::Info - OO Interface to Network devices and MIBs through SNMP
|
|||||||
|
|
||||||
=head1 VERSION
|
=head1 VERSION
|
||||||
|
|
||||||
SNMP::Info - Version 3.20
|
SNMP::Info - Version 3.21_001
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
@@ -395,6 +395,12 @@ F<MAU-MIB> (RFC2668). Some Layer2 devices use this for extended Ethernet
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::MAU> for details.
|
See documentation in L<SNMP::Info::MAU> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::MRO
|
||||||
|
|
||||||
|
Method resolution introspection for SNMP::Info
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::MRO> for details.
|
||||||
|
|
||||||
=item SNMP::Info::NortelStack
|
=item SNMP::Info::NortelStack
|
||||||
|
|
||||||
F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
|
F<S5-AGENT-MIB>, F<S5-CHASSIS-MIB>.
|
||||||
@@ -778,6 +784,12 @@ Subclass for Force10 devices.
|
|||||||
|
|
||||||
See documentation in L<SNMP::Info::Layer3::Force10> for details.
|
See documentation in L<SNMP::Info::Layer3::Force10> for details.
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3::Fortinet
|
||||||
|
|
||||||
|
Subclass for Fortinet devices.
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3::Fortinet> for details.
|
||||||
|
|
||||||
=item SNMP::Info::Layer3::Foundry
|
=item SNMP::Info::Layer3::Foundry
|
||||||
|
|
||||||
Subclass for Brocade (Foundry) Network devices.
|
Subclass for Brocade (Foundry) Network devices.
|
||||||
@@ -1510,6 +1522,7 @@ sub device_type {
|
|||||||
9303 => 'SNMP::Info::Layer3::PacketFront',
|
9303 => 'SNMP::Info::Layer3::PacketFront',
|
||||||
10002 => 'SNMP::Info::Layer2::Ubiquiti',
|
10002 => 'SNMP::Info::Layer2::Ubiquiti',
|
||||||
12325 => 'SNMP::Info::Layer3::Pf',
|
12325 => 'SNMP::Info::Layer3::Pf',
|
||||||
|
12356 => 'SNMP::Info::Layer3::Fortinet',
|
||||||
14179 => 'SNMP::Info::Layer2::Airespace',
|
14179 => 'SNMP::Info::Layer2::Airespace',
|
||||||
14525 => 'SNMP::Info::Layer2::Trapeze',
|
14525 => 'SNMP::Info::Layer2::Trapeze',
|
||||||
14823 => 'SNMP::Info::Layer3::Aruba',
|
14823 => 'SNMP::Info::Layer3::Aruba',
|
||||||
@@ -1665,7 +1678,7 @@ sub device_type {
|
|||||||
# Starting with IOS 15, Aironet reports sysServices 6, even though
|
# Starting with IOS 15, Aironet reports sysServices 6, even though
|
||||||
# it still is the same layer2 access point.
|
# it still is the same layer2 access point.
|
||||||
$objtype = 'SNMP::Info::Layer2::Aironet'
|
$objtype = 'SNMP::Info::Layer2::Aironet'
|
||||||
if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250)\b/
|
if ($desc =~ /\b(C1100|C1130|C1140|AP1200|C350|C1200|C1240|C1250|C2700|C3700)\b/
|
||||||
and $desc =~ /\bIOS\b/ );
|
and $desc =~ /\bIOS\b/ );
|
||||||
|
|
||||||
# Airespace (WLC) Module
|
# Airespace (WLC) Module
|
||||||
@@ -3404,7 +3417,7 @@ sub munge_mac {
|
|||||||
|
|
||||||
=item munge_prio_mac()
|
=item munge_prio_mac()
|
||||||
|
|
||||||
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
|
Takes an 2-byte octet stream (HEX-STRING) and returns a colon separated ASCII
|
||||||
hex string.
|
hex string.
|
||||||
|
|
||||||
=cut
|
=cut
|
||||||
@@ -3418,6 +3431,22 @@ sub munge_prio_mac {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item munge_prio_port()
|
||||||
|
|
||||||
|
Takes an 8-byte octet stream (HEX-STRING) and returns a colon separated ASCII
|
||||||
|
hex string.
|
||||||
|
|
||||||
|
=cut
|
||||||
|
|
||||||
|
sub munge_prio_port {
|
||||||
|
my $mac = shift;
|
||||||
|
return unless defined $mac;
|
||||||
|
return unless length $mac;
|
||||||
|
$mac = join( ':', map { sprintf "%02x", $_ } unpack( 'C*', $mac ) );
|
||||||
|
return $mac if $mac =~ /^([0-9A-F][0-9A-F]:){1}[0-9A-F][0-9A-F]$/i;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
=item munge_octet2hex()
|
=item munge_octet2hex()
|
||||||
|
|
||||||
Takes a binary octet stream and returns an ASCII hex string
|
Takes a binary octet stream and returns an ASCII hex string
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS
|
%MIBS
|
||||||
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
= ( 'ALCATEL-IND1-INTERSWITCH-PROTOCOL-MIB' => 'aipAMAPRemDeviceType', );
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
%MIBS = ( 'ADSL-LINE-MIB' => 'adslLineType' );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (); # IF-MIB
|
%MIBS = (); # IF-MIB
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
134
Info/Bridge.pm
134
Info/Bridge.pm
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
'BRIDGE-MIB' => 'dot1dBaseBridgeAddress',
|
||||||
@@ -84,6 +84,17 @@ $VERSION = '3.20';
|
|||||||
'bs_to' => 'dot1dStaticAllowedToGoTo',
|
'bs_to' => 'dot1dStaticAllowedToGoTo',
|
||||||
'bs_status' => 'dot1dStaticStatus',
|
'bs_status' => 'dot1dStaticStatus',
|
||||||
|
|
||||||
|
# These leafs are not part of a table, but placed here
|
||||||
|
# to return a hash reference to ease API compatibility with
|
||||||
|
# MST and PVST implementations indexed by a spanning tree
|
||||||
|
# instance id
|
||||||
|
'stp_i_mac' => 'dot1dBaseBridgeAddress',
|
||||||
|
'stp_i_time' => 'dot1dStpTimeSinceTopologyChange',
|
||||||
|
'stp_i_ntop' => 'dot1dStpTopChanges',
|
||||||
|
'stp_i_root' => 'dot1dStpDesignatedRoot',
|
||||||
|
'stp_i_root_port' => 'dot1dStpRootPort',
|
||||||
|
'stp_i_priority' => 'dot1dStpPriority',
|
||||||
|
|
||||||
# Spanning Tree Protocol Table : dot1dStpPortTable
|
# Spanning Tree Protocol Table : dot1dStpPortTable
|
||||||
'stp_p_id' => 'dot1dStpPort',
|
'stp_p_id' => 'dot1dStpPort',
|
||||||
'stp_p_priority' => 'dot1dStpPortPriority',
|
'stp_p_priority' => 'dot1dStpPortPriority',
|
||||||
@@ -125,15 +136,18 @@ $VERSION = '3.20';
|
|||||||
'b_mac' => \&SNMP::Info::munge_mac,
|
'b_mac' => \&SNMP::Info::munge_mac,
|
||||||
'fw_mac' => \&SNMP::Info::munge_mac,
|
'fw_mac' => \&SNMP::Info::munge_mac,
|
||||||
'bs_mac' => \&SNMP::Info::munge_mac,
|
'bs_mac' => \&SNMP::Info::munge_mac,
|
||||||
'stp_root' => \&SNMP::Info::munge_mac,
|
'stp_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
|
'stp_i_mac' => \&SNMP::Info::munge_mac,
|
||||||
|
'stp_i_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
|
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
|
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
|
||||||
'stp_p_port' => \&SNMP::Info::munge_prio_mac,
|
'stp_p_port' => \&SNMP::Info::munge_prio_port,
|
||||||
'qb_cv_egress' => \&SNMP::Info::munge_port_list,
|
'qb_cv_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
|
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_egress' => \&SNMP::Info::munge_port_list,
|
'qb_v_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
|
'qb_v_fbdn_egress' => \&SNMP::Info::munge_port_list,
|
||||||
'qb_v_untagged' => \&SNMP::Info::munge_port_list,
|
'qb_v_untagged' => \&SNMP::Info::munge_port_list,
|
||||||
|
'qb_cv_untagged' => \&SNMP::Info::munge_port_list,
|
||||||
|
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -163,10 +177,20 @@ sub qb_fw_vlan {
|
|||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
|
|
||||||
my $qb_fw_port = $bridge->qb_fw_port($partial);
|
my $qb_fw_port = $bridge->qb_fw_port($partial);
|
||||||
|
my $qb_fdb_ids = $bridge->qb_fdb_index() || {};
|
||||||
|
|
||||||
|
|
||||||
my $qb_fw_vlan = {};
|
my $qb_fw_vlan = {};
|
||||||
foreach my $idx ( keys %$qb_fw_port ) {
|
foreach my $idx ( keys %$qb_fw_port ) {
|
||||||
my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
|
my ( $fdb_id, $mac ) = _qb_fdbtable_index($idx);
|
||||||
$qb_fw_vlan->{$idx} = $fdb_id;
|
# Many devices do not populate the dot1qVlanCurrentTable, so default
|
||||||
|
# to FDB ID = VID, but if we have a mapping use it.
|
||||||
|
my $vlan = $fdb_id;
|
||||||
|
# defined as test since some devices have a vlan 0
|
||||||
|
if (defined $qb_fdb_ids->{$fdb_id}) {
|
||||||
|
$vlan = $qb_fdb_ids->{$fdb_id};
|
||||||
|
}
|
||||||
|
$qb_fw_vlan->{$idx} = $vlan;
|
||||||
}
|
}
|
||||||
return $qb_fw_vlan;
|
return $qb_fw_vlan;
|
||||||
}
|
}
|
||||||
@@ -189,6 +213,25 @@ sub qb_i_vlan_t {
|
|||||||
return $i_vlan;
|
return $i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub qb_fdb_index {
|
||||||
|
my $bridge = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
# Some devices may not implement TimeFilter in a standard manner
|
||||||
|
# appearing to loop on this request. Override in the device class,
|
||||||
|
# see Enterasys for example.
|
||||||
|
my $qb_fdb_ids = $bridge->dot1qVlanFdbId() || {};
|
||||||
|
|
||||||
|
# Strip the TimeFilter
|
||||||
|
my $vl_fdb_index = {};
|
||||||
|
for my $orig (keys(%$qb_fdb_ids)) {
|
||||||
|
(my $new = $orig) =~ s/^\d+\.//;
|
||||||
|
$vl_fdb_index->{$new} = $qb_fdb_ids->{$orig};
|
||||||
|
}
|
||||||
|
|
||||||
|
return $vl_fdb_index;
|
||||||
|
}
|
||||||
|
|
||||||
# Most devices now support Q-BRIDGE-MIB, fall back to
|
# Most devices now support Q-BRIDGE-MIB, fall back to
|
||||||
# BRIDGE-MIB for those that don't.
|
# BRIDGE-MIB for those that don't.
|
||||||
sub fw_mac {
|
sub fw_mac {
|
||||||
@@ -343,20 +386,31 @@ sub i_vlan_membership {
|
|||||||
my $bridge = shift;
|
my $bridge = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
|
|
||||||
my $index = $bridge->bp_index();
|
# Use VlanCurrentTable if available since it will include dynamic
|
||||||
|
# VLANs. However, some devices do not populate the table.
|
||||||
|
my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
|
||||||
|
|
||||||
|
return $bridge->_vlan_hoa($v_ports, $partial);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $bridge = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
# Use VlanCurrentTable if available since it will include dynamic
|
# Use VlanCurrentTable if available since it will include dynamic
|
||||||
# VLANs. However, some devices do not populate the table.
|
# VLANs. However, some devices do not populate the table.
|
||||||
|
my $v_ports = $bridge->qb_cv_untagged() || $bridge->qb_v_untagged();
|
||||||
|
|
||||||
# 11/07 - Todo: Issue with some devices trying to query VlanCurrentTable
|
return $bridge->_vlan_hoa($v_ports, $partial);
|
||||||
# as table may grow very large with frequent VLAN changes.
|
}
|
||||||
# 06/08 - VlanCurrentTable may be due to timefilter, should query with
|
|
||||||
# zero partial for no time filter.
|
|
||||||
# my $v_ports = $bridge->qb_cv_egress() || $bridge->qb_v_egress();
|
|
||||||
|
|
||||||
my $v_ports = $bridge->qb_v_egress() || {};
|
sub _vlan_hoa {
|
||||||
|
my $bridge = shift;
|
||||||
|
my ( $v_ports, $partial ) = @_;
|
||||||
|
|
||||||
my $i_vlan_membership = {};
|
my $index = $bridge->bp_index();
|
||||||
|
|
||||||
|
my $vlan_hoa = {};
|
||||||
foreach my $idx ( keys %$v_ports ) {
|
foreach my $idx ( keys %$v_ports ) {
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx};
|
my $portlist = $v_ports->{$idx};
|
||||||
@@ -376,10 +430,10 @@ sub i_vlan_membership {
|
|||||||
my $ifindex = $index->{$port};
|
my $ifindex = $index->{$port};
|
||||||
next unless ( defined($ifindex) ); # shouldn't happen
|
next unless ( defined($ifindex) ); # shouldn't happen
|
||||||
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
||||||
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
|
push( @{ $vlan_hoa->{$ifindex} }, $vlan );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return $i_vlan_membership;
|
return $vlan_hoa;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub set_i_pvid {
|
sub set_i_pvid {
|
||||||
@@ -649,11 +703,21 @@ IDs. These are the VLANs which are members of the egress list for the port.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $bridge->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $bridge->qb_i_vlan_t()
|
=item $bridge->qb_i_vlan_t()
|
||||||
|
|
||||||
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
|
Returns reference to hash: key = C<dot1dBasePort>, value = either 'trunk' for
|
||||||
tagged ports or the VLAN ID.
|
tagged ports or the VLAN ID.
|
||||||
|
|
||||||
|
=item $bridge->qb_fdb_index()
|
||||||
|
|
||||||
|
Returns reference to hash: key = VLAN ID, value = FDB ID.
|
||||||
|
|
||||||
=item $bridge->v_index()
|
=item $bridge->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
@@ -707,6 +771,48 @@ to this port.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
=head2 Spanning Tree Instance Globals
|
||||||
|
|
||||||
|
These are not part of a table, but return a hash reference to ease API
|
||||||
|
compatibility with MST and PVST implementations indexed by a spanning tree
|
||||||
|
instance id.
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $bridge->stp_i_time()
|
||||||
|
|
||||||
|
Returns time since last topology change detected. (100ths/second)
|
||||||
|
|
||||||
|
(C<dot1dStpTimeSinceTopologyChange>)
|
||||||
|
|
||||||
|
=item $bridge->stp_i_time()
|
||||||
|
|
||||||
|
Returns the total number of topology changes detected.
|
||||||
|
|
||||||
|
(C<dot1dStpTopChanges>)
|
||||||
|
|
||||||
|
=item $bridge->stp_i_root()
|
||||||
|
|
||||||
|
Returns root of STP.
|
||||||
|
|
||||||
|
(C<dot1dStpDesignatedRoot>)
|
||||||
|
|
||||||
|
=item $bridge->stp_i_root_port()
|
||||||
|
|
||||||
|
Returns the port number of the port that offers the lowest cost path
|
||||||
|
to the root bridge.
|
||||||
|
|
||||||
|
(C<dot1dStpRootPort>)
|
||||||
|
|
||||||
|
=item $bridge->stp_i_priority()
|
||||||
|
|
||||||
|
Returns the port number of the port that offers the lowest cost path
|
||||||
|
to the root bridge.
|
||||||
|
|
||||||
|
(C<dot1dStpPriority>)
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
|
=head2 Spanning Tree Protocol Table (C<dot1dStpPortTable>)
|
||||||
|
|
||||||
Descriptions are straight from F<BRIDGE-MIB.my>
|
Descriptions are straight from F<BRIDGE-MIB.my>
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info;
|
|||||||
use vars
|
use vars
|
||||||
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
qw/$VERSION $DEBUG %FUNCS %GLOBALS %MIBS %MUNGE $INIT %CDP_CAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# Five data structures required by SNMP::Info
|
# Five data structures required by SNMP::Info
|
||||||
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
%MIBS = ( 'CISCO-CDP-MIB' => 'cdpGlobalRun' );
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::IEEE802dot3ad::MIBS,
|
%SNMP::Info::IEEE802dot3ad::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
'CISCO-CONFIG-COPY-MIB' => 'ccCopyTable',
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PAECAPABILITIES/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
'CISCO-PORT-SECURITY-MIB' => 'ciscoPortSecurityMIB',
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
%MIBS = ( 'CISCO-POWER-ETHERNET-EXT-MIB' => 'cpeExtPsePortEntPhyIndex',
|
||||||
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
'CISCO-CDP-MIB' => 'cdpCachePowerConsumption' );
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
%MIBS = ( 'CISCO-CLASS-BASED-QOS-MIB' => 'cbQosIfIndex', );
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
%MIBS = ( 'CISCO-RTTMON-MIB' => 'rttMonCtrlAdminOwner', );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
%MIBS = ( 'CISCO-STACK-MIB' => 'ciscoStackMIB', );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'SNMPv2-MIB' => 'sysDescr',
|
'SNMPv2-MIB' => 'sysDescr',
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
use vars qw/$VERSION $DEBUG %MIBS %FUNCS %GLOBALS %MUNGE %PORTSTAT $INIT/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
|
@SNMP::Info::CiscoStpExtensions::ISA = qw/SNMP::Info::Bridge SNMP::Info Exporter/;
|
||||||
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
|
@SNMP::Info::CiscoStpExtensions::EXPORT_OK = qw//;
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'CISCO-VTP-MIB' => 'vtpVlanName',
|
'CISCO-VTP-MIB' => 'vtpVlanName',
|
||||||
@@ -149,6 +149,7 @@ sub i_vlan {
|
|||||||
|
|
||||||
my $port_vlan = $vtp->vtp_trunk_native($partial) || {};
|
my $port_vlan = $vtp->vtp_trunk_native($partial) || {};
|
||||||
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
||||||
|
my $trunk_dyn = $vtp->vtp_trunk_dyn($partial) || {};
|
||||||
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
||||||
|
|
||||||
my %i_vlans;
|
my %i_vlans;
|
||||||
@@ -165,8 +166,17 @@ sub i_vlan {
|
|||||||
foreach my $port ( keys %$port_vlan ) {
|
foreach my $port ( keys %$port_vlan ) {
|
||||||
my $vlan = $port_vlan->{$port};
|
my $vlan = $port_vlan->{$port};
|
||||||
next unless defined $vlan;
|
next unless defined $vlan;
|
||||||
|
|
||||||
|
# ports up and trunking should have a trunking status
|
||||||
my $stat = $trunk_dyn_stat->{$port};
|
my $stat = $trunk_dyn_stat->{$port};
|
||||||
if ( defined $stat and $stat =~ /^trunking/ ) {
|
|
||||||
|
# vtp_trunk_dyn_stat is not useful for down ports
|
||||||
|
# so we use vtp_trunk_dyn to see if trunking is set
|
||||||
|
my $dyn = $trunk_dyn->{$port};
|
||||||
|
|
||||||
|
if (($stat and $stat =~ /^trunking/ )
|
||||||
|
or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate'))))
|
||||||
|
{
|
||||||
$i_vlans{$port} = $vlan;
|
$i_vlans{$port} = $vlan;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -217,6 +227,7 @@ sub i_vlan_membership {
|
|||||||
my $vtp_vlans = $vtp->v_state();
|
my $vtp_vlans = $vtp->v_state();
|
||||||
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
my $i_vlan = $vtp->i_vlan2($partial) || {};
|
||||||
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
my $trunk_dyn_stat = $vtp->vtp_trunk_dyn_stat($partial) || {};
|
||||||
|
my $trunk_dyn = $vtp->vtp_trunk_dyn($partial) || {};
|
||||||
|
|
||||||
my $i_vlan_membership = {};
|
my $i_vlan_membership = {};
|
||||||
|
|
||||||
@@ -248,7 +259,9 @@ sub i_vlan_membership {
|
|||||||
|
|
||||||
foreach my $port ( keys %$ports_vlans ) {
|
foreach my $port ( keys %$ports_vlans ) {
|
||||||
my $stat = $trunk_dyn_stat->{$port};
|
my $stat = $trunk_dyn_stat->{$port};
|
||||||
if ( defined $stat and $stat =~ /^trunking/ ) {
|
my $dyn = $trunk_dyn->{$port};
|
||||||
|
if (($stat and $stat =~ /^trunking/ )
|
||||||
|
or ($dyn and (($dyn eq 'on') or ($dyn eq 'onNoNegotiate')))) {
|
||||||
my $k = 0;
|
my $k = 0;
|
||||||
my $list1 = $ports_vlans->{$port} || '0';
|
my $list1 = $ports_vlans->{$port} || '0';
|
||||||
my $list2 = $ports_vlans_2k->{$port} || '0';
|
my $list2 = $ports_vlans_2k->{$port} || '0';
|
||||||
@@ -270,6 +283,20 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $vtp = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $vlans = $vtp->i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
sub set_i_pvid {
|
sub set_i_pvid {
|
||||||
my $vtp = shift;
|
my $vtp = shift;
|
||||||
my ( $vlan_id, $ifindex ) = @_;
|
my ( $vlan_id, $ifindex ) = @_;
|
||||||
@@ -590,6 +617,12 @@ IDs. These are the VLANs which are members of enabled VLAN list for the port.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $vtp->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
|
=head2 VLAN Table (C<CISCO-VTP-MIB::vtpVlanTable>)
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
'EXTREME-EDP-MIB' => 'extremeEdpPortIfIndex',
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
%MIBS = ( 'ENTITY-MIB' => 'entPhysicalSerialNum' );
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
%MIBS = ( 'EtherLike-MIB' => 'etherMIB' );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
%MIBS = ( 'FOUNDRY-SN-SWITCH-GROUP-MIB' => 'snFdpGlobalRun' );
|
||||||
|
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use Exporter;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
%MIBS = ( 'IEEE802dot11-MIB' => 'dot11DesiredSSID', );
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Aggregate::MIBS,
|
%SNMP::Info::Aggregate::MIBS,
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use constant {
|
|||||||
IPV6MIB => 3,
|
IPV6MIB => 3,
|
||||||
};
|
};
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
'LLDP-MIB' => 'lldpLocSysCapEnabled',
|
||||||
@@ -316,7 +316,7 @@ sub _lldp_addr_index {
|
|||||||
my @oids = split( /\./, $idx );
|
my @oids = split( /\./, $idx );
|
||||||
my $index = join( '.', splice( @oids, 0, 3 ) );
|
my $index = join( '.', splice( @oids, 0, 3 ) );
|
||||||
my $proto = shift(@oids);
|
my $proto = shift(@oids);
|
||||||
my $length = shift(@oids) if scalar @oids > 4;
|
shift(@oids) if scalar @oids > 4; # $length
|
||||||
|
|
||||||
# IPv4
|
# IPv4
|
||||||
if ( $proto == 1 ) {
|
if ( $proto == 1 ) {
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
%MIBS = ( %SNMP::Info::MIBS, 'SNMP-REPEATER-MIB' => 'rptrPortGroupIndex' );
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, 'root_ip' => 'actualIPAddr', );
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
%GLOBALS = ( %SNMP::Info::Layer1::GLOBALS, );
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer1::MIBS,
|
%SNMP::Info::Layer1::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ use SNMP::Info::PowerEthernet;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
@@ -133,23 +133,6 @@ sub serial {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub i_ignore {
|
|
||||||
my $l2 = shift;
|
|
||||||
my $partial = shift;
|
|
||||||
|
|
||||||
my $i_type = $l2->i_type($partial) || {};
|
|
||||||
|
|
||||||
my %i_ignore = ();
|
|
||||||
|
|
||||||
foreach my $if ( keys %$i_type ) {
|
|
||||||
my $type = $i_type->{$if};
|
|
||||||
$i_ignore{$if}++
|
|
||||||
if $type =~ /(loopback|other|cpu)/i;
|
|
||||||
}
|
|
||||||
|
|
||||||
return \%i_ignore;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub interfaces {
|
sub interfaces {
|
||||||
my $l2 = shift;
|
my $l2 = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -304,12 +287,6 @@ name.
|
|||||||
|
|
||||||
Defaults to C<ifDescr> but checks and overrides with C<ifName>
|
Defaults to C<ifDescr> but checks and overrides with C<ifName>
|
||||||
|
|
||||||
=item $l2->i_ignore()
|
|
||||||
|
|
||||||
Returns reference to hash. Increments value of IID if port is to be ignored.
|
|
||||||
|
|
||||||
Ignores ports with C<ifType> of loopback, propvirtual, other, and cpu
|
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info
|
=head2 Table Methods imported from SNMP::Info
|
||||||
|
|||||||
@@ -11,11 +11,12 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::LLDP::MIBS,
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
'A3Com-products-MIB' => 'wlanAP7760',
|
||||||
);
|
);
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
@@ -117,6 +118,8 @@ Subclass for 3Com L2 devices
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
=item F<A3Com-products-MIB>
|
||||||
|
|
||||||
=item Inherited Classes' MIBs
|
=item Inherited Classes' MIBs
|
||||||
|
|
||||||
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
|
See L<SNMP::Info::Layer2/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ use SNMP::Info::IEEE802dot11;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::IEEE802dot11::GLOBALS,
|
%SNMP::Info::IEEE802dot11::GLOBALS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer1;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
|
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::LLDP::MIBS,
|
||||||
@@ -341,6 +341,60 @@ sub peth_port_ifindex {
|
|||||||
return \%peth_port_ifindex;
|
return \%peth_port_ifindex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Currently only ERS 4800 v5.8+ support the rcBridgeSpbmMacTable
|
||||||
|
# which holds the FDB for a SPBM edge deployment.
|
||||||
|
#
|
||||||
|
# Q-BRIDGE still holds some entries when the rcBridgeSpbmMacTable is in use
|
||||||
|
# so we merge hash entries.
|
||||||
|
|
||||||
|
sub fw_mac {
|
||||||
|
my $rapidcity = shift;
|
||||||
|
|
||||||
|
my $qb = $rapidcity->SUPER::fw_mac() || {};
|
||||||
|
my $spbm = $rapidcity->rc_spbm_fw_mac() || {};
|
||||||
|
my $fw_mac = { %$qb, %$spbm };
|
||||||
|
|
||||||
|
return $fw_mac;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fw_port {
|
||||||
|
my $rapidcity = shift;
|
||||||
|
|
||||||
|
my $qb = $rapidcity->SUPER::fw_port() || {};
|
||||||
|
my $spbm = $rapidcity->rc_spbm_fw_port() || {};
|
||||||
|
my $fw_port = { %$qb, %$spbm };
|
||||||
|
|
||||||
|
return $fw_port;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub fw_status {
|
||||||
|
my $rapidcity = shift;
|
||||||
|
|
||||||
|
my $qb = $rapidcity->SUPER::fw_status() || {};
|
||||||
|
my $spbm = $rapidcity->rc_spbm_fw_status() || {};
|
||||||
|
my $fw_status = { %$qb, %$spbm };
|
||||||
|
|
||||||
|
return $fw_status;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub qb_fw_vlan {
|
||||||
|
my $rapidcity = shift;
|
||||||
|
|
||||||
|
my $qb = $rapidcity->SUPER::qb_fw_vlan() || {};
|
||||||
|
my $spbm = $rapidcity->rc_spbm_fw_vlan() || {};
|
||||||
|
my $qb_fw_vlan = { %$qb, %$spbm };
|
||||||
|
|
||||||
|
return $qb_fw_vlan;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Baystack uses S5-AGENT-MIB (loaded in NortelStack) versus RAPID-CITY
|
||||||
|
sub stp_ver {
|
||||||
|
my $rapidcity = shift;
|
||||||
|
|
||||||
|
return $rapidcity->s5AgSysSpanningTreeOperMode()
|
||||||
|
|| $rapidcity->SUPER::stp_ver();
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
__END__
|
__END__
|
||||||
@@ -444,6 +498,14 @@ Returns 'baystack' or 'boss' depending on software version.
|
|||||||
|
|
||||||
Returns the firmware version extracted from C<sysDescr>.
|
Returns the firmware version extracted from C<sysDescr>.
|
||||||
|
|
||||||
|
=item $baystack->stp_ver()
|
||||||
|
|
||||||
|
Returns the particular STP version running on this device.
|
||||||
|
|
||||||
|
Values: C<nortelStpg>, C<pvst>, C<rstp>, C<mstp>, C<ieee8021d>
|
||||||
|
|
||||||
|
(C<s5AgSysSpanningTreeOperMode>)
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Overrides
|
=head2 Overrides
|
||||||
@@ -600,6 +662,32 @@ ns_e_vendor().
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
|
=head2 Layer 2 Forwarding Database
|
||||||
|
|
||||||
|
These methods try to obtain the layer 2 forwarding database entries via the
|
||||||
|
normal bridge methods as well as SPBM entries via rapid city methods.
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $baystack->fw_mac()
|
||||||
|
|
||||||
|
Returns reference to hash of forwarding table MAC Addresses
|
||||||
|
|
||||||
|
=item $baystack->fw_port()
|
||||||
|
|
||||||
|
Returns reference to hash of forwarding table entries port interface
|
||||||
|
identifier (iid)
|
||||||
|
|
||||||
|
=item $baystack->qb_fw_vlan()
|
||||||
|
|
||||||
|
Returns reference to hash of forwarding table entries VLAN ID
|
||||||
|
|
||||||
|
=item $baystack->fw_status()
|
||||||
|
|
||||||
|
Returns reference to hash of forwarding table entries status
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info::SONMP
|
=head2 Table Methods imported from SNMP::Info::SONMP
|
||||||
|
|
||||||
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
|
See L<SNMP::Info::SONMP/"TABLE METHODS"> for details.
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::GLOBALS,
|
%SNMP::Info::Layer2::GLOBALS,
|
||||||
@@ -261,6 +261,8 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged { return; }
|
||||||
|
|
||||||
sub bp_index {
|
sub bp_index {
|
||||||
my $c1900 = shift;
|
my $c1900 = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -470,6 +472,9 @@ bridge group IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $c1900->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Unsupported, returns nothing.
|
||||||
|
|
||||||
=item $c1900->bp_index()
|
=item $c1900->bp_index()
|
||||||
|
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%GLOBALS = (
|
%GLOBALS = (
|
||||||
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
%SNMP::Info::Layer2::Cisco::GLOBALS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2::Cisco;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::Cisco::MIBS,
|
%SNMP::Info::Layer2::Cisco::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::SONMP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# This will be filled in with the device's index into the EntPhysicalEntry
|
# This will be filled in with the device's index into the EntPhysicalEntry
|
||||||
# table by the serial() function.
|
# table by the serial() function.
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -536,30 +536,6 @@ sub set_i_vlan_tagged {
|
|||||||
|
|
||||||
sub agg_ports { return agg_ports_ifstack(@_) }
|
sub agg_ports { return agg_ports_ifstack(@_) }
|
||||||
|
|
||||||
sub qb_fw_vlan {
|
|
||||||
my $hp = shift;
|
|
||||||
my $partial = shift;
|
|
||||||
my $qb_fw_vlan = $hp->SUPER::qb_fw_vlan($partial);
|
|
||||||
|
|
||||||
my $fdb_to_dot1q = {};
|
|
||||||
my $fdb_id = $hp->dot1qVlanFdbId(0);
|
|
||||||
foreach my $fdb_entry (keys %$fdb_id) {
|
|
||||||
my ($timemark, $vlan_id) = split(/\./, $fdb_entry);
|
|
||||||
$fdb_to_dot1q->{$fdb_id->{$fdb_entry}} = $vlan_id;
|
|
||||||
}
|
|
||||||
foreach my $learn (keys %$qb_fw_vlan) {
|
|
||||||
my $fdb_idx = $qb_fw_vlan->{$learn};
|
|
||||||
if (exists $fdb_to_dot1q->{$fdb_idx}) {
|
|
||||||
$qb_fw_vlan->{$learn} = $fdb_to_dot1q->{$fdb_idx};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return $qb_fw_vlan;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -827,12 +803,6 @@ Power supplied by PoE ports, in milliwatts
|
|||||||
Returns what version of STP the device is running.
|
Returns what version of STP the device is running.
|
||||||
(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
|
(C<hpicfBridgeRstpForceVersion> with fallback to inherited stp_ver())
|
||||||
|
|
||||||
=item $hp->qb_fw_vlan()
|
|
||||||
|
|
||||||
Returns reference to hash of forwarding table entries VLAN ID
|
|
||||||
|
|
||||||
(C<dot1qFdbId>), (C<rcBridgeTpFdbVlanId>)
|
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Globals imported from SNMP::Info::Layer2
|
=head2 Globals imported from SNMP::Info::Layer2
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::CDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %PORTSTAT %MODEL_MAP %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -376,6 +376,20 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $hp = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $vlans = $hp->i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
sub set_i_vlan {
|
sub set_i_vlan {
|
||||||
my $hp = shift;
|
my $hp = shift;
|
||||||
my $rv;
|
my $rv;
|
||||||
@@ -680,6 +694,12 @@ It is the union of tagged, untagged, and auto ports.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $hp->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $hp->v_index()
|
=item $hp->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Airespace;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE $AUTOLOAD $INIT $DEBUG/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Bridge::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::IEEE802dot11::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Bridge;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# This will be filled in with the device's index into the EntPhysicalEntry
|
# This will be filled in with the device's index into the EntPhysicalEntry
|
||||||
# table by the serial() function.
|
# table by the serial() function.
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS,
|
%SNMP::Info::Layer2::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer2;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# Set for No CDP
|
# Set for No CDP
|
||||||
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
%GLOBALS = ( %SNMP::Info::Layer2::GLOBALS );
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ use SNMP::Info::AdslLine;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -185,23 +185,6 @@ sub root_ip {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub i_ignore {
|
|
||||||
my $l3 = shift;
|
|
||||||
my $partial = shift;
|
|
||||||
|
|
||||||
my $interfaces = $l3->interfaces($partial) || {};
|
|
||||||
|
|
||||||
my %i_ignore;
|
|
||||||
foreach my $if ( keys %$interfaces ) {
|
|
||||||
|
|
||||||
# lo -> cisco aironet 350 loopback
|
|
||||||
if ( $interfaces->{$if} =~ /(tunnel|loopback|\blo\b|null)/i ) {
|
|
||||||
$i_ignore{$if}++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return \%i_ignore;
|
|
||||||
}
|
|
||||||
|
|
||||||
sub serial {
|
sub serial {
|
||||||
my $l3 = shift;
|
my $l3 = shift;
|
||||||
|
|
||||||
@@ -544,12 +527,6 @@ name.
|
|||||||
|
|
||||||
Only returns those iids that have a description listed in $l3->i_description()
|
Only returns those iids that have a description listed in $l3->i_description()
|
||||||
|
|
||||||
=item $l3->i_ignore()
|
|
||||||
|
|
||||||
Returns reference to hash. Creates a key for each IID that should be ignored.
|
|
||||||
|
|
||||||
Currently looks for tunnel,loopback,lo,null from $l3->interfaces()
|
|
||||||
|
|
||||||
=item $l3->i_name()
|
=item $l3->i_name()
|
||||||
|
|
||||||
Returns reference to hash of iid to human set name.
|
Returns reference to hash of iid to human set name.
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
use vars qw/$VERSION %MIBS %FUNCS %GLOBALS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -385,6 +385,20 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $alteon = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $vlans = $alteon->i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
|
# Bridge MIB does not map Bridge Port to ifIndex correctly on some code
|
||||||
# versions
|
# versions
|
||||||
sub bp_index {
|
sub bp_index {
|
||||||
@@ -574,6 +588,12 @@ IDs. These are the VLANs which are members of the egress list for the port.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $alteon->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $alteon->v_index()
|
=item $alteon->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::Layer3;
|
|||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE
|
||||||
$int_include_vpn $fake_idx $type_class/;
|
$int_include_vpn $fake_idx $type_class/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ use SNMP::Info::Aggregate;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -124,6 +124,8 @@ $VERSION = '3.20';
|
|||||||
'aruba_ap_model' => 'wlanAPModelName',
|
'aruba_ap_model' => 'wlanAPModelName',
|
||||||
'aruba_ap_name' => 'wlanAPName',
|
'aruba_ap_name' => 'wlanAPName',
|
||||||
'aruba_ap_ip' => 'wlanAPIpAddress',
|
'aruba_ap_ip' => 'wlanAPIpAddress',
|
||||||
|
'aruba_ap_hw_ver' => 'wlanAPHwVersion',
|
||||||
|
'aruba_ap_sw_ver' => 'wlanAPSwVersion',
|
||||||
|
|
||||||
# WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
|
# WLSX-WLAN-MIB::wlsxWlanESSIDVlanPoolTable
|
||||||
'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
|
'aruba_ssid_vlan' => 'wlanESSIDVlanPoolStatus',
|
||||||
@@ -484,6 +486,7 @@ sub i_vlan {
|
|||||||
return $aruba->SUPER::i_vlan($partial)
|
return $aruba->SUPER::i_vlan($partial)
|
||||||
if keys %{ $aruba->SUPER::i_vlan($partial) };
|
if keys %{ $aruba->SUPER::i_vlan($partial) };
|
||||||
|
|
||||||
|
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
|
||||||
my $index = $aruba->aruba_if_idx();
|
my $index = $aruba->aruba_if_idx();
|
||||||
|
|
||||||
if ($partial) {
|
if ($partial) {
|
||||||
@@ -512,6 +515,7 @@ sub i_vlan_membership {
|
|||||||
return $aruba->SUPER::i_vlan_membership($partial)
|
return $aruba->SUPER::i_vlan_membership($partial)
|
||||||
if keys %{ $aruba->SUPER::i_vlan_membership($partial) };
|
if keys %{ $aruba->SUPER::i_vlan_membership($partial) };
|
||||||
|
|
||||||
|
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
|
||||||
my $essid_ssid = $aruba->aruba_ap_bssid_ssid();
|
my $essid_ssid = $aruba->aruba_ap_bssid_ssid();
|
||||||
my $ssid_vlans = $aruba->aruba_ssid_vlan();
|
my $ssid_vlans = $aruba->aruba_ssid_vlan();
|
||||||
my $if_vlans = $aruba->aruba_if_vlan_member();
|
my $if_vlans = $aruba->aruba_if_vlan_member();
|
||||||
@@ -555,6 +559,32 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $aruba = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
return $aruba->SUPER::i_vlan_membership_untagged($partial)
|
||||||
|
if keys %{ $aruba->SUPER::i_vlan_membership_untagged($partial) };
|
||||||
|
|
||||||
|
# If we don't have Q-BRIDGE-MIB, we're a wireless controller
|
||||||
|
# It is unclear if native VLAN is transmitted untagged
|
||||||
|
# This assumes Cisco-like behavior on trunks that native VLAN is
|
||||||
|
# transmitted untagged, if this needs to be changed we will need to
|
||||||
|
# consider ifExtMode rather than just using i_vlan
|
||||||
|
my $if_membership = $aruba->i_vlan_membership();
|
||||||
|
my $if_ = $aruba->i_vlan();
|
||||||
|
my $if_mode = $aruba->aruba_if_mode();
|
||||||
|
|
||||||
|
my $vlans = $aruba->i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
sub i_80211channel {
|
sub i_80211channel {
|
||||||
my $aruba = shift;
|
my $aruba = shift;
|
||||||
my $partial = shift;
|
my $partial = shift;
|
||||||
@@ -997,6 +1027,7 @@ sub e_hwver {
|
|||||||
|
|
||||||
my $ap_hw = $aruba->aruba_card_hw() || {};
|
my $ap_hw = $aruba->aruba_card_hw() || {};
|
||||||
my $ap_fpga = $aruba->aruba_card_fpga() || {};
|
my $ap_fpga = $aruba->aruba_card_fpga() || {};
|
||||||
|
my $ap_hw_ver = $aruba->aruba_ap_hw_ver() || {};
|
||||||
|
|
||||||
my %e_hwver;
|
my %e_hwver;
|
||||||
|
|
||||||
@@ -1008,9 +1039,36 @@ sub e_hwver {
|
|||||||
|
|
||||||
$e_hwver{$iid} = "$hw $fpga";
|
$e_hwver{$iid} = "$hw $fpga";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# APs
|
||||||
|
foreach my $idx ( keys %$ap_hw_ver ) {
|
||||||
|
my $hw_ver = $ap_hw_ver->{$idx};
|
||||||
|
next unless defined $hw_ver;
|
||||||
|
|
||||||
|
$e_hwver{$idx} = "$hw_ver";
|
||||||
|
}
|
||||||
|
|
||||||
return \%e_hwver;
|
return \%e_hwver;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub e_swver {
|
||||||
|
my $aruba = shift;
|
||||||
|
|
||||||
|
my $ap_sw_ver = $aruba->aruba_ap_hw_ver() || {};
|
||||||
|
|
||||||
|
my %e_swver;
|
||||||
|
|
||||||
|
# APs
|
||||||
|
foreach my $idx ( keys %$ap_sw_ver ) {
|
||||||
|
my $sw_ver = $ap_sw_ver->{$idx};
|
||||||
|
next unless defined $sw_ver;
|
||||||
|
|
||||||
|
$e_swver{$idx} = "$sw_ver";
|
||||||
|
}
|
||||||
|
|
||||||
|
return \%e_swver;
|
||||||
|
}
|
||||||
|
|
||||||
sub e_vendor {
|
sub e_vendor {
|
||||||
my $aruba = shift;
|
my $aruba = shift;
|
||||||
|
|
||||||
@@ -1586,6 +1644,12 @@ Returns reference to map of IIDs to VLAN ID of the interface.
|
|||||||
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
IDs. These are the VLANs for which the port is a member.
|
IDs. These are the VLANs for which the port is a member.
|
||||||
|
|
||||||
|
=item $aruba->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $aruba->bp_index()
|
=item $aruba->bp_index()
|
||||||
|
|
||||||
Augments the bridge MIB by returning reference to a hash containing the
|
Augments the bridge MIB by returning reference to a hash containing the
|
||||||
@@ -1648,6 +1712,10 @@ Returns reference to hash. Key: IID, Value: Type of component.
|
|||||||
|
|
||||||
Returns reference to hash. Key: IID, Value: Hardware revision.
|
Returns reference to hash. Key: IID, Value: Hardware revision.
|
||||||
|
|
||||||
|
=item $aruba->e_swver()
|
||||||
|
|
||||||
|
Returns reference to hash. Key: IID, Value: Software revision.
|
||||||
|
|
||||||
=item $aruba->e_vendor()
|
=item $aruba->e_vendor()
|
||||||
|
|
||||||
Returns reference to hash. Key: IID, Value: aruba.
|
Returns reference to hash. Key: IID, Value: aruba.
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Bridge;
|
|||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE %MODEL_MAP
|
||||||
%MODID_MAP %PROCID_MAP/;
|
%MODID_MAP %PROCID_MAP/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS,
|
%SNMP::Info::MIBS,
|
||||||
@@ -732,6 +732,8 @@ sub i_vlan {
|
|||||||
return \%i_vlan;
|
return \%i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_pvid { goto &i_vlan }
|
||||||
|
|
||||||
sub root_ip {
|
sub root_ip {
|
||||||
my $bayrs = shift;
|
my $bayrs = shift;
|
||||||
|
|
||||||
@@ -1549,6 +1551,10 @@ interfaces.
|
|||||||
|
|
||||||
Returns reference to hash. Maps port VLAN ID to IIDs.
|
Returns reference to hash. Maps port VLAN ID to IIDs.
|
||||||
|
|
||||||
|
=item $bayrs->i_pvid()
|
||||||
|
|
||||||
|
Returns reference to hash. Maps port VLAN ID to IIDs.
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Pseudo F<ENTITY-MIB> information
|
=head2 Pseudo F<ENTITY-MIB> information
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
@SNMP::Info::Layer3::C3550::EXPORT_OK = qw//;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::MAU;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MAU::MIBS,
|
%SNMP::Info::MAU::MIBS,
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -55,7 +55,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, %SNMP::Info::CiscoStats::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::Cisco::MIBS,
|
%SNMP::Info::Layer3::Cisco::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::Entity;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
%SNMP::Info::MIBS, %SNMP::Info::Layer3::MIBS, %SNMP::Info::Entity::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -213,6 +213,10 @@ sub _vendor {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# dot1qTpFdbTable uses dot1qVlanIndex rather than dot1qFdbId as index,
|
||||||
|
# so pretend we don't have the mapping
|
||||||
|
sub qb_fdb_index {return}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -387,6 +391,10 @@ sometimes not unique.
|
|||||||
Returns reference to hash of iid to current link administrative duplex
|
Returns reference to hash of iid to current link administrative duplex
|
||||||
setting.
|
setting.
|
||||||
|
|
||||||
|
=item $dell->qb_fdb_index()
|
||||||
|
|
||||||
|
Returns nothing to work around incorrect indexing of C<dot1qTpFdbTable>
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Table Methods imported from SNMP::Info::Layer3
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %FUNCS $INIT %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::CDP::MIBS,
|
||||||
@@ -149,11 +149,47 @@ sub i_duplex_admin {
|
|||||||
return $enterasys->mau_i_duplex_admin($partial);
|
return $enterasys->mau_i_duplex_admin($partial);
|
||||||
}
|
}
|
||||||
|
|
||||||
# LLDP table timefilter implementation continuously increments when walked
|
# TimeFilter implementation continuously increments when walked
|
||||||
# and we may never reach the end of the table. This behavior can be
|
# and we may never reach the end of the table. This behavior can be
|
||||||
# modified with the "set snmp timefilter break disable" command,
|
# modified with the "set snmp timefilter break disable" command,
|
||||||
# unfortunately it is not the default. Query with a partial value of zero
|
# unfortunately it is not the default. Query with a partial value of zero
|
||||||
# which means no time filter.
|
# which means no time filter for tables with and index containing a
|
||||||
|
# TimeFilter
|
||||||
|
|
||||||
|
sub qb_fdb_index {
|
||||||
|
my $bridge = shift;
|
||||||
|
|
||||||
|
my $qb_fdb_ids = $bridge->dot1qVlanFdbId(0) || {};
|
||||||
|
|
||||||
|
# Strip the TimeFilter
|
||||||
|
my $vl_fdb_index = {};
|
||||||
|
for my $orig (keys(%$qb_fdb_ids)) {
|
||||||
|
(my $new = $orig) =~ s/^\d+\.//;
|
||||||
|
$vl_fdb_index->{$new} = $qb_fdb_ids->{$orig};
|
||||||
|
}
|
||||||
|
|
||||||
|
return $vl_fdb_index;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership {
|
||||||
|
my $bridge = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
# dot1qVlanCurrentTable TimeFilter index
|
||||||
|
my $v_ports = $bridge->qb_cv_egress(0) || $bridge->qb_v_egress();
|
||||||
|
|
||||||
|
return $bridge->_vlan_hoa($v_ports, $partial);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $bridge = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
# dot1qVlanCurrentTable TimeFilter index
|
||||||
|
my $v_ports = $bridge->qb_cv_untagged(0) || $bridge->qb_v_untagged();
|
||||||
|
|
||||||
|
return $bridge->_vlan_hoa($v_ports, $partial);
|
||||||
|
}
|
||||||
|
|
||||||
sub lldp_ip {
|
sub lldp_ip {
|
||||||
my $enterasys = shift;
|
my $enterasys = shift;
|
||||||
@@ -359,9 +395,9 @@ L<SNMP::Info::MAU/"TABLE METHODS">.
|
|||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Link Layer Discovery Protocol (LLDP) Overrides
|
=head2 Time Filter Table Index Overrides
|
||||||
|
|
||||||
The LLDP table time filter implementation continuously increments when
|
The time filter C<TimeFilter> implementation continuously increments when
|
||||||
walked and we may never reach the end of the table. This behavior can be
|
walked and we may never reach the end of the table. This behavior can be
|
||||||
modified with the C<"set snmp timefilter break disable"> command,
|
modified with the C<"set snmp timefilter break disable"> command,
|
||||||
unfortunately it is not the default. These methods are overridden to
|
unfortunately it is not the default. These methods are overridden to
|
||||||
@@ -369,6 +405,12 @@ supply a partial value of zero which means no time filter.
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
=item $enterasys->qb_fdb_index()
|
||||||
|
|
||||||
|
=item $enterasys->i_vlan_membership()
|
||||||
|
|
||||||
|
=item $enterasys->i_vlan_membership_untagged()
|
||||||
|
|
||||||
=item $enterasys->lldp_if()
|
=item $enterasys->lldp_if()
|
||||||
|
|
||||||
=item $enterasys->lldp_ip()
|
=item $enterasys->lldp_ip()
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ use SNMP::Info::EDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -542,6 +542,78 @@ sub _extremeware_i_vlan_membership {
|
|||||||
return \%i_vlan_membership;
|
return \%i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $extreme = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
# Some devices support Q-Bridge, if so short circuit and return it
|
||||||
|
my $q_bridge = $extreme->SUPER::i_vlan_membership_untagged($partial);
|
||||||
|
return $q_bridge if (ref {} eq ref $q_bridge and scalar keys %$q_bridge);
|
||||||
|
|
||||||
|
# Next we try extremeVlanOpaqueTable
|
||||||
|
my $xos = $extreme->_xos_i_vlan_membership_untagged($partial);
|
||||||
|
return $xos if (ref {} eq ref $xos and scalar keys %$xos);
|
||||||
|
|
||||||
|
# Try older ifStack method
|
||||||
|
my $extremeware = $extreme->_extremeware_i_vlan_membership_untagged($partial);
|
||||||
|
return $extremeware if (ref {} eq ref $extremeware and scalar keys %$extremeware);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub _xos_i_vlan_membership_untagged {
|
||||||
|
my $extreme = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $index = $extreme->i_index();
|
||||||
|
my $vlans = $extreme->ex_vlan_id();
|
||||||
|
my $slotx = $extreme->_slot_factor() || 1000;
|
||||||
|
my $u_ports = $extreme->ex_vlan_untagged() || {};
|
||||||
|
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $idx ( keys %$u_ports ) {
|
||||||
|
next unless ( defined $u_ports->{$idx} );
|
||||||
|
my $u_portlist = $u_ports->{$idx};
|
||||||
|
my $ret = [];
|
||||||
|
|
||||||
|
my ( $vlan_if, $slot ) = $idx =~ /^(\d+)\.(\d+)/;
|
||||||
|
my $vlan = $vlans->{$vlan_if} || '';
|
||||||
|
|
||||||
|
foreach my $portlist ( $u_portlist ) {
|
||||||
|
|
||||||
|
# Convert portlist bit array to bp_index array
|
||||||
|
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
||||||
|
push( @{$ret}, ( $slotx * $slot + $i + 1 ) )
|
||||||
|
if ( @$portlist[$i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#Create HoA ifIndex -> VLAN array
|
||||||
|
foreach my $port ( @{$ret} ) {
|
||||||
|
my $ifindex = $index->{$port};
|
||||||
|
next unless ( defined($ifindex) ); # shouldn't happen
|
||||||
|
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
||||||
|
push( @{ $i_vlan_membership->{$ifindex} }, $vlan );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
|
# Assuming Cisco-like trunk behavior that native VLAN is transmitted untagged
|
||||||
|
sub _extremeware_i_vlan_membership_untagged {
|
||||||
|
my $extreme = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $vlans = $extreme->_extremeware_i_vlan($partial);
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $port (keys %$vlans) {
|
||||||
|
my $vlan = $vlans->{$port};
|
||||||
|
push( @{ $i_vlan_membership->{$port} }, $vlan );
|
||||||
|
}
|
||||||
|
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
# VLAN management.
|
# VLAN management.
|
||||||
# See extreme-vlan.mib for a detailed description of
|
# See extreme-vlan.mib for a detailed description of
|
||||||
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
|
# Extreme's use of ifStackTable and EXTREME-VLAN-MIB.
|
||||||
@@ -927,6 +999,12 @@ IDs. These are the VLANs which are members of the egress list for the port.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $extreme->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $extreme->v_index()
|
=item $extreme->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -255,6 +255,37 @@ sub i_vlan_membership {
|
|||||||
return $i_vlan_membership;
|
return $i_vlan_membership;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_vlan_membership_untagged {
|
||||||
|
my $f5 = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $index = $f5->i_index($partial) || {};
|
||||||
|
my $tagged = $f5->sys_vm_tagged() || {};
|
||||||
|
my $vlans = $f5->v_index() || {};
|
||||||
|
|
||||||
|
my $i_vlan_membership = {};
|
||||||
|
foreach my $iid ( keys %$tagged ) {
|
||||||
|
|
||||||
|
next unless $tagged->{$iid} eq 'false';
|
||||||
|
# IID is length.vlan name index.length.interface index
|
||||||
|
# Split out and use as the IID to get the VLAN ID and ifIndex
|
||||||
|
my @iid_array = split /\./, $iid;
|
||||||
|
my $len = $iid_array[0];
|
||||||
|
my $v_idx = join '.', ( splice @iid_array, 0, $len + 1 );
|
||||||
|
my $idx = join '.', @iid_array;
|
||||||
|
|
||||||
|
# Check to make sure we can map to a port
|
||||||
|
my $p_idx = $index->{$idx};
|
||||||
|
next unless $p_idx;
|
||||||
|
|
||||||
|
my $vlan = $vlans->{$v_idx};
|
||||||
|
next unless $vlan;
|
||||||
|
|
||||||
|
push( @{ $i_vlan_membership->{$idx} }, $vlan );
|
||||||
|
}
|
||||||
|
return $i_vlan_membership;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -391,6 +422,12 @@ IDs.
|
|||||||
print "Port: $port VLAN: $vlan\n";
|
print "Port: $port VLAN: $vlan\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
=item $f5->i_vlan_membership_untagged()
|
||||||
|
|
||||||
|
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
||||||
|
IDs. These are the VLANs which are members of the untagged egress list for
|
||||||
|
the port.
|
||||||
|
|
||||||
=item $f5->v_index()
|
=item $f5->v_index()
|
||||||
|
|
||||||
Returns VLAN IDs
|
Returns VLAN IDs
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -121,29 +121,25 @@ sub i_vlan {
|
|||||||
return $i_vlan;
|
return $i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub i_vlan_membership {
|
# Apparently index doesn't use VLAN ID, so override the HOA private
|
||||||
|
# method here to correct the mapping
|
||||||
|
sub _vlan_hoa {
|
||||||
my $force10 = shift;
|
my $force10 = shift;
|
||||||
my $partial = shift;
|
my ( $v_ports, $partial ) = @_;
|
||||||
|
|
||||||
my $index = $force10->bp_index();
|
my $index = $force10->bp_index();
|
||||||
my $v_index = $force10->v_index();
|
my $v_index = $force10->v_index();
|
||||||
|
|
||||||
my $v_ports = $force10->qb_v_egress();
|
my $vlan_hoa = {};
|
||||||
|
|
||||||
# If given a partial it will be an ifIndex, we need to use dot1dBasePort
|
|
||||||
if ($partial) {
|
|
||||||
my %r_index = reverse %$index;
|
|
||||||
$partial = $r_index{$partial};
|
|
||||||
}
|
|
||||||
|
|
||||||
my $i_vlan_membership = {};
|
|
||||||
|
|
||||||
foreach my $idx ( sort keys %{$v_ports} ) {
|
foreach my $idx ( sort keys %{$v_ports} ) {
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx}; # is an array reference
|
my $portlist = $v_ports->{$idx}; # is an array reference
|
||||||
my $ret = [];
|
my $ret = [];
|
||||||
my $vlan_ndx = $idx;
|
my $vlan_ndx = $idx;
|
||||||
|
|
||||||
|
# Strip TimeFilter if we're using VlanCurrentTable
|
||||||
|
( $vlan_ndx = $idx ) =~ s/^\d+\.//;
|
||||||
|
|
||||||
# Convert portlist bit array to bp_index array
|
# Convert portlist bit array to bp_index array
|
||||||
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
||||||
push( @{$ret}, $i + 1 ) if ( @$portlist[$i] );
|
push( @{$ret}, $i + 1 ) if ( @$portlist[$i] );
|
||||||
@@ -160,11 +156,10 @@ sub i_vlan_membership {
|
|||||||
# the mapping from Q-BRIDGE-MIB::dot1qVlanFdbId
|
# the mapping from Q-BRIDGE-MIB::dot1qVlanFdbId
|
||||||
my $mod = $vlan_tag % 4096;
|
my $mod = $vlan_tag % 4096;
|
||||||
|
|
||||||
push ( @{ $i_vlan_membership->{$ifindex} }, ($mod) );
|
push ( @{ $vlan_hoa->{$ifindex} }, ($mod) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $vlan_hoa;
|
||||||
return $i_vlan_membership;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
@@ -278,12 +273,6 @@ Returns the VLAN names.
|
|||||||
|
|
||||||
Currently not implemented.
|
Currently not implemented.
|
||||||
|
|
||||||
=item $force10->i_vlan_membership()
|
|
||||||
|
|
||||||
Returns reference to hash of arrays:
|
|
||||||
key = C<ifIndex>, value = array of VLAN IDs.
|
|
||||||
These are the VLANs which are members of the egress list for the port.
|
|
||||||
|
|
||||||
=item $force10->i_duplex_admin()
|
=item $force10->i_duplex_admin()
|
||||||
|
|
||||||
Returns info from F<MAU-MIB>
|
Returns info from F<MAU-MIB>
|
||||||
|
|||||||
200
Info/Layer3/Fortinet.pm
Normal file
200
Info/Layer3/Fortinet.pm
Normal file
@@ -0,0 +1,200 @@
|
|||||||
|
# SNMP::Info::Layer3::Fortinet
|
||||||
|
#
|
||||||
|
# Copyright (c) 2014 Eric Miller
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
#
|
||||||
|
# * Redistributions of source code must retain the above copyright notice,
|
||||||
|
# this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# * Neither the name of the University of California, Santa Cruz nor the
|
||||||
|
# names of its contributors may be used to endorse or promote products
|
||||||
|
# derived from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||||
|
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||||
|
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||||
|
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
|
||||||
|
# LIABLE FOR # ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||||
|
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||||
|
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||||
|
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||||
|
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||||
|
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||||
|
# POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
package SNMP::Info::Layer3::Fortinet;
|
||||||
|
|
||||||
|
use strict;
|
||||||
|
use Exporter;
|
||||||
|
use SNMP::Info::Layer3;
|
||||||
|
|
||||||
|
@SNMP::Info::Layer3::Fortinet::ISA
|
||||||
|
= qw/SNMP::Info::Layer3 Exporter/;
|
||||||
|
@SNMP::Info::Layer3::Fortinet::EXPORT_OK = qw//;
|
||||||
|
|
||||||
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
|
%MIBS = (
|
||||||
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
'FORTINET-CORE-MIB' => 'fnSysSerial',
|
||||||
|
'FORTINET-FORTIGATE-MIB' => 'fgVdMaxVdoms',
|
||||||
|
);
|
||||||
|
|
||||||
|
%GLOBALS = (
|
||||||
|
%SNMP::Info::Layer3::GLOBALS,
|
||||||
|
);
|
||||||
|
|
||||||
|
%FUNCS = (
|
||||||
|
%SNMP::Info::Layer3::FUNCS,
|
||||||
|
);
|
||||||
|
|
||||||
|
%MUNGE = (
|
||||||
|
%SNMP::Info::Layer3::MUNGE,
|
||||||
|
);
|
||||||
|
|
||||||
|
sub vendor {
|
||||||
|
return 'fortinet';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub model {
|
||||||
|
my $fortinet = shift;
|
||||||
|
my $id = $fortinet->id() || '';
|
||||||
|
|
||||||
|
my $model = &SNMP::translateObj($id);
|
||||||
|
|
||||||
|
return $id unless defined $model;
|
||||||
|
|
||||||
|
$model =~ s/^f[grsw][tfw]?//i;
|
||||||
|
return $model;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os {
|
||||||
|
return 'fortios';
|
||||||
|
}
|
||||||
|
|
||||||
|
sub os_ver {
|
||||||
|
my $fortinet = shift;
|
||||||
|
|
||||||
|
my $ver = $fortinet->fgSysVersion() || '';
|
||||||
|
|
||||||
|
if ( $ver =~ /(\d+[\.\d]+)/ ) {
|
||||||
|
return $1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return $ver;
|
||||||
|
}
|
||||||
|
|
||||||
|
sub serial {
|
||||||
|
my $fortinet = shift;
|
||||||
|
|
||||||
|
return $fortinet->fnSysSerial();
|
||||||
|
}
|
||||||
|
|
||||||
|
1;
|
||||||
|
__END__
|
||||||
|
|
||||||
|
=head1 NAME
|
||||||
|
|
||||||
|
SNMP::Info::Layer3::Fortinet - SNMP Interface to Fortinet network devices.
|
||||||
|
|
||||||
|
=head1 AUTHOR
|
||||||
|
|
||||||
|
Eric Miller
|
||||||
|
|
||||||
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
|
# Let SNMP::Info determine the correct subclass for you.
|
||||||
|
my $fortinet = new SNMP::Info(
|
||||||
|
AutoSpecify => 1,
|
||||||
|
Debug => 1,
|
||||||
|
DestHost => 'myswitch',
|
||||||
|
Community => 'public',
|
||||||
|
Version => 2
|
||||||
|
)
|
||||||
|
or die "Can't connect to DestHost.\n";
|
||||||
|
|
||||||
|
my $class = $fortinet->class();
|
||||||
|
print "SNMP::Info determined this device to fall under subclass : $class\n";
|
||||||
|
|
||||||
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
|
Abstraction subclass for Fortinet network devices.
|
||||||
|
|
||||||
|
For speed or debugging purposes you can call the subclass directly, but not
|
||||||
|
after determining a more specific class using the method above.
|
||||||
|
|
||||||
|
my $fortinet = new SNMP::Info::Layer3::Fortinet(...);
|
||||||
|
|
||||||
|
=head2 Inherited Classes
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item SNMP::Info::Layer3
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Required MIBs
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item F<FORTINET-CORE-MIB>
|
||||||
|
|
||||||
|
=item F<FORTINET-FORTIGATE-MIB>
|
||||||
|
|
||||||
|
=item Inherited Classes' MIBs
|
||||||
|
|
||||||
|
See L<SNMP::Info::Layer3/"Required MIBs"> for its own MIB requirements.
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head1 GLOBALS
|
||||||
|
|
||||||
|
These are methods that return scalar value from SNMP
|
||||||
|
|
||||||
|
=over
|
||||||
|
|
||||||
|
=item $fortinet->vendor()
|
||||||
|
|
||||||
|
Returns 'fortinet'
|
||||||
|
|
||||||
|
=item $fortinet->model()
|
||||||
|
|
||||||
|
Returns the chassis model.
|
||||||
|
|
||||||
|
=item $fortinet->os()
|
||||||
|
|
||||||
|
Returns 'fortios'
|
||||||
|
|
||||||
|
=item $fortinet->os_ver()
|
||||||
|
|
||||||
|
Returns the software version extracted from (C<systemVersion>).
|
||||||
|
|
||||||
|
=item $fortinet->serial()
|
||||||
|
|
||||||
|
Returns the chassis serial number.
|
||||||
|
|
||||||
|
(C<fnSysSerial>)
|
||||||
|
|
||||||
|
=back
|
||||||
|
|
||||||
|
=head2 Globals imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"GLOBALS"> for details.
|
||||||
|
|
||||||
|
=head1 TABLE METHODS
|
||||||
|
|
||||||
|
These are methods that return tables of information in the form of a reference
|
||||||
|
to a hash.
|
||||||
|
|
||||||
|
=head2 Table Methods imported from SNMP::Info::Layer3
|
||||||
|
|
||||||
|
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.
|
||||||
|
|
||||||
|
=cut
|
||||||
@@ -48,7 +48,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -97,6 +97,24 @@ $VERSION = '3.20';
|
|||||||
# FOUNDRY-SN-AGENT-MIB::snAgentConfigModuleTable
|
# FOUNDRY-SN-AGENT-MIB::snAgentConfigModuleTable
|
||||||
'ag_mod_type' => 'snAgentConfigModuleType',
|
'ag_mod_type' => 'snAgentConfigModuleType',
|
||||||
|
|
||||||
|
# FOUNDRY-SN-AGENT-MIB::snVLanByPortTable
|
||||||
|
'stp_i_id' => 'snVLanByPortVLanId',
|
||||||
|
'stp_i_mac' => 'snVLanByPortBaseBridgeAddress',
|
||||||
|
'stp_i_time' => 'snVLanByPortStpTimeSinceTopologyChange',
|
||||||
|
'stp_i_ntop' => 'snVLanByPortStpTopChanges',
|
||||||
|
'stp_i_root' => 'snVLanByPortStpDesignatedRoot',
|
||||||
|
'stp_i_root_port' => 'snVLanByPortStpRootPort',
|
||||||
|
'stp_i_priority' => 'snVLanByPortStpPriority',
|
||||||
|
|
||||||
|
# FOUNDRY-SN-AGENT-MIB::snPortStpTable
|
||||||
|
'stp_p_id' => 'snPortStpPortNum',
|
||||||
|
'stp_p_stg_id' => 'snPortStpVLanId',
|
||||||
|
'stp_p_priority' => 'snPortStpPortPriority',
|
||||||
|
'stp_p_state' => 'snPortStpPortState',
|
||||||
|
'stp_p_cost' => 'snPortStpPortDesignatedCost',
|
||||||
|
'stp_p_root' => 'snPortStpPortDesignatedRoot',
|
||||||
|
'stp_p_bridge' => 'snPortStpPortDesignatedBridge',
|
||||||
|
'stp_p_port' => 'snPortStpPortDesignatedPort',
|
||||||
);
|
);
|
||||||
|
|
||||||
%MUNGE = (
|
%MUNGE = (
|
||||||
@@ -106,6 +124,11 @@ $VERSION = '3.20';
|
|||||||
|
|
||||||
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
|
'ag_mod2_type' => \&SNMP::Info::munge_e_type,
|
||||||
'ag_mod_type' => \&SNMP::Info::munge_e_type,
|
'ag_mod_type' => \&SNMP::Info::munge_e_type,
|
||||||
|
'stp_i_mac' => \&SNMP::Info::munge_mac,
|
||||||
|
'stp_i_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
|
'stp_p_root' => \&SNMP::Info::munge_prio_mac,
|
||||||
|
'stp_p_bridge' => \&SNMP::Info::munge_prio_mac,
|
||||||
|
'stp_p_port' => \&SNMP::Info::munge_prio_port,
|
||||||
);
|
);
|
||||||
|
|
||||||
sub i_ignore {
|
sub i_ignore {
|
||||||
@@ -277,20 +300,6 @@ sub interfaces {
|
|||||||
return $i_descr;
|
return $i_descr;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Reported hangs on a EdgeIron 24G
|
|
||||||
sub stp_p_state {
|
|
||||||
my $foundry = shift;
|
|
||||||
my $partial = shift;
|
|
||||||
|
|
||||||
my $descr = $foundry->description();
|
|
||||||
if ( $descr =~ m/\bEdgeIron 24G\b/ ) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
return $foundry->SUPER::stp_p_state($partial) || {};
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
# Entity MIB is supported on the Brocade NetIron XMR, NetIron MLX, MLXe,
|
# Entity MIB is supported on the Brocade NetIron XMR, NetIron MLX, MLXe,
|
||||||
# NetIron CES, NetIron CER, and older EdgeIron series devices.
|
# NetIron CES, NetIron CER, and older EdgeIron series devices.
|
||||||
# Try Entity MIB methods first and fall back to Pseudo ENTITY-MIB methods for
|
# Try Entity MIB methods first and fall back to Pseudo ENTITY-MIB methods for
|
||||||
@@ -817,6 +826,26 @@ sub agg_ports {
|
|||||||
return $ret;
|
return $ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub i_stp_state {
|
||||||
|
my $foundry = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
my $bp_index = $foundry->bp_index($partial);
|
||||||
|
my $stp_p_state = $foundry->dot1dStpPortState($partial);
|
||||||
|
|
||||||
|
my %i_stp_state;
|
||||||
|
|
||||||
|
foreach my $index ( keys %$stp_p_state ) {
|
||||||
|
my $state = $stp_p_state->{$index};
|
||||||
|
my $iid = $bp_index->{$index};
|
||||||
|
next unless defined $iid;
|
||||||
|
next unless defined $state;
|
||||||
|
$i_stp_state{$iid} = $state;
|
||||||
|
}
|
||||||
|
|
||||||
|
return \%i_stp_state;
|
||||||
|
}
|
||||||
|
|
||||||
1;
|
1;
|
||||||
__END__
|
__END__
|
||||||
|
|
||||||
@@ -1007,14 +1036,10 @@ Returns reference to hash of interface link duplex status.
|
|||||||
|
|
||||||
Crosses $foundry->sw_duplex() with $foundry->sw_index()
|
Crosses $foundry->sw_duplex() with $foundry->sw_index()
|
||||||
|
|
||||||
=item $foundry->stp_p_state()
|
=item $foundry->i_stp_state()
|
||||||
|
|
||||||
"The port's current state as defined by application of the Spanning Tree
|
Returns the mapping of (C<dot1dStpPortState>) to the interface
|
||||||
Protocol.
|
index (iid).
|
||||||
|
|
||||||
Skipped if device is an EdgeIron 24G due to reports of hangs.
|
|
||||||
|
|
||||||
(C<dot1dStpPortState>)
|
|
||||||
|
|
||||||
=item $foundry->agg_ports()
|
=item $foundry->agg_ports()
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ use SNMP::Info::IEEE802dot3ad 'agg_ports_lag';
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION $DEBUG %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
@@ -163,6 +163,13 @@ sub i_trunk {
|
|||||||
return \%i_trunk;
|
return \%i_trunk;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub qb_fdb_index {
|
||||||
|
my $juniper = shift;
|
||||||
|
my $partial = shift;
|
||||||
|
|
||||||
|
return $juniper->jnxExVlanTag($partial);
|
||||||
|
}
|
||||||
|
|
||||||
# 'v_type' => 'jnxExVlanType',
|
# 'v_type' => 'jnxExVlanType',
|
||||||
sub v_type {
|
sub v_type {
|
||||||
my $juniper = shift;
|
my $juniper = shift;
|
||||||
@@ -214,22 +221,24 @@ sub i_vlan {
|
|||||||
return $i_vlan;
|
return $i_vlan;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub i_vlan_membership {
|
# Index doesn't use VLAN ID, so override the HOA private method here to
|
||||||
|
# correct the mapping
|
||||||
|
sub _vlan_hoa {
|
||||||
my $juniper = shift;
|
my $juniper = shift;
|
||||||
my $partial = shift;
|
my ( $v_ports, $partial ) = @_;
|
||||||
|
|
||||||
my $index = $juniper->bp_index();
|
my $index = $juniper->bp_index();
|
||||||
my ($v_index) = $juniper->jnxExVlanTag($partial);
|
my $v_index = $juniper->jnxExVlanTag($partial);
|
||||||
|
|
||||||
my $v_ports = $juniper->qb_v_egress() || {};
|
my $vlan_hoa = {};
|
||||||
|
foreach my $idx ( keys %$v_ports ) {
|
||||||
my $i_vlan_membership = {};
|
|
||||||
|
|
||||||
foreach my $idx ( sort keys %$v_ports ) {
|
|
||||||
next unless ( defined $v_ports->{$idx} );
|
next unless ( defined $v_ports->{$idx} );
|
||||||
my $portlist = $v_ports->{$idx}; # is an array reference
|
my $portlist = $v_ports->{$idx};
|
||||||
my $ret = [];
|
my $ret = [];
|
||||||
my $vlan_ndx = $idx;
|
my $vlan_ndx;
|
||||||
|
|
||||||
|
# Strip TimeFilter if we're using VlanCurrentTable
|
||||||
|
( $vlan_ndx = $idx ) =~ s/^\d+\.//;
|
||||||
|
|
||||||
# Convert portlist bit array to bp_index array
|
# Convert portlist bit array to bp_index array
|
||||||
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
for ( my $i = 0; $i <= $#$portlist; $i++ ) {
|
||||||
@@ -241,11 +250,10 @@ sub i_vlan_membership {
|
|||||||
my $ifindex = $index->{$port};
|
my $ifindex = $index->{$port};
|
||||||
next unless ( defined($ifindex) ); # shouldn't happen
|
next unless ( defined($ifindex) ); # shouldn't happen
|
||||||
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
next if ( defined $partial and $ifindex !~ /^$partial$/ );
|
||||||
push ( @{ $i_vlan_membership->{$ifindex} }, $v_index->{$vlan_ndx} );
|
push( @{ $vlan_hoa->{$ifindex} }, $v_index->{$vlan_ndx} );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
return $vlan_hoa;
|
||||||
return $i_vlan_membership;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
# Pseudo ENTITY-MIB methods
|
# Pseudo ENTITY-MIB methods
|
||||||
@@ -655,6 +663,10 @@ to a hash.
|
|||||||
|
|
||||||
=over
|
=over
|
||||||
|
|
||||||
|
=item $juniper->qb_fdb_index()
|
||||||
|
|
||||||
|
Returns reference to hash: key = VLAN ID, value = FDB ID.
|
||||||
|
|
||||||
=item $juniper->v_index()
|
=item $juniper->v_index()
|
||||||
|
|
||||||
(C<jnxExVlanTag>)
|
(C<jnxExVlanTag>)
|
||||||
@@ -675,11 +687,6 @@ to a hash.
|
|||||||
|
|
||||||
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
|
Returns a mapping between C<ifIndex> and the PVID or default VLAN.
|
||||||
|
|
||||||
=item $juniper->i_vlan_membership()
|
|
||||||
|
|
||||||
Returns reference to hash of arrays: key = C<ifIndex>, value = array of VLAN
|
|
||||||
IDs. These are the VLANs which are members of the egress list for the port.
|
|
||||||
|
|
||||||
=back
|
=back
|
||||||
|
|
||||||
=head2 Pseudo F<ENTITY-MIB> information
|
=head2 Pseudo F<ENTITY-MIB> information
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::SONMP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ use SNMP::Info::IEEE802dot11;
|
|||||||
|
|
||||||
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
use vars qw/$VERSION %FUNCS %GLOBALS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
# NOTE: Order creates precedence
|
# NOTE: Order creates precedence
|
||||||
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
# Example: v_name exists in Bridge.pm and CiscoVTP.pm
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -43,7 +43,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
|
%SNMP::Info::Layer3::MIBS, %SNMP::Info::RapidCity::MIBS,
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::LLDP;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer2::MIBS, %SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %FUNCS %MIBS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ use SNMP::Info::Layer3;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
%MIBS = ( %SNMP::Info::Layer3::MIBS, );
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ use SNMP::Info::MAU;
|
|||||||
|
|
||||||
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
use vars qw/$VERSION %GLOBALS %MIBS %FUNCS %MUNGE/;
|
||||||
|
|
||||||
$VERSION = '3.20';
|
$VERSION = '3.21_001';
|
||||||
|
|
||||||
%MIBS = (
|
%MIBS = (
|
||||||
%SNMP::Info::Layer3::MIBS,
|
%SNMP::Info::Layer3::MIBS,
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user