SNMP::...Extreme(3pm)

πŸ’– SNMP::Info::Layer3::Extreme πŸ’–

okay bestie, welcome to SNMP::Info::Layer3::Extreme β€” your Perl5 interface to Extreme Network Devices 🌈 (yes it lives in the SNMP::...Extreme(3pm) manual, that's just how the header was feeling that day)


✨ NAME ✨

SNMP::Info::Layer3::Extreme β€” Perl5 Interface to Extreme Network Devices πŸ’…


🫢 AUTHOR 🫢

Eric Miller, Bill Fenner β€” iconic legends, we stan πŸ’œ


🌸 SYNOPSIS 🌸

okay so, let SNMP::Info figure out the right subclass for you, it's giving helpful:

# Let SNMP::Info determine the correct subclass for you.
my $extreme = new SNMP::Info(
                         AutoSpecify => 1,
                         Debug       => 1,
                         DestHost    => 'myswitch',
                         Community   => 'public',
                         Version     => 2
                       )
   or die "Can't connect to DestHost.\n";

my $class      = $extreme->class();

print "SNMP::Info determined this device to fall under subclass : $class\n";

like, that's it. it just knows. main character energy fr fr ✨


πŸ¦‹ DESCRIPTION πŸ¦‹

Provides abstraction to the configuration information obtainable from an Extreme device through SNMP. no cap, that's the whole vibe. πŸ’–

πŸ’œ Inherited Classes

the girls it inherited its whole personality from:

  • SNMP::Info::Layer3
  • SNMP::Info::MAU
  • SNMP::Info::EDP

πŸŽ€ Required MIBs

these are non-negotiable, you literally cannot sit with us without them:

  • EXTREME-BASE-MIB
  • EXTREME-SYSTEM-MIB
  • EXTREME-FDB-MIB
  • EXTREME-VLAN-MIB
  • EXTREME-POE-MIB
  • EXTREME-STP-EXTENSIONS-MIB

🌟 Inherited Classes' MIBs

See classes listed above for their required MIBs. yep, go check them, i'm not doing that homework for you bestie 😭


πŸ‘‘ GLOBALS πŸ‘‘

These are methods that return scalar value from SNMP β€” lil single-value girlypops πŸ’…

  • $extreme->model() β€” Returns model type. Checks $extreme->id() against the EXTREME-BASE-MIB.
  • $extreme->vendor() β€” Returns "extreme"
  • $extreme->os() β€” Returns "xos" or "extremeware" depending on description()
  • $extreme->os_ver() β€” Parses device operating system version from description()
  • $extreme->serial() β€” Returns serial number β€” ("extremeSystemID")
  • $extreme->temp() β€” Returns system temperature β€” ("extremeCurrentTemperature")
  • $extreme->ps1_status() β€” Returns status of power supply 1 β€” ("extremePowerSupplyStatus.1")
  • $extreme->ps2_status() β€” Returns status of power supply 2 β€” ("extremePowerSupplyStatus.2")
  • $extreme->fan() β€” Returns fan status β€” ("extremeFanOperational.1")
  • $extreme->mac() β€” Returns base mac β€” ("dot1dBaseBridgeAddress")

πŸ’« Globals imported from SNMP::Info::Layer3

See documentation in "GLOBALS" in SNMP::Info::Layer3 for details. (go read it, i believe in you 🫢)

πŸ’« Globals imported from SNMP::Info::MAU

See documentation in "GLOBALS" in SNMP::Info::MAU for details.

πŸ’« Globals imported from SNMP::Info::EDP

See documentation in "GLOBALS" in SNMP::Info::EDP for details.


πŸ”₯ TABLE METHODS πŸ”₯

These are methods that return tables of information in the form of a reference to a hash. tables!! the whole squad, all at once πŸŽ‰

🌈 Overrides

  • $extreme->interfaces() β€” Returns a mapping between the Interface Table Index (iid) and the physical port name.
  • $extreme->i_duplex() β€” Parses mau_index and mau_link to return the duplex information for interfaces.
  • $extreme->i_duplex_admin() β€” Parses "mac_index","mau_autostat","mau_type_admin" in order to find the admin duplex setting for all the interfaces.

Returns either (auto,full,half).

  • $extreme->i_ignore() β€” Returns reference to hash. Increments value of IID if port is to be ignored.

Ignores VLAN meta interfaces and loopback

  • $extreme->fw_mac() β€” ("extremeFdbMacFdbMacAddress")
  • $extreme->fw_port() β€” ("extremeFdbMacFdbPortIfIndex")
  • $extreme->fw_status() β€” ("extremeFdbMacFdbStatus")
  • $extreme->lldp_if() β€” Returns the mapping to the SNMP Interface Table. Extreme LLDP uses the bridge index rather than ifIndex. (not like other girls πŸ’…)
  • $extreme->i_vlan() β€” Returns a mapping between "ifIndex" and the VLAN.
  • $extreme->i_vlan_membership() β€” Returns reference to hash of arrays: key = "ifIndex", value = array of VLAN IDs. These are the VLANs which are members of the egress list for the port.

Example:

my $interfaces = $extreme->interfaces();
my $vlans      = $extreme->i_vlan_membership();

foreach my $iid (sort keys %$interfaces) {
  my $port = $interfaces->{$iid};
  my $vlan = join(',', sort(@{$vlans->{$iid}}));
  print "Port: $port VLAN: $vlan\n";
}
  • $extreme->i_vlan_membership_untagged() β€” Returns reference to hash of arrays: key = "ifIndex", value = array of VLAN IDs. These are the VLANs which are members of the untagged egress list for the port.
  • $extreme->v_index() β€” Returns VLAN IDs
  • $extreme->v_name() β€” Returns VLAN names β€” ("extremeVlanIfDescr")
  • $extreme->bp_index() β€” Returns reference to hash of bridge port table entries map back to interface identifier (iid)

Returns ("ifIndex") for both key and value since we're using EXTREME-FDB-MIB rather than BRIDGE-MIB.

  • $extreme->peth_port_power() β€” Power supplied by PoE ports, in milliwatts β€” ("extremePethPortMeasuredPower")
  • $extreme->peth_power_watts() β€” The configured maximum amount of in-line power available to the slot. β€” ("extremePethSlotPowerLimit")

🧚 Spanning Tree Instance Globals

  • $extreme->stp_i_mac() β€” Returns the MAC extracted from ("extremeStpDomainBridgeId").
  • $extreme->stp_i_id() β€” Returns the unique identifier of the STP domain. β€” ("extremeStpDomainStpdInstance")
  • $extreme->stp_i_time() β€” Returns time since last topology change detected. (100ths/second) β€” ("extremeStpDomainTimeSinceTopologyChange")
  • $extreme->stp_i_time() β€” Returns time since last topology change detected. (100ths/second) β€” ("extremeStpDomainTimeSinceTopologyChange")
  • $extreme->stp_i_time() β€” Returns the total number of topology changes detected. β€” ("extremeStpDomainTopChanges")
  • $extreme->stp_i_root() β€” Returns root of STP. β€” ("extremeStpDomainDesignatedRoot")
  • $extreme->stp_i_root_port() β€” Returns the port number of the port that offers the lowest cost path to the root bridge. β€” ("extremeStpDomainRootPortIfIndex")
  • $extreme->stp_i_priority() β€” Returns the port number of the port that offers the lowest cost path to the root bridge. β€” ("extremeStpDomainBridgePriority")
bestie not gonna lie, stp_i_time() really said "i contain multitudes" and showed up three times 😭 and stp_i_priority() is wearing stp_i_root_port()'s outfit. that's literally what the page says though, so i'm reporting it exactly as found. no editing the lore. πŸ’€

🌟 Spanning Tree Protocol Port Table

  • $extreme->stp_p_id() β€” ("extremeStpPortPortIfIndex")
  • $extreme->stp_p_stg_id() β€” ("extremeStpDomainStpdInstance")
  • $extreme->stp_p_priority() β€” ("extremeStpPortPortPriority")
  • $extreme->stp_p_state() β€” ("extremeStpPortPortState")
  • $extreme->stp_p_cost() β€” ("extremeStpPortPathCost")
  • $extreme->stp_p_root() β€” ("extremeStpPortDesignatedRoot")
  • $extreme->stp_p_bridge() β€” ("extremeStpPortDesignatedBridge")
  • $extreme->stp_p_port() β€” ("extremeStpPortDesignatedPort")

πŸ’« Table Methods imported from SNMP::Info::Layer3

See documentation in "TABLE METHODS" in SNMP::Info::Layer3 for details.

πŸ’« Table Methods imported from SNMP::Info::MAU

See documentation in "TABLE METHODS" in SNMP::Info::MAU for details.

πŸ’« Table Methods imported from SNMP::Info::EDP

See documentation in "TABLE METHODS" in SNMP::Info::EDP for details. (yes bestie, everything is imported, that's the whole point of inheritance ✨)


⭐ SET METHODS ⭐

These are methods that provide SNMP set functionality for overridden methods or provide a simpler interface to complex set operations. See "SETTING DATA VIA SNMP" in SNMP::Info for general information on set operations.

ok so this is the part where you're actually CHANGING things on the device. live wires, bestie. be careful, be deliberate, and read the error checks. πŸ™ˆ
  • $extreme->set_i_vlan ( vlan, ifIndex ) β€” Changes an access (untagged) port VLAN, must be supplied with the numeric VLAN ID and port "ifIndex". This method should only be used on end station (non-trunk) ports.

Example:

my %if_map = reverse %{$extreme->interfaces()};
$extreme->set_i_vlan('2', $if_map{'FastEthernet0/1'})
  or die "Couldn't change port VLAN. ",$extreme->error(1);
  • $extreme->set_i_pvid ( pvid, ifIndex ) β€” Sets port default VLAN, must be supplied with the numeric VLAN ID and port "ifIndex". This method should only be used on trunk ports.

Example:

my %if_map = reverse %{$extreme->interfaces()};
$extreme->set_i_pvid('2', $if_map{'FastEthernet0/1'})
  or die "Couldn't change port default VLAN. ",$extreme->error(1);
  • $extreme->set_add_i_vlan_tagged ( vlan, ifIndex ) β€” Adds the VLAN to the enabled VLANs list of the port, must be supplied with the numeric VLAN ID and port "ifIndex".

Example:

my %if_map = reverse %{$extreme->interfaces()};
$extreme->set_add_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
  or die "Couldn't add port to egress list. ",$extreme->error(1);
  • $extreme->set_remove_i_vlan_tagged ( vlan, ifIndex ) β€” Removes the VLAN from the enabled VLANs list of the port, must be supplied with the numeric VLAN ID and port "ifIndex".

Example:

my %if_map = reverse %{$extreme->interfaces()};
$extreme->set_remove_i_vlan_tagged('2', $if_map{'FastEthernet0/1'})
  or die "Couldn't add port to egress list. ",$extreme->error(1);

πŸ“ Data Munging Callback Subroutines

the lil glow-up artists that clean up ugly strings before you see them:

  • $extreme->munge_power_stat() β€” Removes present and changes not to Not in the front of a string.
  • $extreme->munge_true_ok() β€” Replaces true with "OK" and false with "Not OK".

and that's the whole page bestie!! πŸ’–βœ¨πŸ¦‹πŸŒΈπŸ’…πŸ«Ά

one last thing before you go β€” this gorgeous lil document came to you courtesy of perl v5.40.1, dated 2026-02-28, and it lives under the name SNMP::...Extreme(3pm) (yes it's still called that, no we're not renaming her, she's iconic 😌). mwah, go configure some switches responsibly. πŸ’œ

πŸ“¦ where this page comes from