packetgen 2.6.0 → 2.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (134) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.rubocop.yml +28 -0
  4. data/Rakefile +6 -6
  5. data/bin/pgconsole +6 -6
  6. data/lib/packetgen.rb +4 -3
  7. data/lib/packetgen/capture.rb +5 -7
  8. data/lib/packetgen/config.rb +3 -3
  9. data/lib/packetgen/deprecation.rb +17 -0
  10. data/lib/packetgen/header.rb +40 -38
  11. data/lib/packetgen/header/arp.rb +46 -31
  12. data/lib/packetgen/header/asn1_base.rb +8 -8
  13. data/lib/packetgen/header/base.rb +108 -36
  14. data/lib/packetgen/header/bootp.rb +28 -19
  15. data/lib/packetgen/header/crypto.rb +6 -8
  16. data/lib/packetgen/header/dhcp.rb +4 -5
  17. data/lib/packetgen/header/dhcp/option.rb +46 -34
  18. data/lib/packetgen/header/dhcp/options.rb +0 -1
  19. data/lib/packetgen/header/dhcpv6.rb +10 -10
  20. data/lib/packetgen/header/dhcpv6/duid.rb +2 -3
  21. data/lib/packetgen/header/dhcpv6/option.rb +16 -21
  22. data/lib/packetgen/header/dhcpv6/relay.rb +6 -4
  23. data/lib/packetgen/header/dns.rb +13 -11
  24. data/lib/packetgen/header/dns/name.rb +4 -6
  25. data/lib/packetgen/header/dns/opt.rb +31 -31
  26. data/lib/packetgen/header/dns/option.rb +0 -2
  27. data/lib/packetgen/header/dns/qdsection.rb +1 -2
  28. data/lib/packetgen/header/dns/question.rb +19 -13
  29. data/lib/packetgen/header/dns/rr.rb +11 -14
  30. data/lib/packetgen/header/dns/rrsection.rb +5 -7
  31. data/lib/packetgen/header/dot11.rb +45 -29
  32. data/lib/packetgen/header/dot11/control.rb +3 -5
  33. data/lib/packetgen/header/dot11/data.rb +34 -6
  34. data/lib/packetgen/header/dot11/element.rb +0 -1
  35. data/lib/packetgen/header/dot11/management.rb +9 -5
  36. data/lib/packetgen/header/dot11/sub_mngt.rb +13 -14
  37. data/lib/packetgen/header/dot1q.rb +2 -2
  38. data/lib/packetgen/header/dot1x.rb +3 -4
  39. data/lib/packetgen/header/eap.rb +62 -53
  40. data/lib/packetgen/header/eap/fast.rb +0 -1
  41. data/lib/packetgen/header/eap/md5.rb +1 -2
  42. data/lib/packetgen/header/eap/tls.rb +9 -10
  43. data/lib/packetgen/header/eap/ttls.rb +9 -10
  44. data/lib/packetgen/header/esp.rb +33 -33
  45. data/lib/packetgen/header/eth.rb +11 -8
  46. data/lib/packetgen/header/gre.rb +5 -6
  47. data/lib/packetgen/header/http/headers.rb +11 -14
  48. data/lib/packetgen/header/http/request.rb +20 -20
  49. data/lib/packetgen/header/http/response.rb +16 -18
  50. data/lib/packetgen/header/http/verbs.rb +5 -5
  51. data/lib/packetgen/header/icmp.rb +1 -3
  52. data/lib/packetgen/header/icmpv6.rb +1 -3
  53. data/lib/packetgen/header/igmp.rb +5 -6
  54. data/lib/packetgen/header/igmpv3.rb +5 -9
  55. data/lib/packetgen/header/igmpv3/group_record.rb +4 -5
  56. data/lib/packetgen/header/igmpv3/mq.rb +2 -2
  57. data/lib/packetgen/header/igmpv3/mr.rb +4 -3
  58. data/lib/packetgen/header/ike.rb +33 -8
  59. data/lib/packetgen/header/ike/auth.rb +4 -6
  60. data/lib/packetgen/header/ike/cert.rb +0 -2
  61. data/lib/packetgen/header/ike/certreq.rb +1 -3
  62. data/lib/packetgen/header/ike/id.rb +1 -3
  63. data/lib/packetgen/header/ike/ke.rb +0 -2
  64. data/lib/packetgen/header/ike/nonce.rb +0 -2
  65. data/lib/packetgen/header/ike/notify.rb +22 -24
  66. data/lib/packetgen/header/ike/payload.rb +198 -199
  67. data/lib/packetgen/header/ike/sa.rb +21 -30
  68. data/lib/packetgen/header/ike/sk.rb +16 -17
  69. data/lib/packetgen/header/ike/ts.rb +22 -24
  70. data/lib/packetgen/header/ike/vendor_id.rb +0 -2
  71. data/lib/packetgen/header/ip.rb +30 -23
  72. data/lib/packetgen/header/ip/addr.rb +5 -6
  73. data/lib/packetgen/header/ip/option.rb +11 -15
  74. data/lib/packetgen/header/ip/options.rb +1 -2
  75. data/lib/packetgen/header/ipv6.rb +27 -12
  76. data/lib/packetgen/header/ipv6/addr.rb +2 -2
  77. data/lib/packetgen/header/ipv6/extension.rb +1 -1
  78. data/lib/packetgen/header/ipv6/hop_by_hop.rb +11 -11
  79. data/lib/packetgen/header/llc.rb +4 -3
  80. data/lib/packetgen/header/mdns.rb +11 -5
  81. data/lib/packetgen/header/mld.rb +4 -4
  82. data/lib/packetgen/header/mldv2.rb +4 -3
  83. data/lib/packetgen/header/mldv2/mcast_address_record.rb +3 -4
  84. data/lib/packetgen/header/mldv2/mlq.rb +3 -4
  85. data/lib/packetgen/header/mldv2/mlr.rb +4 -3
  86. data/lib/packetgen/header/netbios.rb +18 -5
  87. data/lib/packetgen/header/ospfv2.rb +6 -7
  88. data/lib/packetgen/header/ospfv2/db_description.rb +3 -4
  89. data/lib/packetgen/header/ospfv2/hello.rb +2 -3
  90. data/lib/packetgen/header/ospfv2/ls_ack.rb +2 -3
  91. data/lib/packetgen/header/ospfv2/ls_request.rb +2 -3
  92. data/lib/packetgen/header/ospfv2/ls_update.rb +5 -6
  93. data/lib/packetgen/header/ospfv2/lsa.rb +13 -14
  94. data/lib/packetgen/header/ospfv2/lsa_header.rb +4 -5
  95. data/lib/packetgen/header/ospfv3.rb +3 -4
  96. data/lib/packetgen/header/ospfv3/db_description.rb +3 -5
  97. data/lib/packetgen/header/ospfv3/hello.rb +2 -3
  98. data/lib/packetgen/header/ospfv3/ipv6_prefix.rb +7 -8
  99. data/lib/packetgen/header/ospfv3/ls_ack.rb +2 -3
  100. data/lib/packetgen/header/ospfv3/ls_request.rb +2 -3
  101. data/lib/packetgen/header/ospfv3/ls_update.rb +5 -6
  102. data/lib/packetgen/header/ospfv3/lsa.rb +10 -11
  103. data/lib/packetgen/header/ospfv3/lsa_header.rb +3 -4
  104. data/lib/packetgen/header/snmp.rb +45 -32
  105. data/lib/packetgen/header/tcp.rb +13 -9
  106. data/lib/packetgen/header/tcp/option.rb +16 -11
  107. data/lib/packetgen/header/tcp/options.rb +3 -4
  108. data/lib/packetgen/header/tftp.rb +15 -17
  109. data/lib/packetgen/header/udp.rb +10 -4
  110. data/lib/packetgen/inspect.rb +7 -9
  111. data/lib/packetgen/packet.rb +44 -22
  112. data/lib/packetgen/pcapng.rb +1 -5
  113. data/lib/packetgen/pcapng/block.rb +17 -11
  114. data/lib/packetgen/pcapng/epb.rb +6 -11
  115. data/lib/packetgen/pcapng/file.rb +37 -44
  116. data/lib/packetgen/pcapng/idb.rb +17 -22
  117. data/lib/packetgen/pcapng/shb.rb +7 -10
  118. data/lib/packetgen/pcapng/spb.rb +21 -17
  119. data/lib/packetgen/pcapng/unknown_block.rb +17 -13
  120. data/lib/packetgen/proto.rb +1 -2
  121. data/lib/packetgen/types/array.rb +119 -34
  122. data/lib/packetgen/types/cstring.rb +1 -5
  123. data/lib/packetgen/types/enum.rb +8 -10
  124. data/lib/packetgen/types/fields.rb +34 -28
  125. data/lib/packetgen/types/int.rb +11 -13
  126. data/lib/packetgen/types/int_string.rb +6 -8
  127. data/lib/packetgen/types/oui.rb +3 -6
  128. data/lib/packetgen/types/string.rb +4 -6
  129. data/lib/packetgen/types/tlv.rb +11 -14
  130. data/lib/packetgen/utils.rb +15 -23
  131. data/lib/packetgen/utils/arp_spoofer.rb +12 -18
  132. data/lib/packetgen/version.rb +1 -1
  133. data/packetgen.gemspec +9 -8
  134. metadata +19 -17
@@ -8,7 +8,6 @@
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCP
11
-
12
11
  # Container class for DHCP Options
13
12
  #
14
13
  # == Add DHCP options to an +Options+ instance
@@ -7,8 +7,7 @@
7
7
 
8
8
  module PacketGen
9
9
  module Header
10
-
11
- # Dynamic Host Configuration Protocol for IPv6, {https://tools.ietf.org/html/rfc3315
10
+ # Dynamic Host Configuration Protocol for IPv6, {https://tools.ietf.org/html/rfc3315
12
11
  # RFC 3315}
13
12
  #
14
13
  # 0 1 2 3
@@ -41,13 +40,14 @@ module PacketGen
41
40
  # dhcpv6 = PacketGen::Header::DHCPv6.new(msg_type: 'SOLLICIT')
42
41
  # dhcpv6.options << { type: 'Preference', value: 1 }
43
42
  # @author Sylvain Daubert
44
- class DHCPv6 < Base;end
43
+ # @since 2.5.0
44
+ class DHCPv6 < Base; end
45
45
 
46
46
  require_relative 'dhcpv6/duid'
47
47
  require_relative 'dhcpv6/option'
48
48
  require_relative 'dhcpv6/options'
49
49
 
50
- class DHCPv6
50
+ class DHCPv6
51
51
  # DHCPv6 UDP client port
52
52
  UDP_CLIENT_PORT = 546
53
53
  # DHCPv6 UDP client port
@@ -65,9 +65,9 @@ module PacketGen
65
65
  'RELEASE' => 8,
66
66
  'DECLINE' => 9,
67
67
  'RECONFIGURE' => 10,
68
- 'INFORMATION-REQUEST' => 11
69
- }
70
-
68
+ 'INFORMATION-REQUEST' => 11
69
+ }.freeze
70
+
71
71
  # @!attribute msg_type
72
72
  # 8-bit message type
73
73
  # @return [Integer]
@@ -85,7 +85,7 @@ module PacketGen
85
85
  # @return [DHCPv6,DHCPv6::Relay]
86
86
  def read(str)
87
87
  msg_type = Types::Int8.new.read(str)
88
-
88
+
89
89
  case msg_type
90
90
  when 12, 13
91
91
  DHCPv6::Relay.new.read(str)
@@ -101,8 +101,8 @@ module PacketGen
101
101
  end
102
102
  end
103
103
 
104
- UDP.bind_header DHCPv6, sport: DHCPv6::UDP_CLIENT_PORT, dport: DHCPv6::UDP_SERVER_PORT
105
- UDP.bind_header DHCPv6, sport: DHCPv6::UDP_SERVER_PORT, dport: DHCPv6::UDP_CLIENT_PORT
104
+ UDP.bind DHCPv6, sport: DHCPv6::UDP_CLIENT_PORT, dport: DHCPv6::UDP_SERVER_PORT
105
+ UDP.bind DHCPv6, sport: DHCPv6::UDP_SERVER_PORT, dport: DHCPv6::UDP_CLIENT_PORT
106
106
  end
107
107
  end
108
108
 
@@ -11,12 +11,11 @@ module PacketGen
11
11
  # @abstract Base class for DUID (DHCP Unique ID)
12
12
  # @author Sylvain Daubert
13
13
  class DUID < Types::Fields
14
-
15
14
  TYPES = {
16
15
  'DUID-LLT' => 1,
17
16
  'DUID-EN' => 2,
18
17
  'DUID-LL' => 3
19
- }
18
+ }.freeze
20
19
 
21
20
  # @!attribute type
22
21
  # 16-bit DUID type
@@ -117,7 +116,7 @@ module PacketGen
117
116
  # Get human-readable DUID description
118
117
  # @return [String]
119
118
  def to_human
120
- "DUID_EN<%#x,%s>" % [en, identifier]
119
+ 'DUID_EN<%#x,%s>' % [en, identifier]
121
120
  end
122
121
  end
123
122
 
@@ -8,7 +8,6 @@
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCPv6
11
-
12
11
  # A DHCPv6 consists of:
13
12
  # * a {#type} ({Types::Int16}),
14
13
  # * a {#length} ({Types::Int16}),
@@ -18,7 +17,6 @@ module PacketGen
18
17
  # field to replace it by specific option field(s).
19
18
  # @author Sylvain Daubert
20
19
  class Option < Types::Fields
21
-
22
20
  # @!attribute type
23
21
  # 16-bit option type
24
22
  # @return [Integer]
@@ -31,7 +29,7 @@ module PacketGen
31
29
  # variable length option data.
32
30
  # @return [String]
33
31
  define_field :data, Types::String,
34
- builder: ->(h,t) { t.new(length_from: h[:length]) }
32
+ builder: ->(h, t) { t.new(length_from: h[:length]) }
35
33
 
36
34
  class << self
37
35
  # Get Option subclasses
@@ -41,7 +39,7 @@ module PacketGen
41
39
  @klasses = []
42
40
  DHCPv6.constants.each do |cst|
43
41
  klass = DHCPv6.const_get(cst)
44
- next unless klass.is_a?(Class) and klass < Option
42
+ next unless klass.is_a?(Class) && (klass < Option)
45
43
  @klasses[klass.new.type] = klass
46
44
  end
47
45
  @klasses
@@ -74,16 +72,13 @@ module PacketGen
74
72
  # Create an Option
75
73
  # @param [Hash] options
76
74
  def initialize(options={})
77
- if self.class.const_defined?(:TYPE) and options[:type].nil?
75
+ if self.class.const_defined?(:TYPE) && options[:type].nil?
78
76
  options[:type] = self.class.const_get(:TYPE)
79
77
  end
80
- if options[:data]
81
- options[:length] = options[:data].to_s.size
82
- end
78
+
79
+ options[:length] = options[:data].to_s.size if options[:data]
83
80
  super
84
- if options[:data].nil?
85
- self.length = self.sz - 4
86
- end
81
+ self.length = self.sz - 4 if options[:data].nil?
87
82
  end
88
83
 
89
84
  alias private_read read
@@ -122,7 +117,7 @@ module PacketGen
122
117
  # @return [String]
123
118
  def to_human
124
119
  str = "#{human_type}:".dup
125
- if respond_to? :human_data and human_data.size > 0
120
+ if respond_to?(:human_data) && !human_data.empty?
126
121
  str << human_data
127
122
  elsif !self[:data].nil?
128
123
  str << data.inspect
@@ -146,7 +141,7 @@ module PacketGen
146
141
  # @!attribute duid
147
142
  # @return [DUID]
148
143
  define_field :duid, DUID
149
-
144
+
150
145
  # Get human-readable data (DUID)
151
146
  # @return [String]
152
147
  def human_data
@@ -187,12 +182,12 @@ module PacketGen
187
182
  # options field
188
183
  # @return [String]
189
184
  define_field :options, Types::String,
190
- builder: ->(h,t) { t.new length_from: ->() { h[:length].to_i - 12 } }
185
+ builder: ->(h, t) { t.new length_from: -> { h[:length].to_i - 12 } }
191
186
 
192
187
  # Get human-readable data (IAID, T1 and T2)
193
188
  # @return [String]
194
189
  def human_data
195
- "%#x,%u,%u" % [iaid, t1, t2]
190
+ '%#x,%u,%u' % [iaid, t1, t2]
196
191
  end
197
192
  end
198
193
 
@@ -214,12 +209,12 @@ module PacketGen
214
209
  # options field
215
210
  # @return [String]
216
211
  define_field :options, Types::String,
217
- builder: ->(h,t) { t.new length_from: ->() { h[:length].to_i - 4 } }
212
+ builder: ->(h, t) { t.new length_from: -> { h[:length].to_i - 4 } }
218
213
 
219
214
  # Get human-readable data (IAID)
220
215
  # @return [String]
221
216
  def human_data
222
- "%#x" % iaid
217
+ '%#x' % iaid
223
218
  end
224
219
  end
225
220
 
@@ -249,7 +244,7 @@ module PacketGen
249
244
  # options field
250
245
  # @return [String]
251
246
  define_field :options, Types::String,
252
- builder: ->(h,t) { t.new length_from: ->() { h[:length].to_i - 24 } }
247
+ builder: ->(h, t) { t.new length_from: -> { h[:length].to_i - 24 } }
253
248
 
254
249
  # Get human-readable data (ipv6, preferred lifetime and valid lifetime)
255
250
  # @return [String]
@@ -295,7 +290,7 @@ module PacketGen
295
290
  self[:options].to_human
296
291
  end
297
292
  end
298
-
293
+
299
294
  # DHCPv6 Preference option
300
295
  # @author Sylvain Daubert
301
296
  class Preference < Option
@@ -317,7 +312,7 @@ module PacketGen
317
312
  value.to_s
318
313
  end
319
314
  end
320
-
315
+
321
316
  # DHCPv6 Elapsed Time option
322
317
  # @author Sylvain Daubert
323
318
  class ElapsedTime < Option
@@ -339,7 +334,7 @@ module PacketGen
339
334
  value.to_s
340
335
  end
341
336
  end
342
-
337
+
343
338
  # DHCPv6 Relay Message option
344
339
  # @author Sylvain Daubert
345
340
  class RelayMessage < Option
@@ -15,8 +15,8 @@ module PacketGen
15
15
  MESSAGE_TYPES = {
16
16
  'RELAY-FORW' => 12,
17
17
  'RELAY-REPL' => 13
18
- }
19
-
18
+ }.freeze
19
+
20
20
  # @!attribute msg_type
21
21
  # 8-bit message type
22
22
  # @return [Integer]
@@ -42,7 +42,9 @@ module PacketGen
42
42
  end
43
43
  end
44
44
 
45
- UDP.bind_header DHCPv6::Relay, sport: DHCPv6::UDP_CLIENT_PORT, dport: DHCPv6::UDP_SERVER_PORT
46
- UDP.bind_header DHCPv6::Relay, sport: DHCPv6::UDP_SERVER_PORT, dport: DHCPv6::UDP_CLIENT_PORT
45
+ UDP.bind DHCPv6::Relay, sport: DHCPv6::UDP_CLIENT_PORT
46
+ UDP.bind DHCPv6::Relay, dport: DHCPv6::UDP_SERVER_PORT
47
+ UDP.bind DHCPv6::Relay, sport: DHCPv6::UDP_SERVER_PORT
48
+ UDP.bind DHCPv6::Relay, dport: DHCPv6::UDP_CLIENT_PORT
47
49
  end
48
50
  end
@@ -8,7 +8,6 @@
8
8
 
9
9
  module PacketGen
10
10
  module Header
11
-
12
11
  # DNS: Domain Name Service
13
12
  #
14
13
  # A DNS packet consists of a header:
@@ -92,6 +91,7 @@ module PacketGen
92
91
  # # add an option to OPT record
93
92
  # dns.ar.last.options << PacketGen::Header::DNS::Option.new(code: 48, length: 2, data: "12")
94
93
  # @author Sylvain Daubert
94
+ # @since 1.3.0
95
95
  class DNS < Base
96
96
  end
97
97
  end
@@ -119,7 +119,7 @@ module PacketGen
119
119
  'status' => 2,
120
120
  'notify' => 4,
121
121
  'update' => 5
122
- }
122
+ }.freeze
123
123
 
124
124
  # DNS Response codes
125
125
  RCODES = {
@@ -130,7 +130,7 @@ module PacketGen
130
130
  'name-error' => 3,
131
131
  'not-implemented' => 4,
132
132
  'refused' => 5
133
- }
133
+ }.freeze
134
134
 
135
135
  # @!attribute id
136
136
  # @return [Integer]
@@ -152,16 +152,16 @@ module PacketGen
152
152
  define_field :arcount, Types::Int16
153
153
  # @!attribute qd
154
154
  # @return [QDSection]
155
- define_field :qd, QDSection, builder: ->(h,t) { t.new(h, h[:qdcount]) }
155
+ define_field :qd, QDSection, builder: ->(h, t) { t.new(h, h[:qdcount]) }
156
156
  # @!attribute an
157
157
  # @return [RRSection]
158
- define_field :an, RRSection, builder: ->(h,t) { t.new(h, h[:ancount]) }
158
+ define_field :an, RRSection, builder: ->(h, t) { t.new(h, h[:ancount]) }
159
159
  # @!attribute ns
160
160
  # @return [RRSection]
161
- define_field :ns, RRSection, builder: ->(h,t) { t.new(h, h[:nscount]) }
161
+ define_field :ns, RRSection, builder: ->(h, t) { t.new(h, h[:nscount]) }
162
162
  # @!attribute ar
163
163
  # @return [RRSection]
164
- define_field :ar, RRSection, builder: ->(h,t) { t.new(h, h[:arcount]) }
164
+ define_field :ar, RRSection, builder: ->(h, t) { t.new(h, h[:arcount]) }
165
165
 
166
166
  # @!attribute qr
167
167
  # @return [Boolean] query (+false+) or response (+true+)
@@ -253,8 +253,8 @@ module PacketGen
253
253
  str = Inspect.dashed_line(self.class, 2)
254
254
  fields.each do |attr|
255
255
  if attr == :u16
256
- flags = [:qr, :aa, :tc, :rd, :ra].select! { |attr| send "#{attr}?" }.
257
- map(&:to_s).join(',')
256
+ flags = %i[qr aa tc rd ra].select! { |flag| send "#{flag}?" }
257
+ .map(&:to_s).join(',')
258
258
  str << Inspect.shift_level(2)
259
259
  str << Inspect::FMT_ATTR % ['Flags', 'flags', flags]
260
260
  opcode = '%-10s (%u)' % [OPCODES.key(self.opcode), self.opcode]
@@ -272,7 +272,9 @@ module PacketGen
272
272
  end
273
273
 
274
274
  self.add_class DNS
275
- UDP.bind_header DNS, dport: DNS::UDP_PORT, sport: DNS::UDP_PORT
276
- TCP.bind_header DNS, dport: DNS::TCP_PORT, sport: DNS::TCP_PORT
275
+ UDP.bind DNS, dport: DNS::UDP_PORT
276
+ UDP.bind DNS, sport: DNS::UDP_PORT
277
+ TCP.bind DNS, dport: DNS::TCP_PORT
278
+ TCP.bind DNS, sport: DNS::TCP_PORT
277
279
  end
278
280
  end
@@ -8,11 +8,9 @@
8
8
  module PacketGen
9
9
  module Header
10
10
  class DNS
11
-
12
11
  # DNS Name, defined as a suite of labels. A label is of type {Types::IntString}.
13
12
  # @author Sylvain Daubert
14
13
  class Name < Types::Array
15
-
16
14
  # Mask to decode a pointer on another label
17
15
  POINTER_MASK = 0xc000
18
16
 
@@ -56,7 +54,7 @@ module PacketGen
56
54
 
57
55
  force_binary str
58
56
  start = 0
59
- while true
57
+ loop do
60
58
  index = str[start, 2].unpack('n').first
61
59
  if pointer? index
62
60
  # Pointer on another label
@@ -67,7 +65,7 @@ module PacketGen
67
65
  label.read(str[start..-1])
68
66
  start += label.sz
69
67
  self << label
70
- break if label.length == 0 or str[start..-1].length == 0
68
+ break if label.length.zero? || str[start..-1].length.zero?
71
69
  end
72
70
  end
73
71
  # force resolution of compressed names
@@ -101,7 +99,7 @@ module PacketGen
101
99
  def name_from_pointer
102
100
  return nil unless @pointer
103
101
  return @pointer_name if @pointer_name
104
-
102
+
105
103
  index = @pointer.unpack('n').first
106
104
  mask = ~POINTER_MASK & 0xffff
107
105
  ptr = index & mask
@@ -110,7 +108,7 @@ module PacketGen
110
108
  @pointer_name = name.read(self.dns.to_s[ptr..-1]).to_human
111
109
  end
112
110
 
113
- def record_from_hash(hsh)
111
+ def record_from_hash(_hsh)
114
112
  raise NotImplementedError, "not supported by #{self.class}"
115
113
  end
116
114
  end
@@ -4,12 +4,12 @@
4
4
  # This program is published under MIT license.
5
5
 
6
6
  # frozen_string_literal: true
7
+
7
8
  require_relative 'option'
8
9
 
9
10
  module PacketGen
10
11
  module Header
11
12
  class DNS
12
-
13
13
  # OPT pseudo-RR. Used by Extended DNS (EDNS(0), cf. RFC 6891).
14
14
  #
15
15
  # a OPT record may contain zero or more {Option options} in its {#rdata}.
@@ -43,68 +43,68 @@ module PacketGen
43
43
  self.do = options[:do] unless options[:do].nil?
44
44
  end
45
45
 
46
- # @overload ext_rcode=(v)
47
- # Setter for upper 8 bits of extended 12-bit RCODE
48
- # @param [Integer] v
49
- # @return [Integer]
46
+ # @overload ext_rcode=(value)
47
+ # Setter for upper 8 bits of extended 12-bit RCODE
48
+ # @param [Integer] value
49
+ # @return [Integer]
50
50
  # @overload ext_rcode
51
- # Getter for upper 8 bits of extended 12-bit RCODE
52
- # @return [Integer]
51
+ # Getter for upper 8 bits of extended 12-bit RCODE
52
+ # @return [Integer]
53
53
  # @return [Integer]
54
- def ext_rcode=(v=nil)
55
- if v
54
+ def ext_rcode=(value=nil)
55
+ if value
56
56
  self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(0xff << 24))
57
- self[:ttl].value |= (v & 0xff) << 24
57
+ self[:ttl].value |= (value & 0xff) << 24
58
58
  end
59
59
  (self[:ttl].to_i >> 24) & 0xff
60
60
  end
61
61
  alias ext_rcode ext_rcode=
62
62
 
63
- # @overload version=(v)
64
- # Setter EDNS version
65
- # @param [Integer] v
66
- # @return [Integer]
63
+ # @overload version=(ver)
64
+ # Setter EDNS version
65
+ # @param [Integer] ver
66
+ # @return [Integer]
67
67
  # @overload version
68
- # Getter for EDNS version
69
- # @return [Integer]
68
+ # Getter for EDNS version
69
+ # @return [Integer]
70
70
  # @return [Integer]
71
- def version=(v=nil)
72
- if v
71
+ def version=(ver=nil)
72
+ if ver
73
73
  self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(0xff << 16))
74
- self[:ttl].value |= (v & 0xff) << 16
74
+ self[:ttl].value |= (ver & 0xff) << 16
75
75
  end
76
76
  (self[:ttl].to_i >> 16) & 0xff
77
77
  end
78
78
  alias version version=
79
79
 
80
- # @overload do=(v)
80
+ # @overload do=(value)
81
81
  # Setter EDNS do
82
- # @param [Boolean] v
82
+ # @param [Boolean] value
83
83
  # @return [Boolean]
84
84
  # @overload do?
85
85
  # Getter for EDNS do
86
86
  # @return [Boolean]
87
87
  # @return [Boolean]
88
- def do=(v=nil)
89
- b = v ? 1 : 0
90
- unless v.nil?
88
+ def do=(value=nil)
89
+ b = value ? 1 : 0
90
+ unless value.nil?
91
91
  self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~(1 << 15))
92
92
  self[:ttl].value |= (b & 1) << 15
93
93
  end
94
- ((self[:ttl].to_i >> 15) & 1) == 1 ? true : false
94
+ ((self[:ttl].to_i >> 15) & 1) == 1
95
95
  end
96
- alias :do? :do=
96
+ alias do? do=
97
97
 
98
- # @overload z=(v)
99
- # @param [Integer] v
98
+ # @overload z=(value)
99
+ # @param [Integer] value
100
100
  # @return [Integer]
101
101
  # @overload z
102
102
  # @return [Integer]
103
103
  # @return [Integer]
104
- def z=(v=nil)
105
- if v
104
+ def z=(value=nil)
105
+ if value
106
106
  self[:ttl].value = self[:ttl].to_i & (0xffffffff & ~0x7fff)
107
- self[:ttl].value |= v & 0x7fff
107
+ self[:ttl].value |= value & 0x7fff
108
108
  end
109
109
  self[:ttl].to_i & 0x7fff
110
110
  end