Class: PacketGen::Header::DNS::OPT
- Defined in:
- lib/packetgen/header/dns/opt.rb
Overview
Constant Summary
Constants inherited from Question
Question::CLASSES, Question::TYPES
Instance Attribute Summary collapse
Attributes inherited from RR
Attributes inherited from Question
Instance Method Summary collapse
- #do=(value = nil) ⇒ Boolean (also: #do?)
- #ext_rcode=(value = nil) ⇒ Integer (also: #ext_rcode)
-
#human_flags ⇒ String
Get human-readable string for flags.
-
#initialize(dns, options = {}) ⇒ OPT
constructor
A new instance of OPT.
-
#to_human ⇒ String
Get human-readable string for this OPT.
- #version=(ver = nil) ⇒ Integer (also: #version)
- #z=(value = nil) ⇒ Integer (also: #z)
Methods inherited from RR
Methods inherited from Question
#human_rrclass, #human_type, #type?
Constructor Details
#initialize(dns, options = {}) ⇒ OPT
Returns a new instance of OPT.
40 41 42 43 44 45 46 47 48 |
# File 'lib/packetgen/header/dns/opt.rb', line 40 def initialize(dns, ={}) opts = { name: '.', rrclass: 512, type: 41 }.merge!() super(dns, opts) self.udp_size = [:udp_size] if [:udp_size] self.ext_rcode = [:ext_rcode] if [:ext_rcode] self.version = [:version] if [:version] self.do = [:do] unless [:do].nil? end |
Instance Attribute Details
#options ⇒ ArrayOfOptions
24 |
# File 'lib/packetgen/header/dns/opt.rb', line 24 define_attr_after :rdata, :options, ArrayOfOptions |
Instance Method Details
#do=(value) ⇒ Boolean #do? ⇒ Boolean Also known as: do?
92 93 94 95 96 97 98 99 |
# File 'lib/packetgen/header/dns/opt.rb', line 92 def do=(value=nil) b = value ? 1 : 0 unless value.nil? self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(1 << 15)) self[:ttl].value |= (b & 1) << 15 end self[:ttl].to_i.anybits?(0x8000) end |
#ext_rcode=(value) ⇒ Integer #ext_rcode ⇒ Integer Also known as: ext_rcode
58 59 60 61 62 63 64 |
# File 'lib/packetgen/header/dns/opt.rb', line 58 def ext_rcode=(value=nil) if value self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(0xff << 24)) self[:ttl].value |= (value & 0xff) << 24 end (self[:ttl].to_i >> 24) & 0xff end |
#human_flags ⇒ String
Get human-readable string for flags
124 125 126 |
# File 'lib/packetgen/header/dns/opt.rb', line 124 def human_flags do? ? 'do' : 'none' end |
#to_human ⇒ String
Get human-readable string for this OPT
130 131 132 133 134 |
# File 'lib/packetgen/header/dns/opt.rb', line 130 def to_human "#{name} #{human_type} UDPsize:#{udp_size} " \ "extRCODE:#{ext_rcode} EDNSversion:#{version} flags:#{human_flags} " \ "options:#{.empty? ? 'none' : .to_human}" end |
#version=(ver) ⇒ Integer #version ⇒ Integer Also known as: version
75 76 77 78 79 80 81 |
# File 'lib/packetgen/header/dns/opt.rb', line 75 def version=(ver=nil) if ver self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(0xff << 16)) self[:ttl].value |= (ver & 0xff) << 16 end (self[:ttl].to_i >> 16) & 0xff end |
#z=(value) ⇒ Integer #z ⇒ Integer Also known as: z
108 109 110 111 112 113 114 |
# File 'lib/packetgen/header/dns/opt.rb', line 108 def z=(value=nil) if value self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~0x7fff) self[:ttl].value |= value & 0x7fff end self[:ttl].to_i & 0x7fff end |