class Dnsruby::Prefixes

Attributes

prefixes[RW]

Public Class Methods

create(arg) click to toggle source
# File lib/dnsruby/resource/APL.rb, line 56
def create(arg)
  case arg
  when Prefixes
    return arg
  when String
    prefixes = arg.split(/\s/).map { |prefix| Prefix.create(prefix) }
  when Array
    prefixes = arg.map { |prefix| Prefix.create(prefix) }
  else
    raise ArgumentError.new("APL format erro #{arg}")
  end
  Prefixes.new(prefixes)
end
create_from_message(msg) click to toggle source
# File lib/dnsruby/resource/APL.rb, line 69
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
new(prefixes) click to toggle source
# File lib/dnsruby/resource/APL.rb, line 93
def initialize(prefixes)
  @prefixes = prefixes
end

Public Instance Methods

to_s() click to toggle source
# File lib/dnsruby/resource/APL.rb, line 97
def to_s
  @prefixes.map(&:to_s).join(' ')
end