packetgen 3.1.1 → 3.1.6

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 (130) hide show
  1. checksums.yaml +4 -4
  2. data/bin/pgconsole +1 -0
  3. data/lib/packetgen.rb +33 -4
  4. data/lib/packetgen/capture.rb +51 -28
  5. data/lib/packetgen/config.rb +17 -11
  6. data/lib/packetgen/deprecation.rb +34 -8
  7. data/lib/packetgen/header.rb +2 -9
  8. data/lib/packetgen/header/arp.rb +2 -2
  9. data/lib/packetgen/header/asn1_base.rb +2 -2
  10. data/lib/packetgen/header/base.rb +70 -74
  11. data/lib/packetgen/header/bootp.rb +3 -3
  12. data/lib/packetgen/header/dhcp.rb +2 -2
  13. data/lib/packetgen/header/dhcp/option.rb +2 -2
  14. data/lib/packetgen/header/dhcp/options.rb +2 -2
  15. data/lib/packetgen/header/dhcpv6.rb +12 -12
  16. data/lib/packetgen/header/dhcpv6/duid.rb +11 -5
  17. data/lib/packetgen/header/dhcpv6/option.rb +8 -16
  18. data/lib/packetgen/header/dhcpv6/options.rb +2 -2
  19. data/lib/packetgen/header/dhcpv6/relay.rb +2 -2
  20. data/lib/packetgen/header/dns.rb +9 -9
  21. data/lib/packetgen/header/dns/name.rb +20 -9
  22. data/lib/packetgen/header/dns/opt.rb +2 -2
  23. data/lib/packetgen/header/dns/option.rb +2 -2
  24. data/lib/packetgen/header/dns/qdsection.rb +3 -3
  25. data/lib/packetgen/header/dns/question.rb +37 -35
  26. data/lib/packetgen/header/dns/rr.rb +3 -3
  27. data/lib/packetgen/header/dns/rrsection.rb +2 -2
  28. data/lib/packetgen/header/dot11.rb +30 -51
  29. data/lib/packetgen/header/dot11/control.rb +5 -5
  30. data/lib/packetgen/header/dot11/data.rb +11 -7
  31. data/lib/packetgen/header/dot11/element.rb +16 -16
  32. data/lib/packetgen/header/dot11/management.rb +2 -2
  33. data/lib/packetgen/header/dot11/sub_mngt.rb +2 -12
  34. data/lib/packetgen/header/dot1q.rb +2 -2
  35. data/lib/packetgen/header/dot1x.rb +7 -20
  36. data/lib/packetgen/header/eap.rb +30 -33
  37. data/lib/packetgen/header/eap/fast.rb +2 -2
  38. data/lib/packetgen/header/eap/md5.rb +2 -2
  39. data/lib/packetgen/header/eap/tls.rb +2 -2
  40. data/lib/packetgen/header/eap/ttls.rb +2 -2
  41. data/lib/packetgen/header/eth.rb +13 -11
  42. data/lib/packetgen/header/gre.rb +2 -2
  43. data/lib/packetgen/header/http.rb +2 -0
  44. data/lib/packetgen/header/http/headers.rb +6 -4
  45. data/lib/packetgen/header/http/request.rb +36 -21
  46. data/lib/packetgen/header/http/response.rb +7 -7
  47. data/lib/packetgen/header/http/verbs.rb +3 -3
  48. data/lib/packetgen/header/icmp.rb +2 -2
  49. data/lib/packetgen/header/icmpv6.rb +2 -2
  50. data/lib/packetgen/header/igmp.rb +4 -4
  51. data/lib/packetgen/header/igmpv3.rb +3 -3
  52. data/lib/packetgen/header/igmpv3/group_record.rb +8 -6
  53. data/lib/packetgen/header/igmpv3/mq.rb +2 -2
  54. data/lib/packetgen/header/igmpv3/mr.rb +2 -2
  55. data/lib/packetgen/header/ip.rb +30 -31
  56. data/lib/packetgen/header/ip/addr.rb +10 -3
  57. data/lib/packetgen/header/ip/option.rb +8 -10
  58. data/lib/packetgen/header/ip/options.rb +3 -5
  59. data/lib/packetgen/header/ipv6.rb +2 -2
  60. data/lib/packetgen/header/ipv6/addr.rb +9 -2
  61. data/lib/packetgen/header/ipv6/extension.rb +2 -2
  62. data/lib/packetgen/header/ipv6/hop_by_hop.rb +3 -3
  63. data/lib/packetgen/header/llc.rb +2 -2
  64. data/lib/packetgen/header/mdns.rb +2 -2
  65. data/lib/packetgen/header/mld.rb +2 -2
  66. data/lib/packetgen/header/mldv2.rb +2 -2
  67. data/lib/packetgen/header/mldv2/mcast_address_record.rb +4 -2
  68. data/lib/packetgen/header/mldv2/mlq.rb +2 -2
  69. data/lib/packetgen/header/mldv2/mlr.rb +2 -2
  70. data/lib/packetgen/header/ospfv2.rb +9 -9
  71. data/lib/packetgen/header/ospfv2/db_description.rb +2 -2
  72. data/lib/packetgen/header/ospfv2/hello.rb +2 -2
  73. data/lib/packetgen/header/ospfv2/ls_ack.rb +2 -2
  74. data/lib/packetgen/header/ospfv2/ls_request.rb +4 -2
  75. data/lib/packetgen/header/ospfv2/ls_update.rb +2 -2
  76. data/lib/packetgen/header/ospfv2/lsa.rb +9 -5
  77. data/lib/packetgen/header/ospfv2/lsa_header.rb +8 -7
  78. data/lib/packetgen/header/ospfv3.rb +2 -2
  79. data/lib/packetgen/header/ospfv3/db_description.rb +2 -2
  80. data/lib/packetgen/header/ospfv3/hello.rb +2 -2
  81. data/lib/packetgen/header/ospfv3/ipv6_prefix.rb +4 -2
  82. data/lib/packetgen/header/ospfv3/ls_ack.rb +2 -2
  83. data/lib/packetgen/header/ospfv3/ls_request.rb +4 -2
  84. data/lib/packetgen/header/ospfv3/ls_update.rb +2 -2
  85. data/lib/packetgen/header/ospfv3/lsa.rb +5 -5
  86. data/lib/packetgen/header/ospfv3/lsa_header.rb +9 -8
  87. data/lib/packetgen/header/snmp.rb +33 -29
  88. data/lib/packetgen/header/tcp.rb +4 -23
  89. data/lib/packetgen/header/tcp/option.rb +11 -11
  90. data/lib/packetgen/header/tcp/options.rb +2 -2
  91. data/lib/packetgen/header/tftp.rb +6 -6
  92. data/lib/packetgen/header/udp.rb +3 -3
  93. data/lib/packetgen/headerable.rb +5 -4
  94. data/lib/packetgen/inject.rb +23 -0
  95. data/lib/packetgen/inspect.rb +23 -20
  96. data/lib/packetgen/packet.rb +96 -53
  97. data/lib/packetgen/pcap.rb +29 -0
  98. data/lib/packetgen/pcapng.rb +13 -13
  99. data/lib/packetgen/pcapng/block.rb +26 -13
  100. data/lib/packetgen/pcapng/epb.rb +25 -22
  101. data/lib/packetgen/pcapng/file.rb +260 -138
  102. data/lib/packetgen/pcapng/idb.rb +36 -38
  103. data/lib/packetgen/pcapng/shb.rb +51 -53
  104. data/lib/packetgen/pcapng/spb.rb +19 -19
  105. data/lib/packetgen/pcapng/unknown_block.rb +5 -13
  106. data/lib/packetgen/pcaprub_wrapper.rb +81 -0
  107. data/lib/packetgen/proto.rb +2 -2
  108. data/lib/packetgen/types.rb +3 -0
  109. data/lib/packetgen/types/abstract_tlv.rb +28 -8
  110. data/lib/packetgen/types/array.rb +22 -15
  111. data/lib/packetgen/types/cstring.rb +40 -16
  112. data/lib/packetgen/types/enum.rb +8 -3
  113. data/lib/packetgen/types/fieldable.rb +65 -0
  114. data/lib/packetgen/types/fields.rb +182 -117
  115. data/lib/packetgen/types/int.rb +18 -6
  116. data/lib/packetgen/types/int_string.rb +10 -2
  117. data/lib/packetgen/types/length_from.rb +20 -12
  118. data/lib/packetgen/types/oui.rb +4 -2
  119. data/lib/packetgen/types/string.rb +46 -8
  120. data/lib/packetgen/types/tlv.rb +4 -2
  121. data/lib/packetgen/utils.rb +4 -4
  122. data/lib/packetgen/utils/arp_spoofer.rb +2 -2
  123. data/lib/packetgen/version.rb +3 -3
  124. metadata +35 -50
  125. data/.gitignore +0 -13
  126. data/.rubocop.yml +0 -28
  127. data/.travis.yml +0 -17
  128. data/Gemfile +0 -4
  129. data/Rakefile +0 -21
  130. data/packetgen.gemspec +0 -36
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  # Bootstrap Protocol, {https://tools.ietf.org/html/rfc951
@@ -45,7 +45,7 @@ module PacketGen
45
45
  # DHCP opcodes
46
46
  OPCODES = {
47
47
  'BOOTREQUEST' => 1,
48
- 'BOOTREPLY' => 2
48
+ 'BOOTREPLY' => 2
49
49
  }.freeze
50
50
 
51
51
  # @!attribute op
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  # Dynamic Host Configuration Protocol, {https://tools.ietf.org/html/rfc2131
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCP
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCP
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  # Dynamic Host Configuration Protocol for IPv6, {https://tools.ietf.org/html/rfc3315
@@ -55,16 +55,16 @@ module PacketGen
55
55
 
56
56
  # DHCPv6 message types
57
57
  MESSAGE_TYPES = {
58
- 'SOLLICIT' => 1,
59
- 'ADVERTISE' => 2,
60
- 'REQUEST' => 3,
61
- 'CONFIRM' => 4,
62
- 'RENEW' => 5,
63
- 'REBIND' => 6,
64
- 'REPLY' => 7,
65
- 'RELEASE' => 8,
66
- 'DECLINE' => 9,
67
- 'RECONFIGURE' => 10,
58
+ 'SOLLICIT' => 1,
59
+ 'ADVERTISE' => 2,
60
+ 'REQUEST' => 3,
61
+ 'CONFIRM' => 4,
62
+ 'RENEW' => 5,
63
+ 'REBIND' => 6,
64
+ 'REPLY' => 7,
65
+ 'RELEASE' => 8,
66
+ 'DECLINE' => 9,
67
+ 'RECONFIGURE' => 10,
68
68
  'INFORMATION-REQUEST' => 11
69
69
  }.freeze
70
70
 
@@ -1,20 +1,22 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCPv6
11
11
  # @abstract Base class for DUID (DHCP Unique ID)
12
12
  # @author Sylvain Daubert
13
13
  class DUID < Types::Fields
14
+ include Types::Fieldable
15
+
14
16
  TYPES = {
15
17
  'DUID-LLT' => 1,
16
- 'DUID-EN' => 2,
17
- 'DUID-LL' => 3
18
+ 'DUID-EN' => 2,
19
+ 'DUID-LL' => 3
18
20
  }.freeze
19
21
 
20
22
  # @!attribute type
@@ -34,7 +36,7 @@ module PacketGen
34
36
  # @param [String] str
35
37
  # @return [DUID]
36
38
  def read(str)
37
- if self.class == DUID
39
+ if self.instance_of?(DUID)
38
40
  super
39
41
  case type
40
42
  when 1
@@ -58,6 +60,8 @@ module PacketGen
58
60
  end
59
61
  end
60
62
 
63
+ # rubocop:disable Naming/ClassAndModuleCamelCase
64
+
61
65
  # DUID Based on Link-layer Address Plus Time
62
66
  # @author Sylvain Daubert
63
67
  class DUID_LLT < DUID
@@ -140,3 +144,5 @@ module PacketGen
140
144
  end
141
145
  end
142
146
  end
147
+
148
+ # rubocop:enable Naming/ClassAndModuleCamelCase
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCPv6
@@ -17,6 +17,8 @@ module PacketGen
17
17
  # field to replace it by specific option field(s).
18
18
  # @author Sylvain Daubert
19
19
  class Option < Types::Fields
20
+ include Types::Fieldable
21
+
20
22
  # @!attribute type
21
23
  # 16-bit option type
22
24
  # @return [Integer]
@@ -55,7 +57,7 @@ module PacketGen
55
57
  case options[:type]
56
58
  when Integer
57
59
  klass = Option.subclasses[options[:type]]
58
- klass.new(options) if klass
60
+ klass&.new(options)
59
61
  when String
60
62
  if DHCPv6.const_defined?(options[:type])
61
63
  klass = DHCPv6.const_get(options[:type])
@@ -85,7 +87,7 @@ module PacketGen
85
87
  # Get human-readable {#type}
86
88
  # @return [String]
87
89
  def human_type
88
- if self.class == Option
90
+ if self.instance_of?(Option)
89
91
  "option#{type}"
90
92
  else
91
93
  self.class.to_s.sub(/.*::/, '')
@@ -95,7 +97,7 @@ module PacketGen
95
97
  # Get a human-readable string for this option
96
98
  # @return [String]
97
99
  def to_human
98
- str = "#{human_type}:".dup
100
+ str = +"#{human_type}:"
99
101
  if respond_to?(:human_data) && !human_data.empty?
100
102
  str << human_data
101
103
  elsif !self[:data].nil?
@@ -230,17 +232,7 @@ module PacketGen
230
232
 
231
233
  # @!attribute options
232
234
  # @return [RequestedOptions]
233
- define_field :options, RequestedOptions
234
-
235
- # Populate object from +str+
236
- # @param [String] str
237
- # @return [self]
238
- def read(str)
239
- self[:type].read str[0, 2]
240
- self[:length].read str[2, 2]
241
- self[:options].read str[4, self.length]
242
- self
243
- end
235
+ define_field :options, RequestedOptions, builder: ->(h, t) { t.new(length_from: h[:length]) }
244
236
 
245
237
  # Get human-readable data
246
238
  # @return [String]
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCPv6
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DHCPv6
@@ -1,11 +1,11 @@
1
1
  # coding: utf-8
2
+ # frozen_string_literal: true
3
+
2
4
  # This file is part of PacketGen
3
5
  # See https://github.com/sdaubert/packetgen for more informations
4
6
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
5
7
  # This program is published under MIT license.
6
8
 
7
- # frozen_string_literal: true
8
-
9
9
  module PacketGen
10
10
  module Header
11
11
  # DNS: Domain Name Service
@@ -120,7 +120,7 @@ module PacketGen
120
120
 
121
121
  # DNS opcodes
122
122
  OPCODES = {
123
- 'query' => 0,
123
+ 'query' => 0,
124
124
  'iquery' => 1,
125
125
  'status' => 2,
126
126
  'notify' => 4,
@@ -129,13 +129,13 @@ module PacketGen
129
129
 
130
130
  # DNS Response codes
131
131
  RCODES = {
132
- 'ok' => 0,
133
- 'no-error' => 0,
134
- 'format-error' => 1,
135
- 'server-failure' => 2,
136
- 'name-error' => 3,
132
+ 'ok' => 0,
133
+ 'no-error' => 0,
134
+ 'format-error' => 1,
135
+ 'server-failure' => 2,
136
+ 'name-error' => 3,
137
137
  'not-implemented' => 4,
138
- 'refused' => 5
138
+ 'refused' => 5
139
139
  }.freeze
140
140
 
141
141
  # @!attribute id
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DNS
@@ -43,28 +43,32 @@ module PacketGen
43
43
  self << Types::IntString.new
44
44
  end
45
45
 
46
+ # Clear name
47
+ # @return [void]
48
+ def clear
49
+ super
50
+ @pointer = nil
51
+ @pointer_name = nil
52
+ end
53
+
46
54
  # Read a sequence of label from a string
47
55
  # @param [String] str binary string
48
56
  # @return [Name] self
49
57
  def read(str)
50
- @pointer = nil
51
- @pointer_name = nil
52
58
  clear
53
59
  return self if str.nil?
54
60
 
55
61
  PacketGen.force_binary str
56
62
  start = 0
57
63
  loop do
58
- index = str[start, 2].unpack('n').first
64
+ index = str[start, 2].unpack1('n')
59
65
  if pointer? index
60
66
  # Pointer on another label
61
67
  @pointer = str[start, 2]
62
68
  break
63
69
  else
64
- label = Types::IntString.new
65
- label.read(str[start..-1])
70
+ label = add_label_from(str[start..-1])
66
71
  start += label.sz
67
- self << label
68
72
  break if label.length.zero? || str[start..-1].length.zero?
69
73
  end
70
74
  end
@@ -101,7 +105,7 @@ module PacketGen
101
105
  return nil unless @pointer
102
106
  return @pointer_name if @pointer_name
103
107
 
104
- index = @pointer.unpack('n').first
108
+ index = @pointer.unpack1('n')
105
109
  mask = ~POINTER_MASK & 0xffff
106
110
  ptr = index & mask
107
111
  name = Name.new
@@ -112,6 +116,13 @@ module PacketGen
112
116
  def record_from_hash(_hsh)
113
117
  raise NotImplementedError, "not supported by #{self.class}"
114
118
  end
119
+
120
+ def add_label_from(str)
121
+ label = Types::IntString.new
122
+ label.read(str)
123
+ self << label
124
+ label
125
+ end
115
126
  end
116
127
  end
117
128
  end
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  require_relative 'option'
9
9
 
10
10
  module PacketGen
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DNS
@@ -1,10 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DNS
@@ -35,7 +35,7 @@ module PacketGen
35
35
  while !str.empty? && (self.size < @counter.to_i)
36
36
  question = Question.new(@dns).read(str)
37
37
  str.slice!(0, question.sz)
38
- self.push question
38
+ push question
39
39
  end
40
40
  self
41
41
  end
@@ -1,56 +1,58 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # This file is part of PacketGen
2
4
  # See https://github.com/sdaubert/packetgen for more informations
3
5
  # Copyright (C) 2016 Sylvain Daubert <sylvain.daubert@laposte.net>
4
6
  # This program is published under MIT license.
5
7
 
6
- # frozen_string_literal: true
7
-
8
8
  module PacketGen
9
9
  module Header
10
10
  class DNS
11
11
  # DNS Question
12
12
  # @author Sylvain Daubert
13
13
  class Question < Types::Fields
14
+ include Types::Fieldable
15
+
14
16
  # Ressource Record types
15
17
  TYPES = {
16
- 'A' => 1,
17
- 'NS' => 2,
18
- 'MD' => 3,
19
- 'MF' => 4,
20
- 'CNAME' => 5,
21
- 'SOA' => 6,
22
- 'MB' => 7,
23
- 'MG' => 8,
24
- 'MR' => 9,
25
- 'NULL' => 10,
26
- 'WKS' => 11,
27
- 'PTR' => 12,
28
- 'HINFO' => 13,
29
- 'MINFO' => 14,
30
- 'MX' => 15,
31
- 'TXT' => 16,
32
- 'AAAA' => 28,
33
- 'SRV' => 33,
34
- 'NAPTR' => 35,
35
- 'KX' => 36,
36
- 'CERT' => 37,
37
- 'OPT' => 41,
38
- 'DS' => 43,
39
- 'RRSIG' => 46,
40
- 'NSEC' => 47,
41
- 'DNSKEY' => 48,
42
- 'TKEY' => 249,
43
- 'TSIG' => 250,
44
- '*' => 255
18
+ 'A' => 1,
19
+ 'NS' => 2,
20
+ 'MD' => 3,
21
+ 'MF' => 4,
22
+ 'CNAME' => 5,
23
+ 'SOA' => 6,
24
+ 'MB' => 7,
25
+ 'MG' => 8,
26
+ 'MR' => 9,
27
+ 'NULL' => 10,
28
+ 'WKS' => 11,
29
+ 'PTR' => 12,
30
+ 'HINFO' => 13,
31
+ 'MINFO' => 14,
32
+ 'MX' => 15,
33
+ 'TXT' => 16,
34
+ 'AAAA' => 28,
35
+ 'SRV' => 33,
36
+ 'NAPTR' => 35,
37
+ 'KX' => 36,
38
+ 'CERT' => 37,
39
+ 'OPT' => 41,
40
+ 'DS' => 43,
41
+ 'RRSIG' => 46,
42
+ 'NSEC' => 47,
43
+ 'DNSKEY' => 48,
44
+ 'TKEY' => 249,
45
+ 'TSIG' => 250,
46
+ '*' => 255
45
47
  }.freeze
46
48
 
47
49
  # Ressource Record classes
48
50
  CLASSES = {
49
- 'IN' => 1,
50
- 'CH' => 3,
51
- 'HS' => 4,
51
+ 'IN' => 1,
52
+ 'CH' => 3,
53
+ 'HS' => 4,
52
54
  'NONE' => 254,
53
- '*' => 255
55
+ '*' => 255
54
56
  }.freeze
55
57
 
56
58
  # @!attribute name