def create_from_message(msg)
prefixes = []
while(msg.has_remaining?) do
negative = nil
af,prefix_length,flag = msg.get_unpack('nCC')
negative = '!' if 0x80 & flag == 0x80
address_length = flag & 0x7f
case(af)
when 1
addr = msg.get_bytes(address_length) + "\0" * (4 - address_length)
address = IPv4.new(addr)
when 2
addr = msg.get_bytes(address_length) + "\0" * (16 - address_length)
address = IPv6.new(addr)
else
raise ArgumentError.new("APL format error")
end
prefixes.push(Prefix.new(af, prefix_length, negative, address_length, address))
end
Prefixes.new(prefixes)
end