logstash-codec-netflow 3.14.1 → 4.0.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/CHANGELOG.md +4 -0
- data/CONTRIBUTORS +1 -0
- data/lib/logstash/codecs/netflow.rb +26 -17
- data/lib/logstash/codecs/netflow/util.rb +103 -11
- data/logstash-codec-netflow.gemspec +1 -1
- data/spec/codecs/netflow9_test_fortigate_fortios_542_appid_data258_262.dat +0 -0
- data/spec/codecs/netflow9_test_fortigate_fortios_542_appid_tpl258-269.dat +0 -0
- data/spec/codecs/netflow_spec.rb +68 -10
- metadata +6 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d93e056a9df39efb7dff2feb887a661a4231313
|
|
4
|
+
data.tar.gz: f2e47894941ea4090de24a78028e4b6ec4efc3a6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a5cdc4f265bb0e91fcd0db9ce19e3b678bc04cb640a094742ba45b38b881526a563ba51342a982d377103eb55a9ee89cc455d03481cf4e409a6065166d2a772c
|
|
7
|
+
data.tar.gz: 64e22086639e4595a4b0a3fd988471d5c095b4370046df7d732d03531336bc47a60129c3a57fa267099660951e36f1b99603c04e1b02c431882086b0372b540d
|
data/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,7 @@
|
|
|
1
|
+
## 4.0.0
|
|
2
|
+
|
|
3
|
+
- Added support for RFC6759 decoding of application_id. **This is a breaking change to the way application_id is decoded. The format changes from e.g. 0:40567 to 0..12356..40567**
|
|
4
|
+
|
|
1
5
|
## 3.14.1
|
|
2
6
|
|
|
3
7
|
- Fixes exception when receiving Netflow 9 from H3C devices
|
data/CONTRIBUTORS
CHANGED
|
@@ -472,6 +472,29 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
|
472
472
|
field
|
|
473
473
|
end # def string_field
|
|
474
474
|
|
|
475
|
+
def get_rfc6759_application_id_class(field,length)
|
|
476
|
+
case length
|
|
477
|
+
when 2
|
|
478
|
+
field[0] = :Application_Id16
|
|
479
|
+
when 3
|
|
480
|
+
field[0] = :Application_Id24
|
|
481
|
+
when 4
|
|
482
|
+
field[0] = :Application_Id32
|
|
483
|
+
when 5
|
|
484
|
+
field[0] = :Application_Id40
|
|
485
|
+
when 7
|
|
486
|
+
field[0] = :Application_Id56
|
|
487
|
+
when 8
|
|
488
|
+
field[0] = :Application_Id64
|
|
489
|
+
when 9
|
|
490
|
+
field[0] = :Application_Id72
|
|
491
|
+
else
|
|
492
|
+
@logger.warn("Unsupported application_id length encountered, skipping", :field => field, :length => length)
|
|
493
|
+
nil
|
|
494
|
+
end
|
|
495
|
+
field[0]
|
|
496
|
+
end
|
|
497
|
+
|
|
475
498
|
def netflow_field_for(type, length, template_id)
|
|
476
499
|
if @netflow_fields.include?(type)
|
|
477
500
|
field = @netflow_fields[type].clone
|
|
@@ -509,23 +532,7 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
|
509
532
|
end
|
|
510
533
|
field[0] = uint_field(length, field[0])
|
|
511
534
|
when :application_id
|
|
512
|
-
|
|
513
|
-
when 2
|
|
514
|
-
field[0] = :Application_Id16
|
|
515
|
-
when 3
|
|
516
|
-
field[0] = :Application_Id24
|
|
517
|
-
when 4
|
|
518
|
-
field[0] = :Application_Id32
|
|
519
|
-
when 5
|
|
520
|
-
field[0] = :Application_Id40
|
|
521
|
-
when 8
|
|
522
|
-
field[0] = :Application_Id64
|
|
523
|
-
when 9
|
|
524
|
-
field[0] = :Application_Id72
|
|
525
|
-
else
|
|
526
|
-
@logger.warn("Unsupported application_id length encountered, skipping", :field => field, :length => length)
|
|
527
|
-
nil
|
|
528
|
-
end
|
|
535
|
+
field[0] = get_rfc6759_application_id_class(field,length)
|
|
529
536
|
when :skip
|
|
530
537
|
field += [nil, {:length => length.to_i}]
|
|
531
538
|
when :string
|
|
@@ -573,6 +580,8 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
|
573
580
|
field[0] = uint_field(length, 4)
|
|
574
581
|
when :uint16
|
|
575
582
|
field[0] = uint_field(length, 2)
|
|
583
|
+
when :application_id
|
|
584
|
+
field[0] = get_rfc6759_application_id_class(field,length)
|
|
576
585
|
end
|
|
577
586
|
|
|
578
587
|
@logger.debug("Definition complete", :field => field)
|
|
@@ -139,10 +139,11 @@ class Application_Id16 < BinData::Primitive
|
|
|
139
139
|
end
|
|
140
140
|
|
|
141
141
|
def get
|
|
142
|
-
self.classification_id.to_s + "
|
|
142
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
143
143
|
end
|
|
144
144
|
end
|
|
145
145
|
|
|
146
|
+
|
|
146
147
|
class Application_Id24 < BinData::Primitive
|
|
147
148
|
endian :big
|
|
148
149
|
uint8 :classification_id
|
|
@@ -156,10 +157,11 @@ class Application_Id24 < BinData::Primitive
|
|
|
156
157
|
end
|
|
157
158
|
|
|
158
159
|
def get
|
|
159
|
-
self.classification_id.to_s + "
|
|
160
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
160
161
|
end
|
|
161
162
|
end
|
|
162
163
|
|
|
164
|
+
|
|
163
165
|
class Application_Id32 < BinData::Primitive
|
|
164
166
|
endian :big
|
|
165
167
|
uint8 :classification_id
|
|
@@ -173,10 +175,11 @@ class Application_Id32 < BinData::Primitive
|
|
|
173
175
|
end
|
|
174
176
|
|
|
175
177
|
def get
|
|
176
|
-
self.classification_id.to_s + "
|
|
178
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
177
179
|
end
|
|
178
180
|
end
|
|
179
181
|
|
|
182
|
+
|
|
180
183
|
class Application_Id40 < BinData::Primitive
|
|
181
184
|
endian :big
|
|
182
185
|
uint8 :classification_id
|
|
@@ -190,41 +193,130 @@ class Application_Id40 < BinData::Primitive
|
|
|
190
193
|
end
|
|
191
194
|
|
|
192
195
|
def get
|
|
193
|
-
self.classification_id.to_s + "
|
|
196
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
197
|
+
end
|
|
198
|
+
end
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
class Appid56PanaL7Pen < BinData::Record
|
|
202
|
+
# RFC6759 chapter 4.1: PANA-L7-PEN
|
|
203
|
+
# This implements the "application ids MAY be encoded in a smaller number of bytes"
|
|
204
|
+
# Used in Application_Id56 choice statement
|
|
205
|
+
endian :big
|
|
206
|
+
uint32 :pen_id
|
|
207
|
+
uint16 :selector_id
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
|
|
211
|
+
class Application_Id56 < BinData::Primitive
|
|
212
|
+
endian :big
|
|
213
|
+
uint8 :classification_id
|
|
214
|
+
choice :selector_id, :selection => :classification_id do
|
|
215
|
+
# for classification engine id 20 we switch to Appid64PanaL7Pen to decode
|
|
216
|
+
appid56_pana_l7_pen 20
|
|
217
|
+
uint48 :default
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
def set(val)
|
|
221
|
+
unless val.nil?
|
|
222
|
+
self.classification_id=val.to_i<<48
|
|
223
|
+
if self.classification_id == 20
|
|
224
|
+
# classification engine id 20 (PANA_L7_PEN) contains a 4-byte PEN:
|
|
225
|
+
self.pen_id = val.to_i-((val.to_i>>48)<<48)>>16
|
|
226
|
+
self.selector_id = val.to_i-((val.to_i>>16)<<16)
|
|
227
|
+
else
|
|
228
|
+
self.selector_id = val.to_i-((val.to_i>>48)<<48)
|
|
229
|
+
end
|
|
230
|
+
end
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
def get
|
|
234
|
+
if self.classification_id == 20
|
|
235
|
+
self.classification_id.to_s + ".." + self.selector_id[:pen_id].to_s + ".." + self.selector_id[:selector_id].to_s
|
|
236
|
+
else
|
|
237
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
238
|
+
end
|
|
194
239
|
end
|
|
195
240
|
end
|
|
196
241
|
|
|
242
|
+
|
|
243
|
+
class Appid64PanaL7Pen < BinData::Record
|
|
244
|
+
# RFC6759 chapter 4.1: PANA-L7-PEN
|
|
245
|
+
# This implements the 3 bytes default selector id length
|
|
246
|
+
# Used in Application_Id64 choice statement
|
|
247
|
+
endian :big
|
|
248
|
+
uint32 :pen_id
|
|
249
|
+
uint24 :selector_id
|
|
250
|
+
end
|
|
251
|
+
|
|
197
252
|
class Application_Id64 < BinData::Primitive
|
|
198
253
|
endian :big
|
|
199
254
|
uint8 :classification_id
|
|
200
|
-
|
|
255
|
+
choice :selector_id, :selection => :classification_id do
|
|
256
|
+
# for classification engine id 20 we switch to Appid64PanaL7Pen to decode
|
|
257
|
+
appid64_pana_l7_pen 20
|
|
258
|
+
uint56 :default
|
|
259
|
+
end
|
|
201
260
|
|
|
202
261
|
def set(val)
|
|
203
262
|
unless val.nil?
|
|
204
263
|
self.classification_id=val.to_i<<56
|
|
205
|
-
self.
|
|
264
|
+
if self.classification_id == 20
|
|
265
|
+
# classification engine id 20 (PANA_L7_PEN) contains a 4-byte PEN:
|
|
266
|
+
self.pen_id = val.to_i-((val.to_i>>56)<<56)>>24
|
|
267
|
+
self.selector_id = val.to_i-((val.to_i>>24)<<24)
|
|
268
|
+
else
|
|
269
|
+
self.selector_id = val.to_i-((val.to_i>>56)<<56)
|
|
270
|
+
end
|
|
206
271
|
end
|
|
207
272
|
end
|
|
208
273
|
|
|
209
274
|
def get
|
|
210
|
-
self.classification_id
|
|
275
|
+
if self.classification_id == 20
|
|
276
|
+
self.classification_id.to_s + ".." + self.selector_id[:pen_id].to_s + ".." + self.selector_id[:selector_id].to_s
|
|
277
|
+
else
|
|
278
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
279
|
+
end
|
|
211
280
|
end
|
|
212
281
|
end
|
|
213
282
|
|
|
283
|
+
class Appid72PanaL7Pen < BinData::Record
|
|
284
|
+
# RFC6759 chapter 4.1: PANA-L7-PEN
|
|
285
|
+
# This implements the "application ids MAY be encoded with a larger length"
|
|
286
|
+
# Used in Application_Id72 choice statement
|
|
287
|
+
endian :big
|
|
288
|
+
uint32 :pen_id
|
|
289
|
+
uint32 :selector_id
|
|
290
|
+
end
|
|
291
|
+
|
|
214
292
|
class Application_Id72 < BinData::Primitive
|
|
215
293
|
endian :big
|
|
216
294
|
uint8 :classification_id
|
|
217
|
-
|
|
295
|
+
choice :selector_id, :selection => :classification_id do
|
|
296
|
+
# for classification engine id 20 we switch to Appid72PanaL7Pen to decode
|
|
297
|
+
appid72_pana_l7_pen 20
|
|
298
|
+
uint64 :default
|
|
299
|
+
end
|
|
218
300
|
|
|
219
301
|
def set(val)
|
|
220
302
|
unless val.nil?
|
|
221
|
-
self.classification_id=val.to_i<<64
|
|
222
|
-
self.
|
|
303
|
+
self.classification_id = val.to_i<<64
|
|
304
|
+
if self.classification_id == 20
|
|
305
|
+
# classification engine id 20 (PANA_L7_PEN) contains a 4-byte PEN:
|
|
306
|
+
self.pen_id = val.to_i-((val.to_i>>64)<<64)>>32
|
|
307
|
+
self.selector_id = val.to_i-((val.to_i>>32)<<32)
|
|
308
|
+
else
|
|
309
|
+
self.selector_id = val.to_i-((val.to_i>>64)<<64)
|
|
310
|
+
end
|
|
223
311
|
end
|
|
224
312
|
end
|
|
225
313
|
|
|
226
314
|
def get
|
|
227
|
-
self.classification_id
|
|
315
|
+
if self.classification_id == 20
|
|
316
|
+
self.classification_id.to_s + ".." + self.selector_id[:pen_id].to_s + ".." + self.selector_id[:selector_id].to_s
|
|
317
|
+
else
|
|
318
|
+
self.classification_id.to_s + ".." + self.selector_id.to_s
|
|
319
|
+
end
|
|
228
320
|
end
|
|
229
321
|
end
|
|
230
322
|
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Gem::Specification.new do |s|
|
|
2
2
|
|
|
3
3
|
s.name = 'logstash-codec-netflow'
|
|
4
|
-
s.version = '
|
|
4
|
+
s.version = '4.0.0'
|
|
5
5
|
s.licenses = ['Apache License (2.0)']
|
|
6
6
|
s.summary = "Reads Netflow v5, Netflow v9 and IPFIX data"
|
|
7
7
|
s.description = "This gem is a Logstash plugin required to be installed on top of the Logstash core pipeline using $LS_HOME/bin/logstash-plugin install gemname. This gem is not a stand-alone program"
|
data/spec/codecs/netflow_spec.rb
CHANGED
|
@@ -1024,8 +1024,6 @@ describe LogStash::Codecs::Netflow do
|
|
|
1024
1024
|
|
|
1025
1025
|
end
|
|
1026
1026
|
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
1027
|
context "Netflow 9 IE150 IE151" do
|
|
1030
1028
|
let(:data) do
|
|
1031
1029
|
packets = []
|
|
@@ -1103,6 +1101,66 @@ describe LogStash::Codecs::Netflow do
|
|
|
1103
1101
|
|
|
1104
1102
|
end
|
|
1105
1103
|
|
|
1104
|
+
|
|
1105
|
+
context "Netflow 9 Fortigate FortiOS 54x appid" do
|
|
1106
|
+
let(:data) do
|
|
1107
|
+
packets = []
|
|
1108
|
+
packets << IO.read(File.join(File.dirname(__FILE__), "netflow9_test_fortigate_fortios_542_appid_tpl258-269.dat"), :mode => "rb")
|
|
1109
|
+
packets << IO.read(File.join(File.dirname(__FILE__), "netflow9_test_fortigate_fortios_542_appid_data258_262.dat"), :mode => "rb")
|
|
1110
|
+
end
|
|
1111
|
+
|
|
1112
|
+
let(:json_events) do
|
|
1113
|
+
events = []
|
|
1114
|
+
events << <<-END
|
|
1115
|
+
{
|
|
1116
|
+
"netflow": {
|
|
1117
|
+
"output_snmp": 2,
|
|
1118
|
+
"forwarding_status": {
|
|
1119
|
+
"reason": 0,
|
|
1120
|
+
"status": 1
|
|
1121
|
+
},
|
|
1122
|
+
"xlate_src_port": 45380,
|
|
1123
|
+
"in_pkts": 6,
|
|
1124
|
+
"ipv4_dst_addr": "182.50.136.239",
|
|
1125
|
+
"first_switched": "2018-05-11T00:54:10.999Z",
|
|
1126
|
+
"flowset_id": 262,
|
|
1127
|
+
"l4_src_port": 45380,
|
|
1128
|
+
"xlate_dst_port": 0,
|
|
1129
|
+
"version": 9,
|
|
1130
|
+
"application_id": "20..12356..36660",
|
|
1131
|
+
"flow_seq_num": 350,
|
|
1132
|
+
"ipv4_src_addr": "192.168.100.151",
|
|
1133
|
+
"in_bytes": 748,
|
|
1134
|
+
"protocol": 6,
|
|
1135
|
+
"flow_end_reason": 3,
|
|
1136
|
+
"last_switched": "2018-05-11T00:54:10.999Z",
|
|
1137
|
+
"input_snmp": 8,
|
|
1138
|
+
"out_pkts": 6,
|
|
1139
|
+
"out_bytes": 748,
|
|
1140
|
+
"xlate_src_addr_ipv4": "10.0.0.250",
|
|
1141
|
+
"xlate_dst_addr_ipv4": "0.0.0.0",
|
|
1142
|
+
"l4_dst_port": 80
|
|
1143
|
+
},
|
|
1144
|
+
"@timestamp": "2018-05-11T00:54:11.000Z",
|
|
1145
|
+
"@version": "1"
|
|
1146
|
+
}
|
|
1147
|
+
END
|
|
1148
|
+
events.map{|event| event.gsub(/\s+/, "")}
|
|
1149
|
+
end
|
|
1150
|
+
|
|
1151
|
+
it "should decode raw data" do
|
|
1152
|
+
expect(decode.size).to eq(17)
|
|
1153
|
+
expect(decode[1].get("[netflow][application_id]")).to eq("20..12356..40568")
|
|
1154
|
+
expect(decode[2].get("[netflow][application_id]")).to eq("20..12356..40568")
|
|
1155
|
+
expect(decode[16].get("[netflow][application_id]")).to eq("20..12356..0")
|
|
1156
|
+
end
|
|
1157
|
+
|
|
1158
|
+
it "should serialize to json" do
|
|
1159
|
+
expect(JSON.parse(decode[0].to_json)).to eq(JSON.parse(json_events[0]))
|
|
1160
|
+
end
|
|
1161
|
+
|
|
1162
|
+
end
|
|
1163
|
+
|
|
1106
1164
|
context "IPFIX Nokia BRAS" do
|
|
1107
1165
|
let(:data) do
|
|
1108
1166
|
packets = []
|
|
@@ -1352,7 +1410,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
1352
1410
|
"l4_src_port": 0,
|
|
1353
1411
|
"nprobe_proto_name": "\u0000\u00c1\u0000\u0000\u0001\u00ac\u0010\u0000d\u00e4O\u00ef\u00ff\u00ff\u00fa\u0007",
|
|
1354
1412
|
"version": 9,
|
|
1355
|
-
"application_id": "0
|
|
1413
|
+
"application_id": "0..82",
|
|
1356
1414
|
"flow_seq_num": 2,
|
|
1357
1415
|
"ipv4_src_addr": "0.0.0.0",
|
|
1358
1416
|
"protocol": 0,
|
|
@@ -1372,7 +1430,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
1372
1430
|
it "should decode raw data" do
|
|
1373
1431
|
expect(decode.size).to eq(1)
|
|
1374
1432
|
expect(decode[0].get("[netflow][nprobe_proto]")).to eq(82)
|
|
1375
|
-
expect(decode[0].get("[netflow][application_id]")).to eq("0
|
|
1433
|
+
expect(decode[0].get("[netflow][application_id]")).to eq("0..82")
|
|
1376
1434
|
expect(decode[0].get("[netflow][in_bytes]")).to eq(82)
|
|
1377
1435
|
end
|
|
1378
1436
|
|
|
@@ -2291,7 +2349,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2291
2349
|
"application_description": "ARGUS",
|
|
2292
2350
|
"flowset_id": 260,
|
|
2293
2351
|
"version": 9,
|
|
2294
|
-
"application_id": "1
|
|
2352
|
+
"application_id": "1..13"
|
|
2295
2353
|
},
|
|
2296
2354
|
"@timestamp": "2017-02-14T11:09:59.000Z",
|
|
2297
2355
|
"@version": "1"
|
|
@@ -2302,7 +2360,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2302
2360
|
|
|
2303
2361
|
it "should decode raw data" do
|
|
2304
2362
|
expect(decode.size).to eq(15)
|
|
2305
|
-
expect(decode[14].get("[netflow][application_id]")).to eq("1
|
|
2363
|
+
expect(decode[14].get("[netflow][application_id]")).to eq("1..13")
|
|
2306
2364
|
expect(decode[14].get("[netflow][application_description]")).to eq("ARGUS")
|
|
2307
2365
|
end
|
|
2308
2366
|
|
|
@@ -2345,7 +2403,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2345
2403
|
"udp_dst_port": 161,
|
|
2346
2404
|
"src_mask": 0,
|
|
2347
2405
|
"version": 9,
|
|
2348
|
-
"application_id": "5
|
|
2406
|
+
"application_id": "5..38",
|
|
2349
2407
|
"flow_seq_num": 1509134,
|
|
2350
2408
|
"ipv4_src_addr": "10.10.172.60",
|
|
2351
2409
|
"in_src_mac": "00:18:19:9e:6c:01",
|
|
@@ -2362,7 +2420,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2362
2420
|
|
|
2363
2421
|
it "should decode raw data" do
|
|
2364
2422
|
expect(decode.size).to eq(5)
|
|
2365
|
-
expect(decode[4].get("[netflow][application_id]")).to eq("5
|
|
2423
|
+
expect(decode[4].get("[netflow][application_id]")).to eq("5..38")
|
|
2366
2424
|
end
|
|
2367
2425
|
|
|
2368
2426
|
it "should serialize to json" do
|
|
@@ -2388,7 +2446,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2388
2446
|
"staMacAddress": "34:02:86:75:c0:51",
|
|
2389
2447
|
"flowset_id": 261,
|
|
2390
2448
|
"version": 9,
|
|
2391
|
-
"application_id": "13
|
|
2449
|
+
"application_id": "13..431",
|
|
2392
2450
|
"flow_seq_num": 78,
|
|
2393
2451
|
"in_bytes": 80973880,
|
|
2394
2452
|
"postIpDiffServCodePoint": 0,
|
|
@@ -2405,7 +2463,7 @@ describe LogStash::Codecs::Netflow do
|
|
|
2405
2463
|
|
|
2406
2464
|
it "should decode raw data" do
|
|
2407
2465
|
expect(decode.size).to eq(19)
|
|
2408
|
-
expect(decode[18].get("[netflow][application_id]")).to eq("13
|
|
2466
|
+
expect(decode[18].get("[netflow][application_id]")).to eq("13..431")
|
|
2409
2467
|
end
|
|
2410
2468
|
|
|
2411
2469
|
it "should serialize to json" do
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: logstash-codec-netflow
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version:
|
|
4
|
+
version: 4.0.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Elastic
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2018-05-
|
|
11
|
+
date: 2018-05-31 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -138,6 +138,8 @@ files:
|
|
|
138
138
|
- spec/codecs/netflow9_test_fortigate_fortios_521_data256.dat
|
|
139
139
|
- spec/codecs/netflow9_test_fortigate_fortios_521_data257.dat
|
|
140
140
|
- spec/codecs/netflow9_test_fortigate_fortios_521_tpl.dat
|
|
141
|
+
- spec/codecs/netflow9_test_fortigate_fortios_542_appid_data258_262.dat
|
|
142
|
+
- spec/codecs/netflow9_test_fortigate_fortios_542_appid_tpl258-269.dat
|
|
141
143
|
- spec/codecs/netflow9_test_h3c_data3281.dat
|
|
142
144
|
- spec/codecs/netflow9_test_h3c_tpl3281.dat
|
|
143
145
|
- spec/codecs/netflow9_test_huawei_netstream_data.dat
|
|
@@ -254,6 +256,8 @@ test_files:
|
|
|
254
256
|
- spec/codecs/netflow9_test_fortigate_fortios_521_data256.dat
|
|
255
257
|
- spec/codecs/netflow9_test_fortigate_fortios_521_data257.dat
|
|
256
258
|
- spec/codecs/netflow9_test_fortigate_fortios_521_tpl.dat
|
|
259
|
+
- spec/codecs/netflow9_test_fortigate_fortios_542_appid_data258_262.dat
|
|
260
|
+
- spec/codecs/netflow9_test_fortigate_fortios_542_appid_tpl258-269.dat
|
|
257
261
|
- spec/codecs/netflow9_test_h3c_data3281.dat
|
|
258
262
|
- spec/codecs/netflow9_test_h3c_tpl3281.dat
|
|
259
263
|
- spec/codecs/netflow9_test_huawei_netstream_data.dat
|