Sha256: e6b9e6d6bc89f7685ba61f94a46c4e28963ecc47f6ce214a694d30f0754b31d0
Contents?: true
Size: 1.4 KB
Versions: 1
Compression:
Stored size: 1.4 KB
Contents
# frozen_string_literal: true require 'bindata' require 'pio/ethernet_header' require 'pio/lldp/chassis_id_tlv' require 'pio/lldp/optional_tlv' require 'pio/lldp/port_id_tlv' require 'pio/lldp/ttl_tlv' module Pio # LLDP frame parser and generator. class Lldp # LLDP frame class Frame < BinData::Record include Ethernet endian :big ethernet_header ether_type: Ethernet::Type::LLDP chassis_id_tlv :chassis_id port_id_tlv :port_id ttl_tlv :ttl, initial_value: 120 array(:optional_tlv, type: :optional_tlv, read_until: -> { element.end_of_lldpdu? }) def dpid chassis_id.to_i end def port_description get_tlv_field 4, 'port_description' end def system_name get_tlv_field 5, 'system_name' end def system_description get_tlv_field 6, 'system_description' end def system_capabilities get_tlv 7 end def management_address get_tlv_field 8, 'management_address' end def organizationally_specific get_tlv 127 end private def get_tlv(tlv_type) tlv = optional_tlv.find do |each| each['tlv_type'] == tlv_type end tlv['tlv_value'] if tlv end def get_tlv_field(tlv_type, name) tlv = get_tlv(tlv_type) tlv[name] if tlv end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
pio-0.30.2 | lib/pio/lldp/frame.rb |