Method: Net::DNS::Names#dn_comp

Defined in:
lib/net/dns/names.rb

#dn_comp(name, offset, compnames) ⇒ Object



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
# File 'lib/net/dns/names.rb', line 89

def dn_comp(name, offset, compnames)
  names = {}
  ptr = 0
  str = ""
  arr = names_array(name)
  arr.each do |entry|
    if compnames.key?(entry)
      ptr = 0xC000 | compnames[entry]
      str += [ptr].pack("n")
      offset += INT16SZ
      break
    else
      len = entry.unpack1("C")
      elem = entry[1..len]
      str += [len, elem].pack("Ca*")
      names.update(entry.to_s => offset)
      offset += len
    end
  end
  [str, offset, names]
end