SNMP::...ystack(3pm)

πŸ’– NAME πŸ’–

SNMP::Info::Layer2::Baystack β€” the SNMP Interface to Avaya Ethernet Switch (Baystack) and VSP 7000 series switches, bestie πŸ’…


✨ AUTHOR ✨

Eric Miller 🫢


🌸 SYNOPSIS 🌸

okay so literally the easiest way in, let SNMP::Info pick the right subclass for you and vibe:

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

my $class = $baystack->class();
print "SNMP::Info determined this device to fall under subclass : $class\n";

πŸ¦‹ DESCRIPTION πŸ¦‹

It gives you abstraction to all the config info you can pull off an Avaya Ethernet Switch (formerly Nortel/Bay Baystack) and VSP 7000 series through SNMP. it's giving ✨pluggable✨, no cap.

πŸ‘‘ Inherited Classes

  • SNMP::Info::SONMP
  • SNMP::Info::NortelStack
  • SNMP::Info::RapidCity
  • SNMP::Info::Layer3

πŸ“š Required MIBs

  • BAY-STACK-PETH-EXT-MIB

🧚 Inherited MIBs

fr fr, go check these yourself:

  • See "Required MIBs" in SNMP::Info::SONMP for its MIB requirements.
  • See "Required MIBs" in SNMP::Info::NortelStack for its MIB requirements.
  • See "Required MIBs" in SNMP::Info::RapidCity for its MIB requirements.
  • See "Required MIBs" in SNMP::Info::Layer3 for its MIB requirements.

πŸ’… GLOBALS πŸ’…

These are methods that return scalar value from SNMP β€” lil single-value glow-ups, one at a time bestie. πŸŽ€

  • $baystack->vendor() β€” Returns 'avaya'. iconic, honestly.
  • $baystack->model() β€” Cross references $baystack->id() to the SYNOPTICS-MIB and returns the results. 303s and 304s have the same ID, so we have a hack to return depending on which it is. πŸ’€ Returns BPS for Business Policy Switch. For others extracts and returns the switch numeric designation.
  • $baystack->os() β€” Returns 'baystack' or 'boss' depending on software version. pick your fighter.
  • $baystack->os_bin() β€” Returns the firmware version extracted from "sysDescr".
  • $baystack->stp_ver() β€” Returns the particular STP version running on this device. Values: "nortelStpg", "pvst", "rstp", "mstp", "ieee8021d". (from "s5AgSysSpanningTreeOperMode")

πŸ”₯ Overrides

  • $baystack->index_factor() β€” Required by SNMP::Info::SONMP. It's the number representing the number of ports reserved per slot within the device MIB. Index factor on the Baystack switches are determined by the formula: Index Factor = 64 if (model = 470 or (os eq 'boss' and operating in pure mode)) or else Index factor = 32. Returns either 32 or 64 based upon the formula. πŸ’… math girlies rise.

🌈 Global Methods imported from SNMP::Info::SONMP

See "GLOBALS" in SNMP::Info::SONMP for details.

🌈 Globals imported from SNMP::Info::NortelStack

See "GLOBALS" in SNMP::Info::NortelStack for details.

🌈 Global Methods imported from SNMP::Info::RapidCity

See "GLOBALS" in SNMP::Info::RapidCity for details.

🌈 Globals imported from SNMP::Info::Layer3

See "GLOBALS" in SNMP::Info::Layer3 for details.


πŸ“ TABLE METHODS πŸ“

These are methods that return tables of information in the form of a reference to a hash. (yes, a whole hash. we love a data structure. πŸ’–)

πŸ’œ Overrides

  • $baystack->interfaces() β€” Returns reference to the map between IID and physical Port. Slot and port numbers on the Baystack switches are determined by the formula:
port = (Interface index % Index factor)
slot = (int(Interface index / Index factor)) + Slot offset

The physical port name is returned as slot.port. 🎯

  • $baystack->i_mac() β€” Returns the "ifPhysAddress" table entries. Removes all entries matching '00:00:00:00:00:00' β€” Certain revisions of Baystack firmware report all zeros for each port mac. not the all-zeros jumpscare 😭
  • $baystack->i_name() β€” Crosses "ifName" with "ifAlias" and returns the human set port name if exists.
  • $baystack->peth_port_ifindex() β€” Maps the "pethPsePortTable" to "ifIndex" by way of the ENTITY-MIB.
  • $baystack->peth_port_power() β€” Power supplied by PoE ports, in milliwatts. (from "bspePethPsePortExtMeasuredPower") ⚑

πŸ›οΈ ENTITY-MIB Information

For older devices which do not support ENTITY-MIB, these methods emulate Physical Table methods using S5-CHASSIS-MIB. See "TABLE METHODS" in SNMP::Info::NortelStack for details on ns_e_* methods. the way these fake it till they make it 🫢

  • $baystack->e_index() β€” If the device doesn't support "entPhysicalDescr", this will try ns_e_index(). Note that this is based on "entPhysicalDescr" due to implementation details of SNMP::Info::Entity::e_index().
  • $baystack->e_class() β€” If the device doesn't support "entPhysicalClass", this will try ns_e_class().
  • $baystack->e_descr() β€” If the device doesn't support "entPhysicalDescr", this will try ns_e_descr().
  • $baystack->e_name() β€” If the device doesn't support "entPhysicalName", this will try ns_e_name().
  • $baystack->e_fwver() β€” If the device doesn't support "entPhysicalFirmwareRev", this will try ns_e_fwver().
  • $baystack->e_hwver() β€” If the device doesn't support "entPhysicalHardwareRev", this will try ns_e_hwver().
  • $baystack->e_parent() β€” If the device doesn't support "entPhysicalContainedIn", this will try ns_e_parent().
  • $baystack->e_pos() β€” If the device doesn't support "entPhysicalParentRelPos", this will try ns_e_pos().
  • $baystack->e_serial() β€” If the device doesn't support "entPhysicalSerialNum", this will try ns_e_serial().
  • $baystack->e_swver() β€” If the device doesn't support "entPhysicalSoftwareRev", this will try ns_e_swver().
  • $baystack->e_type() β€” If the device doesn't support "entPhysicalVendorType", this will try ns_e_type().
  • $baystack->e_vendor() β€” If the device doesn't support "entPhysicalMfgName", this will try ns_e_vendor().

πŸŒ‰ 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. multi-source slay.

  • $baystack->fw_mac() β€” Returns reference to hash of forwarding table MAC Addresses.
  • $baystack->fw_port() β€” Returns reference to hash of forwarding table entries port interface identifier (iid).
  • $baystack->qb_fw_vlan() β€” Returns reference to hash of forwarding table entries VLAN ID.
  • $baystack->fw_status() β€” Returns reference to hash of forwarding table entries status.

🌈 Table Methods imported from SNMP::Info::SONMP

See "TABLE METHODS" in SNMP::Info::SONMP for details.

🌈 Table Methods imported from SNMP::Info::NortelStack

See "TABLE METHODS" in SNMP::Info::NortelStack for details.

🌈 Table Methods imported from SNMP::Info::RapidCity

See "TABLE METHODS" in SNMP::Info::RapidCity for details.

🌈 Table Methods imported from SNMP::Info::Layer3

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


and that's the whole page bestie, go forth and poll responsibly πŸ’–βœ¨

this one's running perl v5.40.1, dated 2026-02-28, and it lives under the SNMP::...ystack(3pm) name πŸŽ€ mwah, bye πŸ‘‘

πŸ“¦ where this page comes from