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
|