---
name: "SNMP::Info::Layer3"
section: "3pm"
platform: "linux"
package: "libsnmp-info-perl"
version: "3.972002-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/SNMP::Info::Layer3"
---

# SNMP::Info::Layer3(3pm)

SNMP Interface to network devices serving Layer3 or Layers 2 & 3

## NAME

SNMP::Info::Layer3 - SNMP Interface to network devices serving Layer3 or Layers 2 & 3

## AUTHOR

Max Baker

## SYNOPSIS

```
 # Let SNMP::Info determine the correct subclass for you.
 my $l3 = new SNMP::Info(
                          AutoSpecify => 1,
                          Debug       => 1,
                          DestHost    => 'myswitch',
                          Community   => 'public',
                          Version     => 2
                        )
    or die "Can't connect to DestHost.\n";
 my $class = $l3->class();
 print "SNMP::Info determined this device to fall under subclass : $class\n";
 # Let's get some basic Port information
 my $interfaces = $l3->interfaces();
 my $i_up       = $l3->i_up();
 my $i_speed    = $l3->i_speed();
 foreach my $iid (keys %$interfaces) {
    my $port  = $interfaces->{$iid};
    my $up    = $i_up->{$iid};
    my $speed = $i_speed->{$iid}
    print "Port $port is $up. Port runs at $speed.\n";
 }
```

## DESCRIPTION

This class is usually used as a superclass for more specific device classes listed under SNMP::Info::Layer3::\*   Please read all docs under SNMP::Info first.

Provides generic methods for accessing SNMP data for Layer 3 network devices. Includes support for Layer2+3 devices.

For speed or debugging purposes you can call the subclass directly, but not after determining a more specific class using the method above.

```
 my $l3 = new SNMP::Info::Layer3(...);
```

### Inherited Classes

- SNMP::Info

  - SNMP::Info::Bridge (For L2/L3 devices)

  - SNMP::Info::EtherLike

  - SNMP::Info::Entity

  - SNMP::Info::PowerEthernet

  - SNMP::Info::IPv6

  - SNMP::Info::LLDP

  - SNMP::Info::DocsisHE

  - SNMP::Info::AdslLine

  ### Required MIBs

- *IP-MIB*

  - *ISIS-MIB*

  - *OSPF-MIB*

  - *BGP4-MIB*

  ### Inherited MIBs

See "REQUIREMENTS" in SNMP::Info for its MIB requirements.

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

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

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

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

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

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

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

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

## GLOBALS

These are methods that return scalar value from SNMP

- $l3-\>**mac()**

  Returns root port mac address

  (`"ifPhysAddress.1"`)

- $l3-\>**router\_ip()**

  (`"ospfRouterId.0"`)

- $l3-\>**bgp\_id()**

  (`"bgpIdentifier.0"`)

  Returns the BGP identifier of the local system

- $l3-\>**bgp\_local\_as()**

  Returns the local autonomous system number

  (`"bgpLocalAs.0"`)

### Overrides

- $l3-\>**model()**

  Tries to reference `$l3`-\>**id()** to one of the product MIBs listed above

  Removes 'cisco'  from cisco devices for readability.

- $l3-\>**serial()**

  Returns a serial number if found from *ENTITY-MIB* and *OLD-CISCO-*... MIB.

- $l3-\>**vendor()**

  Tries to cull a Vendor name from `"sysDescr"`

- $l3-\>**root\_ip()**

  Returns the primary IP used to communicate with the device.  Returns the first found:  OSPF Router ID (`"ospfRouterId"`) or any OSPF Host IP Address (`"ospfHostIpAddress"`).

### Globals imported from SNMP::Info

See "USAGE" in SNMP::Info for details.

### Global Methods imported from SNMP::Info::Bridge

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

### Global Methods imported from SNMP::Info::EtherLike

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

### Global Methods imported from SNMP::Info::Entity

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

### Global Methods imported from SNMP::Info:PowerEthernet

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

### Global Methods imported from SNMP::Info::IPv6

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

### Global Methods imported from SNMP::Info::LLDP

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

### Global Methods imported from SNMP::Info::DocsisHE

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

### Global Methods imported from SNMP::Info::AdslLine

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

## TABLE METHODS

These are methods that return tables of information in the form of a reference to a hash.

### Overrides

- $l3-\>**interfaces()**

  Returns the map between SNMP Interface Identifier (iid) and physical port name.

  Only returns those iids that have a description listed in `$l3`-\>**i\_description()**

- $l3-\>**i\_subinterfaces()**

  Returns reference to hash of arrays: key = `"ifIndex"`, value = array of `"ifIndex"`. These are the VLAN subinterfaces (`"l2vlan"` type) for the parent (`"ethernetCsmacd"` type) interface.

  ```
    Example:
    my $interfaces = $l3->interfaces();
    my $i_subs     = $l3->i_subinterfaces();
    foreach my $iid (sort keys %$interfaces) {
      my $port = $interfaces->{$iid};
      my $subs = join(',', sort(map {$interfaces->{$_}} @{$i_subs->{$iid}}));
      print "Port: $port has subinterfaces: $subs\n";
    }
  ```

- $l3-\>**i\_name()**

  Returns reference to hash of iid to human set name.

  Defaults to `"ifName"`, but checks for an `"ifAlias"`

- $l3-\>**i\_duplex()**

  Returns reference to hash of iid to current link duplex setting.

  Maps `$l3`-\>**el\_index()** to `$l3`-\>el\_duplex, then culls out full,half, or auto and sets the map to that value.

  See SNMP::Info::EtherLike for the **el\_index()** and **el\_duplex()** methods.

### *IP-MIB* Arp Cache Table ("ipNetToMediaTable")

- $l3-\>**at\_index()**

  Returns reference to hash.  Maps ARP table entries to Interface IIDs

  (`"ipNetToMediaIfIndex"`)

  If the device doesn't support `"ipNetToMediaIfIndex"`, this will try the deprecated `"atIfIndex"`.

- $l3-\>**at\_paddr()**

  Returns reference to hash.  Maps ARP table entries to MAC addresses.

  (`"ipNetToMediaPhysAddress"`)

  If the device doesn't support `"ipNetToMediaPhysAddress"`, this will try the deprecated `"atPhysAddress"`.

- $l3-\>**at\_netaddr()**

  Returns reference to hash.  Maps ARP table entries to IP addresses.

  (`"ipNetToMediaNetAddress"`)

  If the device doesn't support `"ipNetToMediaNetAddress"`, this will try the deprecated `"atNetAddress"`.

### ARP Cache Entries

The `"atTable"` has been deprecated since 1991.  You should never need to use these methods.  See `"ipNetToMediaTable"` above.

- $l3-\>**old\_at\_index()**

  Returns reference to map of IID to Arp Cache Entry

  (`"atIfIndex"`)

- $l3-\>**old\_at\_paddr()**

  Returns reference to hash of Arp Cache Entries to MAC address

  (`"atPhysAddress"`)

- $l3-\>**old\_at\_netaddr()**

  Returns reference to hash of Arp Cache Entries to IP Address

  (`"atNetAddress"`)

### BGP Peer Table ("bgpPeerTable")

- $l3-\>**bgp\_peers()**

  Returns reference to hash of BGP peer to local IP address

  (`"bgpPeerLocalAddr"`)

- $l3-\>**bgp\_peer\_id()**

  Returns reference to hash of BGP peer to BGP peer identifier

  (`"bgpPeerIdentifier"`)

- $l3-\>**bgp\_peer\_state()**

  Returns reference to hash of BGP peer to BGP peer state

  (`"bgpPeerState"`)

- $l3-\>**bgp\_peer\_as()**

  Returns reference to hash of BGP peer to BGP peer autonomous system number

  (`"bgpPeerRemoteAs"`)

- $l3-\>**bgp\_peer\_addr()**

  Returns reference to hash of BGP peer to BGP peer IP address

  (`"bgpPeerRemoteAddr"`)

- $l3-\>**bgp\_peer\_fsm\_est\_trans()**

  Returns reference to hash of BGP peer to the total number of times the BGP FSM transitioned into the established state

  (`"bgpPeerFsmEstablishedTransitions"`)

- $l3-\>**bgp\_peer\_in\_tot\_msgs()**

  Returns reference to hash of BGP peer to the total number of messages received from the remote peer on this connection

  (`"bgpPeerInTotalMessages"`)

- $l3-\>**bgp\_peer\_in\_upd\_el\_time()**

  Returns reference to hash of BGP peer to the elapsed time in seconds since the last BGP UPDATE message was received from the peer.

  (`"bgpPeerInUpdateElapsedTime"`)

- $l3-\>**bgp\_peer\_in\_upd()**

  Returns reference to hash of BGP peer to the number of BGP UPDATE messages received on this connection

  (`"bgpPeerInUpdates"`)

- $l3-\>**bgp\_peer\_out\_tot\_msgs()**

  Returns reference to hash of BGP peer to the total number of messages transmitted to the remote peer on this connection

  (`"bgpPeerOutTotalMessages"`)

- $l3-\>**bgp\_peer\_out\_upd()**

  Returns reference to hash of BGP peer to the number of BGP UPDATE messages transmitted on this connection

  (`"bgpPeerOutUpdates"`)

### OSPF Interface Table ("ospfIfTable")

- $l3-\>**ospf\_if\_ip()**

  Returns reference to hash of OSPF interface IP addresses

  (`"ospfIfIpAddress"`)

- $l3-\>**ospf\_if\_area()**

  Returns reference to hash of the OSPF area to which the interfaces connect

  (`"ospfIfAreaId"`)

- $l3-\>**ospf\_if\_type()**

  Returns reference to hash of the OSPF interfaces' type

  (`"ospfIfType"`)

- $l3-\>**ospf\_if\_hello()**

  Returns reference to hash of the OSPF interfaces' hello interval

  (`"ospfIfHelloInterval"`)

- $l3-\>**ospf\_if\_dead()**

  Returns reference to hash of the OSPF interfaces' dead interval

  (`"ospfIfRtrDeadInterval"`)

- $l3-\>**ospf\_if\_admin()**

  Returns reference to hash of the OSPF interfaces' administrative status

  (`"ospfIfAdminStat"`)

- $l3-\>**ospf\_if\_state()**

  Returns reference to hash of the OSPF interfaces' state

  (`"ospfIfState"`)

### OSPF Neighbor Table ("ospfNbrTable")

- $l3-\>**ospf\_peers()**

  Returns reference to hash of IP addresses the neighbor is using in its IP Source Addresses

  (`"ospfNbrIpAddr"`)

- $l3-\>**ospf\_peer\_id()**

  Returns reference to hash of neighbor Router IDs

  (`"ospfNbrRtrId"`)

- $l3-\>**ospf\_peer\_state()**

  Returns reference to hash of state of the relationship with the neighbor routers

  (`"ospfNbrState"`)

### IS-IS Circuit Table

- $l3-\>**isis\_circ\_if\_idx()**

  Returns reference to hash of the interface index associated with the IS-IS circuit (`"isisCircIfIndex"`)

- $l3-\>**isis\_circ\_admin()**

  Returns reference to hash of the IS-IS circuit's admin status

  (`"isisCircAdminState"`)

- $l3-\>**isis\_circ\_type()**

  Returns reference to hash of the IS-IS circuit's type

  (`"isisCircType"`)

- $l3-\>**isis\_circ\_level\_type()**

  Returns reference to hash of the IS-IS circuit's level

  (`"isisCircLevelType"`)

### IS-IS Adjacency Table

- $l3-\>**isis\_adj\_id()**

  Returns reference to hash of the peer id of adjacencies.

  (`"isisISAdjNeighSysID"`)

- $l3-\>**isis\_adj\_type()**

  Returns reference to hash of the type of adjacencies (Level 1 Intermediate System, Level 2 Intermediate System, Level 1+2 Intermediate System, unknown)

  (`"isisISAdjNeighSysType"`)

- $l3-\>**isis\_adj\_usage()**

  Returns reference to hash of the type of adjacencies in use (undefined, Level 1, Level 2, Level1+2)

  (`"isisISAdjNeighUsage"`)

- $l3-\>**isis\_adj\_ip\_type()**

  Returns reference to hash of type of address (IPv4, IPv6, etc) on adjacencies.

  (`"isisISAdjIPAddrType"`)

- $l3-\>**isis\_adj()**

  Returns reference to hash of addresses (IPv4, IPv6, etc) on adjacencies. Note this returns hash-strings, for IPs, use `$l3`-\>**isis\_peers()**

  (`"isisISAdjIPAddrAddress"`)

- $l3-\>**isis\_peers()**

  Returns reference to hash of addresses (IPv4, IPv6) on adjacencies. Convert hash strings from isis\_adj to proper IP (v4 and v6) formatting.

### Table Methods imported from SNMP::Info

See "USAGE" in SNMP::Info for details.

### Table Methods imported from SNMP::Info::Bridge

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

### Table Methods imported from SNMP::Info::EtherLike

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

### Table Methods imported from SNMP::Info::Entity

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

### Table Methods imported from SNMP::Info::PowerEthernet

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

### Table Methods imported from SNMP::Info::IPv6

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

### Table Methods imported from SNMP::Info::LLDP

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

### Table Methods imported from SNMP::Info::DocsisHE

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

### Table Methods imported from SNMP::Info::AdslLine

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