Enhanced STP support for L3::Extreme. Document previous STP changes in ChangeLog.

This commit is contained in:
Eric A. Miller
2014-12-04 23:19:06 -05:00
parent e97e8309cb
commit 9e1c462836
2 changed files with 191 additions and 6 deletions

View File

@@ -5,6 +5,7 @@ version 3.23
[ENHANCEMENTS] [ENHANCEMENTS]
* Update MIB used in L1::Asante * Update MIB used in L1::Asante
* Enhanced STP support for L3::Extreme
version 3.22 (2014-12-02) version 3.22 (2014-12-02)
@@ -27,6 +28,9 @@ version 3.22 (2014-12-02)
* New method i_vlan_membership_untagged() for VLANs transmitted as * New method i_vlan_membership_untagged() for VLANs transmitted as
untagged frames. untagged frames.
* Capture Aruba AP hardware and software version when available * Capture Aruba AP hardware and software version when available
* New STP methods to support gathering information from devices running
mutiple STP instances such as PVST and MST
* Enhanced STP support for Avaya and Foundry classes
[BUG FIXES] [BUG FIXES]

View File

@@ -53,11 +53,12 @@ $VERSION = '3.22';
%SNMP::Info::MAU::MIBS, %SNMP::Info::MAU::MIBS,
%SNMP::Info::LLDP::MIBS, %SNMP::Info::LLDP::MIBS,
%SNMP::Info::EDP::MIBS, %SNMP::Info::EDP::MIBS,
'EXTREME-BASE-MIB' => 'extremeAgent', 'EXTREME-BASE-MIB' => 'extremeAgent',
'EXTREME-SYSTEM-MIB' => 'extremeSystem', 'EXTREME-SYSTEM-MIB' => 'extremeSystem',
'EXTREME-FDB-MIB' => 'extremeSystem', 'EXTREME-FDB-MIB' => 'extremeFdbMacFdbMacAddress',
'EXTREME-VLAN-MIB' => 'extremeVlan', 'EXTREME-VLAN-MIB' => 'extremeVlan',
'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable', 'EXTREME-POE-MIB' => 'extremePethSystemAdminEnable',
'EXTREME-STP-EXTENSIONS-MIB' => 'extremeStpDomainBridgeId',
); );
%GLOBALS = ( %GLOBALS = (
@@ -97,6 +98,20 @@ $VERSION = '3.22';
'peth_power_watts' => 'extremePethSlotPowerLimit', 'peth_power_watts' => 'extremePethSlotPowerLimit',
# EXTREME-POE-MIB::extremePethPsePortTable # EXTREME-POE-MIB::extremePethPsePortTable
'peth_port_power' => 'extremePethPortMeasuredPower', 'peth_port_power' => 'extremePethPortMeasuredPower',
# EXTREME-STP-EXTENSIONS-MIB::extremeStpDomainTable
'stp_i_time' => 'extremeStpDomainTimeSinceTopologyChange',
'stp_i_ntop' => 'extremeStpDomainTopChanges',
'stp_i_root' => 'extremeStpDomainDesignatedRoot',
'stp_i_root_port' => 'extremeStpDomainRootPortIfIndex',
'stp_i_priority' => 'extremeStpDomainBridgePriority',
'ex_stp_i_mac' => 'extremeStpDomainBridgeId',
# EXTREME-STP-EXTENSIONS-MIB::extremeStpPortTable
'stp_p_priority' => 'extremeStpPortPortPriority',
'stp_p_state' => 'extremeStpPortPortState',
'stp_p_cost' => 'extremeStpPortPathCost',
'stp_p_root' => 'extremeStpPortDesignatedRoot',
'stp_p_bridge' => 'extremeStpPortDesignatedBridge',
'stp_p_port' => 'extremeStpPortDesignatedPort',
); );
%MUNGE = ( %MUNGE = (
@@ -114,6 +129,11 @@ $VERSION = '3.22';
'fan_state' => \&munge_true_ok, 'fan_state' => \&munge_true_ok,
'ex_vlan_untagged' => \&SNMP::Info::munge_port_list, 'ex_vlan_untagged' => \&SNMP::Info::munge_port_list,
'ex_vlan_tagged' => \&SNMP::Info::munge_port_list, 'ex_vlan_tagged' => \&SNMP::Info::munge_port_list,
'ex_stp_i_mac' => \&SNMP::Info::munge_prio_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,
); );
# Method OverRides # Method OverRides
@@ -783,6 +803,75 @@ sub lldp_if {
return \%lldp_if; return \%lldp_if;
} }
# extremeStpDomainStpdInstance not accessible, so we need to extract from iid
sub stp_i_id {
my $extreme = shift;
my $partial = shift;
my $stp_i_roots = $extreme->stp_i_root($partial);
my %stp_i_id;
foreach my $iid ( keys %$stp_i_roots ) {
$stp_i_id{$iid} = $iid;
}
return \%stp_i_id;
}
# extremeStpDomainBridgeId returns priority and mac,
# for cross class compatibility we just need mac
sub stp_i_mac {
my $extreme = shift;
my $partial = shift;
my $stp_i_bids = $extreme->ex_stp_i_mac($partial);
my %stp_i_mac;
foreach my $iid ( keys %$stp_i_bids ) {
my $mac = $stp_i_bids->{$iid};
next unless $mac;
$mac =~ s/^([0-9A-F][0-9A-F]:){2}//;
$stp_i_mac{$iid} = $mac;
}
return \%stp_i_mac;
}
# Break up the extremeStpPortEntry INDEX into Stpd Instance and IfIndex.
sub _ex_stpport_index {
my $idx = shift;
my ( $id, $ifindex ) = split( /\./, $idx);
return ($id, $ifindex);
}
# extremeStpPortPortIfIndex not-accessible, extract from iid
sub stp_p_id {
my $extreme = shift;
my $partial = shift;
my $stp_port = $extreme->stp_p_root($partial);
my $stp_p_id = {};
foreach my $idx ( keys %$stp_port ) {
my ( $id, $ifindex ) = _ex_stpport_index($idx);
$stp_p_id->{$idx} = $ifindex;
}
return $stp_p_id;
}
# extremeStpDomainStpdInstance not-accessible, extract from iid
sub stp_p_stg_id {
my $extreme = shift;
my $partial = shift;
my $stp_port = $extreme->stp_p_root($partial);
my $stp_p_stg_id = {};
foreach my $idx ( keys %$stp_port ) {
my ( $id, $ifindex ) = _ex_stpport_index($idx);
$stp_p_stg_id->{$idx} = $id;
}
return $stp_p_stg_id;
}
1; 1;
__END__ __END__
@@ -1037,6 +1126,98 @@ The configured maximum amount of in-line power available to the slot.
=back =back
=head2 Spanning Tree Instance Globals
=over
=item $extreme->stp_i_mac()
Returns the MAC extracted from (C<extremeStpDomainBridgeId>).
=item $extreme->stp_i_id()
Returns the unique identifier of the STP domain.
(C<extremeStpDomainStpdInstance>)
=item $extreme->stp_i_time()
Returns time since last topology change detected. (100ths/second)
(C<extremeStpDomainTimeSinceTopologyChange>)
=item $extreme->stp_i_time()
Returns time since last topology change detected. (100ths/second)
(C<extremeStpDomainTimeSinceTopologyChange>)
=item $extreme->stp_i_time()
Returns the total number of topology changes detected.
(C<extremeStpDomainTopChanges>)
=item $extreme->stp_i_root()
Returns root of STP.
(C<extremeStpDomainDesignatedRoot>)
=item $extreme->stp_i_root_port()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<extremeStpDomainRootPortIfIndex>)
=item $extreme->stp_i_priority()
Returns the port number of the port that offers the lowest cost path
to the root bridge.
(C<extremeStpDomainBridgePriority>)
=back
=head2 Spanning Tree Protocol Port Table
=over
=item $extreme->stp_p_id()
(C<extremeStpPortPortIfIndex>)
=item $extreme->stp_p_stg_id()
(C<extremeStpDomainStpdInstance>)
=item $extreme->stp_p_priority()
(C<extremeStpPortPortPriority>)
=item $extreme->stp_p_state()
(C<extremeStpPortPortState>)
=item $extreme->stp_p_cost()
(C<extremeStpPortPathCost>)
=item $extreme->stp_p_root()
(C<extremeStpPortDesignatedRoot>)
=item $extreme->stp_p_bridge()
(C<extremeStpPortDesignatedBridge>)
=item $extreme->stp_p_port()
(C<extremeStpPortDesignatedPort>)
=back
=head2 Table Methods imported from SNMP::Info::Layer3 =head2 Table Methods imported from SNMP::Info::Layer3
See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details. See documentation in L<SNMP::Info::Layer3/"TABLE METHODS"> for details.