SNMP::...Trapeze(3pm)

πŸ’– SNMP::...Trapeze(3pm) πŸ’–

okay bestie so this is the manual page for SNMP::Info::Layer2::Trapeze, straight out of the User Contributed Perl Documentation, section 3pm, and it is literally your backstage pass to talking SNMP with Juniper (Trapeze) Wireless Controllers. grab a strawberry πŸ“ and let's go.


πŸŽ€ NAME πŸŽ€

SNMP::Info::Layer2::Trapeze β€” the SNMP Interface to Juniper (Trapeze) Wireless Controllers. that's the whole vibe. ✨


πŸ‘‘ AUTHOR πŸ‘‘

Eric Miller. the icon who wrote this. πŸ’…


✨ SYNOPSIS ✨

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

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

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

my $class = $trapeze->class();
print " Using device sub class : $class\n";

so basically you hand SNMP::Info your login deets and it figures out which subclass you actually need β€” main character energy, it does the work for you. ~~if it can't reach the host it straight up dies~~ no actually it does or die "Can't connect to DestHost.\n"; which is the dramatic exit it deserves. πŸ’€


πŸ¦‹ DESCRIPTION πŸ¦‹

This class gives you an abstraction to all the configuration info you can pull off Juniper (Trapeze) Wireless Controllers over SNMP.

It emulates bridge functionality for the wireless switch, which means you get end station MAC address collection and correlation to the thin access point that end station is using to communicate. it's giving matchmaker but for MACs and APs. 🫢

🌸 Inherited Classes 🌸

  • SNMP::Info::Layer2

🌸 Required MIBs 🌸

  • TRAPEZE-NETWORKS-REGISTRATION-DEVICES-MIB
  • TRAPEZE-NETWORKS-AP-STATUS-MIB
  • TRAPEZE-NETWORKS-CLIENT-SESSION-MIB
  • TRAPEZE-NETWORKS-SYSTEM-MIB
  • TRAPEZE-NETWORKS-BASIC-MIB

🌸 Inherited Classes' MIBs 🌸

See "Required MIBs" in SNMP::Info::Layer2 for its own MIB requirements β€” that page has its own whole thing going on, go check it.


πŸ’… GLOBALS πŸ’…

these are the methods that return a scalar value straight from SNMP. no hash, no table, just one lil value. cute, concise, iconic.

  • $trapeze->vendor() β€” returns 'juniper'
  • $trapeze->os() β€” returns 'trapeze'
  • $trapeze->os_ver() β€” ("trpzVersionString")
  • $trapeze->model() β€” tries to reference $trapeze->id() to TRAPEZE-NETWORKS-REGISTRATION-DEVICES-MIB. also removes 'wirelessLANController' for readability, because who has the time.
  • $trapeze->serial() β€” ("trpzSerialNumber")
  • $trapeze->mac() β€” ("dot1dBaseBridgeAddress")

⭐ Overrides ⭐

  • $trapeze->layers() β€” returns 00000011. This class emulates Layer 2 functionality for Thin APs through proprietary MIBs. and that's on periodt.

⭐ Global Methods imported from SNMP::Info::Layer2 ⭐

See the documentation in "GLOBALS" in SNMP::Info::Layer2 for the deets.


🌈 TABLE METHODS 🌈

these ones hand you tables of information β€” as a reference to a hash, obviously. love that for us.

  • $trapeze->i_ssidlist() β€” returns a reference to a hash. the SSID's recognized by the radio interface.
  • $trapeze->i_80211channel() β€” returns a reference to a hash. current operating frequency channel of the radio interface.
  • $trapeze->dot11_cur_tx_pwr_mw() β€” returns a reference to a hash. current transmit power, in milliwatts, of the radio interface.
  • cd11_mac() β€” client MAC address.

🧚 AP Status Table ("trpzApStatApStatusTable") 🧚

a table describing all the APs currently present and managed by the controller. like a guest list but for access points.

  • $trapeze->trapeze_ap_mac() β€” ("trpzApStatApStatusBaseMac")
  • $trapeze->trapeze_ap_name() β€” ("trpzApStatApStatusApName")
  • $nws2300->trapeze_ap_ip() β€” ("trpzApStatApStatusIpAddress")
  • $nws2300->trapeze_ap_sw() β€” ("trpzApStatApStatusSoftwareVer")
  • $nws2300->trapeze_ap_fw() β€” ("trpzApStatApStatusBootVer")
  • $nws2300->trapeze_ap_model() β€” ("trpzApStatApStatusModel")
  • $nws2300->trapeze_ap_type() β€” ("trpzApStatApStatusModel")
  • $nws2300->trapeze_ap_status() β€” ("trpzApStatApStatusApState")
  • $nws2300->trapeze_ap_vendor() β€” ("trpzApStatApStatusManufacturerId")
  • $nws2300->trapeze_ap_num() β€” ("trpzApStatApStatusApNum")
  • $nws2300->trapeze_ap_dapnum() β€” ("trpzApStatApStatusPortOrDapNum")

🧚 AP Radio Status Table ("trpzApStatRadioStatusTable") 🧚

a table describing all radios on all the APs currently present and managed by the controller. every single radio, no skips.

  • $nws2300->trapeze_apif_mac() β€” ("trpzApStatRadioStatusBaseMac")
  • $nws2300->trapeze_apif_type() β€” ("trpzApStatRadioStatusRadioPhyType")
  • $nws2300->trapeze_apif_ch_num() β€” ("trpzApStatRadioStatusCurrentChannelNum")
  • $nws2300->trapeze_apif_power() β€” ("trpzApStatRadioStatusCurrentPowerLevel")
  • $nws2300->trapeze_apif_admin() β€” ("trpzApStatRadioStatusRadioMode")

🧚 AP Radio Status Service Table ("trpzApStatRadioServiceTable") 🧚

a table describing radio services associated with APs currently present and managed by the controller.

  • $nws2300->trapeze_apif_bssid() β€” ("trpzApStatRadioServBssid")
  • $nws2300->trapeze_apif_prof() β€” ("trpzApStatRadioServServiceProfileName")

🧚 AP Service Profile Config Table ("trpzApConfServiceProfileTable") 🧚

  • $nws2300->trapeze_ess_bcast() β€” ("trpzApConfServProfBeaconEnabled")

🧚 AP Radio Config Table ("trpzApConfRadioConfigTable") 🧚

  • $nws2300->trapeze_apcr_txpwr() β€” ("trpzApConfRadioConfigTxPower")
  • $nws2300->trapeze_apcr_ch() β€” ("trpzApConfRadioConfigChannel")
  • $nws2300->trapeze_apcr_mode() β€” ("trpzApConfRadioConfigRadioMode")

🧚 AP Config Table ("trpzApConfApConfigTable") 🧚

  • $nws2300->trapeze_apc_descr() β€” ("trpzApConfApConfigDescription")
  • $nws2300->trapeze_apc_loc() β€” ("trpzApConfApConfigLocation")
  • $nws2300->trapeze_apc_name() β€” ("trpzApConfApConfigApName")
  • $nws2300->trapeze_apc_model() β€” ("trpzApConfApConfigApModelName")
  • $nws2300->trapeze_apc_serial() β€” ("trpzApConfApConfigApSerialNum")

🧚 Client Session Table ("trpzClSessClientSessionTable") 🧚

  • $nws2300->trapeze_sta_slot() β€” ("trpzClSessClientSessRadioNum")
  • $nws2300->trapeze_sta_serial() β€” ("trpzClSessClientSessApSerialNum")
  • $nws2300->trapeze_sta_ssid() β€” ("trpzClSessClientSessSsid")
  • $nws2300->trapeze_sta_ip() β€” ("trpzClSessClientSessIpAddress")

🧚 Client Session Statistics Table ("trpzClSessClientSessionStatisticsTable") 🧚

these ones emulate the CISCO-DOT11-MIB. yes bestie, a Trapeze doing a Cisco impression. versatile. πŸ”₯

  • $nws2300->cd11_sigstrength() β€” ("trpzClSessClientSessStatsLastRssi")
  • $nws2300->cd11_sigqual() β€” ("trpzClSessClientSessStatsLastSNR")
  • $nws2300->cd11_txrate() β€” ("trpzClSessClientSessStatsLastRate")
  • $nws2300->cd11_rxbyte() β€” ("trpzClSessClientSessStatsUniOctetIn")
  • $nws2300->cd11_txbyte() β€” ("trpzClSessClientSessStatsUniOctetOut")
  • $nws2300->cd11_rxpkt() β€” ("trpzClSessClientSessStatsUniPktIn")
  • $nws2300->cd11_txpkt() β€” ("trpzClSessClientSessStatsUniPktOut")

⭐ Table Methods imported from SNMP::Info ⭐

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

⭐ Overrides ⭐

  • $trapeze->i_index() β€” returns a reference to a map of IIDs to Interface index. it extends "ifIndex" so thin APs and WLAN virtual interfaces show up as device interfaces.
  • $trapeze->interfaces() β€” returns a reference to a map of IIDs to ports. thin APs are implemented as device interfaces, and the thin AP MAC address plus the Slot ID trapeze_apif_slot() are used as the port identifier.
  • $trapeze->i_name() β€” returns a reference to a map of IIDs to interface names. it gives you "ifName" for Ethernet interfaces and trapeze_ap_name() for thin AP interfaces.
  • $trapeze->i_description() β€” returns a reference to a map of IIDs to interface types. it gives you "ifDescr" for Ethernet interfaces, trapeze_ap_name() for thin AP interfaces.
  • $trapeze->i_type() β€” returns a reference to a map of IIDs to interface descriptions. it gives you "ifType" for Ethernet interfaces and 'capwapWtpVirtualRadio' for thin AP interfaces.
  • $trapeze->i_up() β€” returns a reference to a map of IIDs to link status of the interface. it gives you "ifOperStatus" for Ethernet interfaces and trapeze_apif_admin() for thin AP interfaces.
  • $trapeze->i_up_admin() β€” returns a reference to a map of IIDs to administrative status of the interface. it gives you "ifAdminStatus" for Ethernet interfaces and trapeze_apif_admin() for thin AP interfaces.
  • $trapeze->i_mac() β€” returns a reference to a map of IIDs to MAC address of the interface. it gives you "ifPhysAddress" for Ethernet interfaces.
  • $trapeze->bp_index() β€” simulates the bridge MIB by returning a reference to a hash mapping i_index() to the interface iid.
  • $trapeze->fw_port() β€” returns a reference to a hash, where the value is the mac and trapeze_sta_slot() combined to match the interface iid.
  • $trapeze->fw_mac() β€” extracts the MAC from the trapeze_sta_serial() index.

πŸ“ Pseudo ARP Cache Entries πŸ“

the controller snoops on the MAC->IP mappings. using that as ARP cache data lets us get MAC->IP mappings even for stations that only communicate locally. the data is gathered from trapeze_sta_ip(). sneaky? no, resourceful. πŸ’…

  • $trapeze->at_paddr() β€” returns a reference to a hash of Pseudo Arp Cache Entries to MAC address
  • $trapeze->at_netaddr() β€” returns a reference to a hash of Pseudo Arp Cache Entries to IP Address

πŸ“ Pseudo ENTITY-MIB information πŸ“

these methods emulate ENTITY-MIB Physical Table methods using TRAPEZE-NETWORKS-AP-STATUS-MIB. thin APs are included as subcomponents of the wireless controller β€” nepo babies, but make it networking.

  • $trapeze->e_index() β€” returns a reference to a hash. Key: IID, Value: Integer. the index for APs is created with an integer representation of the last three octets of the AP MAC address.
  • $trapeze->e_class() β€” returns a reference to a hash. Key: IID, Value: General hardware type. returns ap for wireless access points.
  • $trapeze->e_descr() β€” returns a reference to a hash. Key: IID, Value: Human friendly name.
  • $trapeze->e_model() β€” returns a reference to a hash. Key: IID, Value: Model name.
  • $trapeze->e_name() β€” more computer friendly name of entity. the name is either 'WLAN Controller' or 'AP'.
  • $trapeze->e_vendor() β€” returns a reference to a hash. Key: IID, Value: avaya.
  • $trapeze->e_serial() β€” returns a reference to a hash. Key: IID, Value: Serial number.
  • $trapeze->e_pos() β€” returns a reference to a hash. Key: IID, Value: The relative position among all entities sharing the same parent.
  • $trapeze->e_type() β€” returns a reference to a hash. Key: IID, Value: Type of component.
  • $trapeze->e_fwver() β€” returns a reference to a hash. Key: IID, Value: Firmware revision.
  • $trapeze->e_swver() β€” returns a reference to a hash. Key: IID, Value: Software revision.
  • $trapeze->e_parent() β€” returns a reference to a hash. Key: IID, Value: The value of e_index() for the entity which 'contains' this entity.

and that's the whole page, bestie!! 🫢 this was perl v5.40.1, dated 2026-02-28, and yeah we were living in SNMP::...Trapeze(3pm) the entire time. go forth and SNMP responsibly. πŸ’œπŸŒˆβœ¨

πŸ“¦ where this page comes from