class DNSMessage::Question

Parse and build DNS questions

Attributes

add_to_hash[R]
klass[RW]
name[RW]
size[R]
type[RW]

Public Class Methods

new(name: nil, type: nil, klass: Class::IN) click to toggle source
# File lib/dnsmessage/question.rb, line 9
def initialize(name: nil, type: nil, klass: Class::IN)
  @name  = name
  @type  = type
  @klass = klass
end
parse(question, ptr, idx) click to toggle source
# File lib/dnsmessage/question.rb, line 15
def self.parse(question, ptr, idx)
  new.tap do |q|
    q.parse(question, ptr, idx)
  end
end

Public Instance Methods

build(ptr, idx) click to toggle source
# File lib/dnsmessage/question.rb, line 30
def build(ptr, idx)
  name_bytes, add = Name.build(@name, ptr)
  ptr.add(@name, idx) if add
  name_bytes + [type, klass].pack("n2")
end
parse(question, ptr, idx) click to toggle source
# File lib/dnsmessage/question.rb, line 21
def parse(question, ptr, idx)
  @name, @size, add = Name.parse(question[idx..], ptr)
  ptr.add(idx, @name) if add

  # take last four bytes
  @type, @klass = question[(idx + @size)..].unpack("n2")
  @size += 4
end