Module: OSPFv2::SubTlv

Class Method Summary collapse

Class Method Details

.factory(arg = {}) ⇒ Object



48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'lib/lsa/tlv/tlv_factory.rb', line 48

def self.factory(arg={})
  if arg.is_a?(Hash)
    return nil if arg[:tlv_type].nil?
    type = arg[:tlv_type]
  elsif arg.is_a?(String)
    type = arg.unpack('n')[0]
  else
    return
  end
  case type
  when 1 ; OSPFv2::LinkType_Tlv.new(arg)
  when 2 ; OSPFv2::LinkId_Tlv.new(arg)
  when 3 ; OSPFv2::LocalInterfaceIpAddress_Tlv.new(arg)
  when 4 ; OSPFv2::RemoteInterfaceIpAddress_Tlv.new(arg)
  when 5 ; OSPFv2::TrafficEngineeringMetric_Tlv.new(arg)
  when 6 ; OSPFv2::MaximumBandwidth_Tlv.new(arg)
  when 7 ; OSPFv2::MaximumReservableBandwidth_Tlv.new(arg)
  when 8 ; OSPFv2::UnreservedBandwidth_Tlv.new(arg)
  when 9 ; OSPFv2::Color_Tlv.new(arg)
  else
    raise
  end
end