packetgen 2.3.0 → 2.4.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.
- checksums.yaml +4 -4
- data/.travis.yml +1 -0
- data/README.md +5 -1
- data/lib/packetgen/header.rb +4 -0
- data/lib/packetgen/header/icmpv6.rb +0 -1
- data/lib/packetgen/header/igmp.rb +126 -0
- data/lib/packetgen/header/igmpv3.rb +150 -0
- data/lib/packetgen/header/igmpv3/group_record.rb +98 -0
- data/lib/packetgen/header/igmpv3/mq.rb +96 -0
- data/lib/packetgen/header/igmpv3/mr.rb +65 -0
- data/lib/packetgen/header/ip.rb +40 -70
- data/lib/packetgen/header/ip/addr.rb +58 -0
- data/lib/packetgen/header/ip/option.rb +194 -0
- data/lib/packetgen/header/ip/options.rb +53 -0
- data/lib/packetgen/header/ipv6.rb +24 -69
- data/lib/packetgen/header/ipv6/addr.rb +96 -0
- data/lib/packetgen/header/ipv6/extension.rb +65 -0
- data/lib/packetgen/header/ipv6/hop_by_hop.rb +132 -0
- data/lib/packetgen/header/mld.rb +100 -0
- data/lib/packetgen/header/mldv2.rb +50 -0
- data/lib/packetgen/header/mldv2/mcast_address_record.rb +103 -0
- data/lib/packetgen/header/mldv2/mlq.rb +144 -0
- data/lib/packetgen/header/mldv2/mlr.rb +65 -0
- data/lib/packetgen/packet.rb +18 -0
- data/lib/packetgen/types/array.rb +1 -0
- data/lib/packetgen/types/string.rb +14 -13
- data/lib/packetgen/version.rb +1 -1
- metadata +18 -2
data/lib/packetgen/packet.rb
CHANGED
@@ -148,6 +148,24 @@ module PacketGen
|
|
148
148
|
self
|
149
149
|
end
|
150
150
|
|
151
|
+
# Insert a header in packet
|
152
|
+
# @param [Header] prev header after which insert new one
|
153
|
+
# @param [String] protocol protocol to insert
|
154
|
+
# @param [Hash] options protocol specific options
|
155
|
+
# @return [self]
|
156
|
+
# @raise [ArgumentError] unknown protocol
|
157
|
+
def insert(prev, protocol, options={})
|
158
|
+
klass = check_protocol(protocol)
|
159
|
+
|
160
|
+
nxt = prev.body
|
161
|
+
header = klass.new(options)
|
162
|
+
add_header header, previous_header: prev
|
163
|
+
idx = @headers.index(prev) + 1
|
164
|
+
@headers[idx, 0] = header
|
165
|
+
header[:body] = nxt
|
166
|
+
self
|
167
|
+
end
|
168
|
+
|
151
169
|
# Check if a protocol header is embedded in packet
|
152
170
|
# @return [Boolean]
|
153
171
|
# @raise [ArgumentError] unknown protocol
|
@@ -26,19 +26,20 @@ module PacketGen
|
|
26
26
|
# @return [String] self
|
27
27
|
def read(str)
|
28
28
|
s = str.to_s
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
29
|
+
str_end = case @length_from
|
30
|
+
when Types::Int
|
31
|
+
str_end = @length_from.to_i
|
32
|
+
when Proc
|
33
|
+
str_end = @length_from.call
|
34
|
+
else
|
35
|
+
if @static_length.is_a? Integer
|
36
|
+
str_end = @static_length
|
37
|
+
else
|
38
|
+
str_end = s.size
|
39
|
+
end
|
40
|
+
end
|
41
|
+
str_end = 0 if str_end < 0
|
42
|
+
self.replace(s[0, str_end])
|
42
43
|
self
|
43
44
|
end
|
44
45
|
|
data/lib/packetgen/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: packetgen
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sylvain Daubert
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-02-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pcaprub
|
@@ -185,6 +185,11 @@ files:
|
|
185
185
|
- lib/packetgen/header/http/response.rb
|
186
186
|
- lib/packetgen/header/icmp.rb
|
187
187
|
- lib/packetgen/header/icmpv6.rb
|
188
|
+
- lib/packetgen/header/igmp.rb
|
189
|
+
- lib/packetgen/header/igmpv3.rb
|
190
|
+
- lib/packetgen/header/igmpv3/group_record.rb
|
191
|
+
- lib/packetgen/header/igmpv3/mq.rb
|
192
|
+
- lib/packetgen/header/igmpv3/mr.rb
|
188
193
|
- lib/packetgen/header/ike.rb
|
189
194
|
- lib/packetgen/header/ike/auth.rb
|
190
195
|
- lib/packetgen/header/ike/cert.rb
|
@@ -199,8 +204,19 @@ files:
|
|
199
204
|
- lib/packetgen/header/ike/ts.rb
|
200
205
|
- lib/packetgen/header/ike/vendor_id.rb
|
201
206
|
- lib/packetgen/header/ip.rb
|
207
|
+
- lib/packetgen/header/ip/addr.rb
|
208
|
+
- lib/packetgen/header/ip/option.rb
|
209
|
+
- lib/packetgen/header/ip/options.rb
|
202
210
|
- lib/packetgen/header/ipv6.rb
|
211
|
+
- lib/packetgen/header/ipv6/addr.rb
|
212
|
+
- lib/packetgen/header/ipv6/extension.rb
|
213
|
+
- lib/packetgen/header/ipv6/hop_by_hop.rb
|
203
214
|
- lib/packetgen/header/llc.rb
|
215
|
+
- lib/packetgen/header/mld.rb
|
216
|
+
- lib/packetgen/header/mldv2.rb
|
217
|
+
- lib/packetgen/header/mldv2/mcast_address_record.rb
|
218
|
+
- lib/packetgen/header/mldv2/mlq.rb
|
219
|
+
- lib/packetgen/header/mldv2/mlr.rb
|
204
220
|
- lib/packetgen/header/snmp.rb
|
205
221
|
- lib/packetgen/header/tcp.rb
|
206
222
|
- lib/packetgen/header/tcp/option.rb
|