SNMP::...::S3000(3pm)

๐Ÿ’– SNMP::Info::Layer1::S3000 ๐Ÿ’–

okay bestie, gather round, because this is the manual page for SNMP::Info::Layer1::S3000 โ€” the Perl module that talks SNMP to Synoptics / Nortel Hubs. yes, hubs. the little blinkenlights boxes. she's vintage, she's iconic, and she has opinions about duplex. ๐ŸŽ€


โœจ NAME โœจ

SNMP::Info::Layer1::S3000 โ€” SNMP Interface to Synoptics / Nortel Hubs ๐Ÿซถ


๐Ÿ‘‘ AUTHOR ๐Ÿ‘‘

Eric Miller

like, the whole thing. one person. main character energy fr fr. ๐Ÿ’…


๐ŸŒˆ SYNOPSIS ๐ŸŒˆ

#Let SNMP::Info determine the correct subclass for you.

my $s3000 = new SNMP::Info(
                      AutoSpecify => 1,
                      Debug       => 1,
                      DestHost    => 'myswitch',
                      Community   => 'public',
                      Version     => 2
                    )

or die "Can't connect to DestHost.\n";

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

so the whole vibe here is that you don't hardcode the subclass yourself. you let SNMP::Info do the detective work โ€” set AutoSpecify => 1 and she'll sniff out which device class you're actually talking to and hand it back to you from $s3000->class(). lowkey genius, no cap. โœจ

also note the or die "Can't connect to DestHost.\n"; โ€” if the connection doesn't happen, you die. as you should. ๐Ÿ˜ญ

๐Ÿฆ‹ DESCRIPTION ๐Ÿฆ‹

Provides abstraction to the configuration information obtainable from a Bay hub device through SNMP.

Also provides device MAC to port mapping through the proprietary MIB. iykyk โ€” the proprietary MIB is where the โœจrealโœจ mapping lives.

๐Ÿงš Inherited Classes

SNMP::Info::Layer2

๐Ÿ“ Required MIBs

  • SYNOPTICS-COMMON-MIB
  • SYNOPTICS-ETHERNET-MIB

๐Ÿ’œ Inherited MIBs

See "Required MIBs" in SNMP::Info::Layer2 for its MIB requirements.


๐Ÿ’… GLOBALS ๐Ÿ’…

These are methods that return scalar value from SNMP. scalar. singular. one value. not a table, babes. ๐Ÿ“Œ

๐ŸŒธ $s3000->vendor()

Returns 'nortel'

๐ŸŒธ $s3000->os()

Returns 'synoptics'

๐ŸŒธ $s3000->model()

Cross references $s3000->id() to the SYNOPTICS-MIB and returns the results.

Removes "sreg-" from the model name and returns only the numeric model identifier. so if you were hoping for the pretty string, sorry babe, she's giving you digits only. ๐Ÿ”ข

โญ $stack->os_ver()

Returns the software version specified as major.minor.maint.

("s3AgentSwMajorVer").("s3AgentSwMinorVer").("s3AgentSwMaintVer")

three separate OIDs glued together with dots, periodt. ๐Ÿ’€

โญ $stack->os_bin()

Returns the firmware version. ("s3AgentFwVer")

๐ŸŒบ $s3000->mac()

Returns MAC of the advertised IP address of the device.

๐Ÿ’– Overrides ๐Ÿ’–

๐ŸŒท $s3000->layers()

Returns 00000011. Class emulates Layer 2 functionality through proprietary MIBs. fake it till you make it, bestie. ๐Ÿ’ซ

๐ŸŽ€ Globals imported from SNMP::Info::Layer2 ๐ŸŽ€

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


๐Ÿ”ฅ TABLE METHODS ๐Ÿ”ฅ

These are methods that return tables of information in the form of a reference to a hash. hash refs. the whole squad. ๐Ÿซ‚

๐Ÿ‘‘ Overrides ๐Ÿ‘‘

๐Ÿฆ„ $s3000->i_index()

Returns reference to map of IIDs to Interface index.

Since hubs do not support "ifIndex", the interface index is created using the formula (board * 256 + port). This is required to support devices with more than one module.

ok so this is the important one. no ifIndex on a hub, so we manufacture one: board * 256 + port. it's giving math homework but it's necessary. you're welcome. ๐Ÿงฎโœจ

๐Ÿฆ„ $s3000->interfaces()

Returns reference to map of IIDs to physical ports.

๐Ÿฆ„ $s3000->i_duplex()

Returns half, hubs do not support full duplex. she's a half-duplex girlie and that's just the truth. ๐Ÿ™ˆ

๐Ÿฆ„ $s3000->i_duplex_admin()

Returns half, hubs do not support full duplex. same energy, admin flavour. ๐Ÿ’…

๐Ÿฆ„ $s3000->i_speed()

Returns 10000000. The hubs only support 10 Mbs Ethernet. ten megabits. that's it. that's the number. ๐ŸŒ

๐Ÿฆ„ $s3000->i_up()

Returns ("s3EnetPortLinkStatus") for each port. Translates on/off to up/down.

๐Ÿฆ„ $s3000->i_up_admin()

Returns ("s3EnetPortPartStatus") for each port.

๐Ÿฆ„ $s3000->set_i_up_admin(state, ifIndex)

Sets port state, must be supplied with state and port "ifIndex"

State choices are 'up' or 'down'

Example:

my %if_map = reverse %{$s3000->interfaces()};
$s3000->set_i_up_admin('down', $if_map{'1.1'})
    or die "Couldn't change port state. ",$s3000->error(1);

notice the reverse %{$s3000->interfaces()} trick โ€” you flip the map so you can look up by the '1.1' style name instead of the raw index. cute, right? and if it fails you die with $s3000->error(1). ๐Ÿ˜ญ

๐Ÿฆ„ $s3000->bp_index()

Simulates bridge MIB by returning reference to a hash containing the index for both the keys and values. yes, both. keys AND values. same thing twice. it's giving mirror selfie. ๐Ÿชž

๐Ÿฆ„ $s3000->fw_port()

Returns reference to map of IIDs of the "SYNOPTICS-ETHERNET-MIB::s3EnetShowNodesTable" to the Interface index.

๐Ÿฆ„ $s3000->fw_mac()

("s3EnetShowNodesMacAddress")

๐Ÿฆ„ $s3000->s3000_topo_port()

Returns reference to hash. Key: Table entry, Value: Port Number (interface iid)

("s3EnetTopNmmPort")

๐Ÿฆ„ $s3000->s3000_topo_mac()

("s3EnetTopNmmMacAddr")

Returns reference to hash. Key: Table entry, Value: Remote MAC address

๐ŸŒˆ Table Methods imported from SNMP::Info::Layer2 ๐ŸŒˆ

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


remember: every single one of these is a hash ref when it's a table method and a plain scalar when it's a global. don't @ me. ๐Ÿซถ

and that's the whole page, bestie! this lil doc ships with perl v5.40.1 and was dated 2026-02-28 โ€” go forth and poll those hubs, you absolute legend. ๐Ÿ’–โœจ๐Ÿฆ‹๐ŸŽ€๐Ÿ’…

๐Ÿ“ฆ where this page comes from