class NetCrawl::LLDP

Constants

MIB
OID
PEERS_BY
PortSubType

Private Instance Methods

make_peers() click to toggle source
# File lib/netcrawl/method/lldp.rb, line 31
def make_peers
  peers = []
  @mib.by_oid(PEERS_BY).each do |_, vb|
    peer          = Peer.new
    peer_id       = vb.oid_id(PEERS_BY)
    peer.oid      = get_oid_hash peer_id
    ip            = @mib.by_partial OID[:lldpRemManAddrIfSubtype], peer_id
    peer.raw_ip   = ip.oid[-4..-1].join('.') if ip # FIXME: IPv4 specific
    peer.raw_ip ||= '192.0.2.255'  # sometimes we can't fnd any IP (EX2200 talking Arista found)
    peer.raw_name = @mib[OID[:lldpRemSysName], peer_id].value
    peer.ip       = get_ip peer.raw_ip, peer.raw_name
    peer.dst      = @mib[OID[:lldpRemPortId], peer_id].value
    if @mib[OID[:lldpRemPortIdSubtype], peer_id].value.to_i == PortSubType[:mac_address]
      peer.dst    = peer.dst.each_char.map{|e|"%02x" % e.ord}.join.scan(/..../).join('.')
    end
    peer.src      = @mib[OID[:lldpLocPortId], peer_id[1]].value rescue nil
    peers << peer
  end
  peers
end