Class: Resolv::DNS::Message
Do not use. This class is for internal use only.
Relationships & Source Files | |
Namespace Children | |
Classes:
| |
Inherits: | Object |
Defined in: | lib/resolv.rb |
Class Method Summary
Instance Attribute Summary
Instance Method Summary
Constructor Details
.new(id = (@@identifier += 1) & 0xffff) ⇒ Message
Class Method Details
.decode(m)
[ GitHub ]# File 'lib/resolv.rb', line 1536
def Message.decode(m) o = Message.new(0) MessageDecoder.new(m) {|msg| id, flag, qdcount, ancount, nscount, arcount = msg.get_unpack('nnnnnn') o.id = id o.tc = (flag >> 9) & 1 o.rcode = flag & 15 return o unless o.tc.zero? o.qr = (flag >> 15) & 1 o.opcode = (flag >> 11) & 15 o.aa = (flag >> 10) & 1 o.rd = (flag >> 8) & 1 o.ra = (flag >> 7) & 1 (1..qdcount).each { name, typeclass = msg.get_question o.add_question(name, typeclass) } (1..ancount).each { name, ttl, data = msg.get_rr o.add_answer(name, ttl, data) } (1..nscount).each { name, ttl, data = msg.get_rr o. (name, ttl, data) } (1..arcount).each { name, ttl, data = msg.get_rr o.add_additional(name, ttl, data) } } return o end
Instance Attribute Details
#aa (rw)
[ GitHub ]#additional (readonly)
[ GitHub ]#answer (readonly)
[ GitHub ]# File 'lib/resolv.rb', line 1378
attr_reader :question, :answer, :, :additional
#authority (readonly)
[ GitHub ]# File 'lib/resolv.rb', line 1378
attr_reader :question, :answer, :, :additional
#id (rw)
[ GitHub ]#opcode (rw)
[ GitHub ]#qr (rw)
[ GitHub ]#question (readonly)
[ GitHub ]# File 'lib/resolv.rb', line 1378
attr_reader :question, :answer, :, :additional
#ra (rw)
[ GitHub ]#rcode (rw)
[ GitHub ]#rd (rw)
[ GitHub ]#tc (rw)
[ GitHub ]Instance Method Details
#==(other)
[ GitHub ]# File 'lib/resolv.rb', line 1380
def ==(other) return @id == other.id && @qr == other.qr && @opcode == other.opcode && @aa == other.aa && @tc == other.tc && @rd == other.rd && @ra == other.ra && @rcode == other.rcode && @question == other.question && @answer == other.answer && @authority == other. && @additional == other.additional end
#add_additional(name, ttl, data)
[ GitHub ]#add_answer(name, ttl, data)
[ GitHub ]#add_authority(name, ttl, data)
[ GitHub ]#add_question(name, typeclass)
[ GitHub ]#each_additional
[ GitHub ]# File 'lib/resolv.rb', line 1429
def each_additional @additional.each {|name, ttl, data| yield name, ttl, data } end
#each_answer
[ GitHub ]# File 'lib/resolv.rb', line 1409
def each_answer @answer.each {|name, ttl, data| yield name, ttl, data } end
#each_authority
[ GitHub ]# File 'lib/resolv.rb', line 1419
def @authority.each {|name, ttl, data| yield name, ttl, data } end
#each_question
[ GitHub ]# File 'lib/resolv.rb', line 1399
def each_question @question.each {|name, typeclass| yield name, typeclass } end
#each_resource
[ GitHub ]# File 'lib/resolv.rb', line 1435
def each_resource each_answer {|name, ttl, data| yield name, ttl, data} {|name, ttl, data| yield name, ttl, data} each_additional {|name, ttl, data| yield name, ttl, data} end
#encode
[ GitHub ]# File 'lib/resolv.rb', line 1441
def encode return MessageEncoder.new {|msg| msg.put_pack('nnnnnn', @id, (@qr & 1) << 15 | (@opcode & 15) << 11 | (@aa & 1) << 10 | (@tc & 1) << 9 | (@rd & 1) << 8 | (@ra & 1) << 7 | (@rcode & 15), @question.length, @answer.length, @authority.length, @additional.length) @question.each {|q| name, typeclass = q msg.put_name(name) msg.put_pack('nn', typeclass::TypeValue, typeclass::ClassValue) } [@answer, @authority, @additional].each {|rr| rr.each {|r| name, ttl, data = r msg.put_name(name) msg.put_pack('nnN', data.class::TypeValue, data.class::ClassValue, ttl) msg.put_length16 {data.encode_rdata(msg)} } } }.to_s end