logstash-codec-netflow 3.1.4 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/CONTRIBUTORS +1 -0
- data/lib/logstash/codecs/netflow.rb +112 -87
- data/lib/logstash/codecs/netflow/ipfix.yaml +664 -0
- data/lib/logstash/codecs/netflow/util.rb +44 -0
- data/logstash-codec-netflow.gemspec +1 -1
- data/spec/codecs/ipfix_test_netscaler_data.dat +0 -0
- data/spec/codecs/ipfix_test_netscaler_tpl.dat +0 -0
- data/spec/codecs/netflow_spec.rb +303 -0
- metadata +42 -36
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2c0a3f206c7fe1f106fda91bd4d6ae4859b431cc
|
4
|
+
data.tar.gz: fd0a8240b8b1ea48b5c3c6c200eed186ee9774ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d593484718168a9b28a07616eb1a13b8cf4e8911caec611113af342f4b926d184dc935dddc6bf62eab7ec91f14d2957f7ece359000f45247766eb0894ea71a2
|
7
|
+
data.tar.gz: 290c29bd48ac4248575a8cdcbfec95e11f6a19c10264b4939bcda4cc02f147982dbf5ec82b9d3d92ae3aa235dfe88e4316707f8dbc4731dd41ad2f2981f27ed7
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 3.2.0
|
2
|
+
|
3
|
+
- Add Netflow v9/v10 template caching, configurable TTL
|
4
|
+
- Add option for including flowset_id for Netflow v10
|
5
|
+
- Refactor/simplify Netflow v9/v10 templates processing
|
6
|
+
- Add variable length field support
|
7
|
+
- Add OctetArray support
|
8
|
+
- Add Citrix Netscaler (IPFIX) support
|
9
|
+
- Add spec tests and anonymized test data for all of the above
|
10
|
+
|
1
11
|
## 3.1.4
|
2
12
|
|
3
13
|
- Added support for MPLS labels
|
data/CONTRIBUTORS
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
require "logstash/codecs/base"
|
3
3
|
require "logstash/namespace"
|
4
4
|
require "logstash/timestamp"
|
5
|
+
require "logstash/json"
|
5
6
|
|
6
7
|
# The "netflow" codec is used for decoding Netflow v5/v9/v10 (IPFIX) flows.
|
7
8
|
#
|
@@ -22,6 +23,7 @@ require "logstash/timestamp"
|
|
22
23
|
# |OpenBSD pflow | y | n | y | http://man.openbsd.org/OpenBSD-current/man4/pflow.4
|
23
24
|
# |Mikrotik 6.35.4 | y | | n | http://wiki.mikrotik.com/wiki/Manual:IP/Traffic_Flow
|
24
25
|
# |Ubiquiti Edgerouter X | | y | | With MPLS labels
|
26
|
+
# |Citrix Netscaler | | | y | Still some unknown fields, labeled netscalerUnknown<id>
|
25
27
|
# |===========================================================================================
|
26
28
|
#
|
27
29
|
# ==== Usage
|
@@ -63,12 +65,23 @@ require "logstash/timestamp"
|
|
63
65
|
class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
64
66
|
config_name "netflow"
|
65
67
|
|
66
|
-
# Netflow v9 template cache TTL (minutes)
|
68
|
+
# Netflow v9/v10 template cache TTL (minutes)
|
67
69
|
config :cache_ttl, :validate => :number, :default => 4000
|
68
70
|
|
71
|
+
# Where to save the template cache
|
72
|
+
# This helps speed up processing when restarting logstash
|
73
|
+
# (So you don't have to await the arrival of templates)
|
74
|
+
# cache will save as path/netflow_templates.cache and/or path/ipfix_templates.cache
|
75
|
+
config :cache_save_path, :validate => :path
|
76
|
+
|
69
77
|
# Specify into what field you want the Netflow data.
|
70
78
|
config :target, :validate => :string, :default => "netflow"
|
71
79
|
|
80
|
+
# Only makes sense for ipfix, v9 already includes this
|
81
|
+
# Setting to true will include the flowset_id in events
|
82
|
+
# Allows you to work with sequences, for instance with the aggregate filter
|
83
|
+
config :include_flowset_id, :validate => :boolean, :default => false
|
84
|
+
|
72
85
|
# Specify which Netflow versions you will accept.
|
73
86
|
config :versions, :validate => :array, :default => [5, 9, 10]
|
74
87
|
|
@@ -137,6 +150,26 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
137
150
|
# Path to default IPFIX field definitions
|
138
151
|
filename = ::File.expand_path('netflow/ipfix.yaml', ::File.dirname(__FILE__))
|
139
152
|
@ipfix_fields = load_definitions(filename, @ipfix_definitions)
|
153
|
+
|
154
|
+
if @cache_save_path
|
155
|
+
if @versions.include?(9)
|
156
|
+
if File.exists?("#{@cache_save_path}/netflow_templates.cache")
|
157
|
+
@netflow_templates_cache = load_templates_cache("#{@cache_save_path}/netflow_templates.cache")
|
158
|
+
@netflow_templates_cache.each{ |key, fields| @netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields) }
|
159
|
+
else
|
160
|
+
@netflow_templates_cache = {}
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
if @versions.include?(10)
|
165
|
+
if File.exists?("#{@cache_save_path}/ipfix_templates.cache")
|
166
|
+
@ipfix_templates_cache = load_templates_cache("#{@cache_save_path}/ipfix_templates.cache")
|
167
|
+
@ipfix_templates_cache.each{ |key, fields| @ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields) }
|
168
|
+
else
|
169
|
+
@ipfix_templates_cache = {}
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
140
173
|
end # def register
|
141
174
|
|
142
175
|
def decode(payload, metadata = nil, &block)
|
@@ -216,40 +249,27 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
216
249
|
events = []
|
217
250
|
|
218
251
|
case record.flowset_id
|
219
|
-
when 0
|
252
|
+
when 0..1
|
220
253
|
# Template flowset
|
221
254
|
record.flowset_data.templates.each do |template|
|
222
255
|
catch (:field) do
|
223
256
|
fields = []
|
224
|
-
template
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
if metadata != nil
|
232
|
-
key = "#{flowset.source_id}|#{template.template_id}|#{metadata["host"]}|#{metadata["port"]}"
|
257
|
+
# Template flowset (0) or Options template flowset (1) ?
|
258
|
+
if record.flowset_id == 0
|
259
|
+
template.record_fields.each do |field|
|
260
|
+
entry = netflow_field_for(field.field_type, field.field_length)
|
261
|
+
throw :field unless entry
|
262
|
+
fields += entry
|
263
|
+
end
|
233
264
|
else
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
# Options template flowset
|
243
|
-
record.flowset_data.templates.each do |template|
|
244
|
-
catch (:field) do
|
245
|
-
fields = []
|
246
|
-
template.scope_fields.each do |field|
|
247
|
-
fields << [uint_field(0, field.field_length), NETFLOW9_SCOPES[field.field_type]]
|
248
|
-
end
|
249
|
-
template.option_fields.each do |field|
|
250
|
-
entry = netflow_field_for(field.field_type, field.field_length)
|
251
|
-
throw :field unless entry
|
252
|
-
fields += entry
|
265
|
+
template.scope_fields.each do |field|
|
266
|
+
fields << [uint_field(0, field.field_length), NETFLOW9_SCOPES[field.field_type]]
|
267
|
+
end
|
268
|
+
template.option_fields.each do |field|
|
269
|
+
entry = netflow_field_for(field.field_type, field.field_length)
|
270
|
+
throw :field unless entry
|
271
|
+
fields += entry
|
272
|
+
end
|
253
273
|
end
|
254
274
|
# We get this far, we have a list of fields
|
255
275
|
#key = "#{flowset.source_id}|#{event["source"]}|#{template.template_id}"
|
@@ -261,6 +281,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
261
281
|
@netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
|
262
282
|
# Purge any expired templates
|
263
283
|
@netflow_templates.cleanup!
|
284
|
+
if @cache_save_path
|
285
|
+
@netflow_templates_cache[key] = fields
|
286
|
+
save_templates_cache(@netflow_templates_cache, "#{@cache_save_path}/netflow_templates.cache")
|
287
|
+
end
|
264
288
|
end
|
265
289
|
end
|
266
290
|
when 256..65535
|
@@ -332,31 +356,17 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
332
356
|
events = []
|
333
357
|
|
334
358
|
case record.flowset_id
|
335
|
-
when 2
|
336
|
-
# Template flowset
|
359
|
+
when 2..3
|
337
360
|
record.flowset_data.templates.each do |template|
|
338
361
|
catch (:field) do
|
339
362
|
fields = []
|
340
|
-
template
|
363
|
+
# Template flowset (2) or Options template flowset (3) ?
|
364
|
+
template_fields = (record.flowset_id == 2) ? template.record_fields : (template.scope_fields.to_ary + template.option_fields.to_ary)
|
365
|
+
template_fields.each do |field|
|
341
366
|
field_type = field.field_type
|
342
367
|
field_length = field.field_length
|
343
368
|
enterprise_id = field.enterprise ? field.enterprise_id : 0
|
344
369
|
|
345
|
-
if field.field_length == 0xffff
|
346
|
-
# FIXME
|
347
|
-
@logger.warn("Cowardly refusing to deal with variable length encoded field", :type => field_type, :enterprise => enterprise_id)
|
348
|
-
throw :field
|
349
|
-
end
|
350
|
-
|
351
|
-
if enterprise_id == 0
|
352
|
-
case field_type
|
353
|
-
when 291, 292, 293
|
354
|
-
# FIXME
|
355
|
-
@logger.warn("Cowardly refusing to deal with complex data types", :type => field_type, :enterprise => enterprise_id)
|
356
|
-
throw :field
|
357
|
-
end
|
358
|
-
end
|
359
|
-
|
360
370
|
entry = ipfix_field_for(field_type, enterprise_id, field.field_length)
|
361
371
|
throw :field unless entry
|
362
372
|
fields += entry
|
@@ -366,42 +376,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
366
376
|
@ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
|
367
377
|
# Purge any expired templates
|
368
378
|
@ipfix_templates.cleanup!
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
# Options template flowset
|
373
|
-
record.flowset_data.templates.each do |template|
|
374
|
-
catch (:field) do
|
375
|
-
fields = []
|
376
|
-
(template.scope_fields.to_ary + template.option_fields.to_ary).each do |field|
|
377
|
-
field_type = field.field_type
|
378
|
-
field_length = field.field_length
|
379
|
-
enterprise_id = field.enterprise ? field.enterprise_id : 0
|
380
|
-
|
381
|
-
if field.field_length == 0xffff
|
382
|
-
# FIXME
|
383
|
-
@logger.warn("Cowardly refusing to deal with variable length encoded field", :type => field_type, :enterprise => enterprise_id)
|
384
|
-
throw :field
|
385
|
-
end
|
386
|
-
|
387
|
-
if enterprise_id == 0
|
388
|
-
case field_type
|
389
|
-
when 291, 292, 293
|
390
|
-
# FIXME
|
391
|
-
@logger.warn("Cowardly refusing to deal with complex data types", :type => field_type, :enterprise => enterprise_id)
|
392
|
-
throw :field
|
393
|
-
end
|
394
|
-
end
|
395
|
-
|
396
|
-
entry = ipfix_field_for(field_type, enterprise_id, field.field_length)
|
397
|
-
throw :field unless entry
|
398
|
-
fields += entry
|
379
|
+
if @cache_save_path
|
380
|
+
@ipfix_templates_cache[key] = fields
|
381
|
+
save_templates_cache(@ipfix_templates_cache, "#{@cache_save_path}/ipfix_templates.cache")
|
399
382
|
end
|
400
|
-
# FIXME Source IP address required in key
|
401
|
-
key = "#{flowset.observation_domain_id}|#{template.template_id}"
|
402
|
-
@ipfix_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
|
403
|
-
# Purge any expired templates
|
404
|
-
@ipfix_templates.cleanup!
|
405
383
|
end
|
406
384
|
end
|
407
385
|
when 256..65535
|
@@ -427,6 +405,10 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
427
405
|
event[@target][f] = flowset[f].snapshot
|
428
406
|
end
|
429
407
|
|
408
|
+
if @include_flowset_id
|
409
|
+
event[@target][FLOWSET_ID] = record.flowset_id.snapshot
|
410
|
+
end
|
411
|
+
|
430
412
|
r.each_pair do |k, v|
|
431
413
|
case k.to_s
|
432
414
|
when /^flow(?:Start|End)Seconds$/
|
@@ -478,11 +460,51 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
478
460
|
fields
|
479
461
|
end
|
480
462
|
|
463
|
+
def load_templates_cache(file_path)
|
464
|
+
templates_cache = {}
|
465
|
+
begin
|
466
|
+
templates_cache = JSON.parse(File.read(file_path))
|
467
|
+
rescue Exception => e
|
468
|
+
raise "#{self.class.name}: templates cache file corrupt (#{file_path})"
|
469
|
+
end
|
470
|
+
|
471
|
+
templates_cache
|
472
|
+
end
|
473
|
+
|
474
|
+
def save_templates_cache(templates_cache, file_path)
|
475
|
+
begin
|
476
|
+
File.open(file_path, 'w') {|file| file.write templates_cache.to_json }
|
477
|
+
rescue Exception => e
|
478
|
+
raise "#{self.class.name}: saving templates cache file failed (#{file_path}) with error #{e}"
|
479
|
+
end
|
480
|
+
end
|
481
|
+
|
481
482
|
def uint_field(length, default)
|
482
483
|
# If length is 4, return :uint32, etc. and use default if length is 0
|
483
484
|
("uint" + (((length > 0) ? length : default) * 8).to_s).to_sym
|
484
485
|
end # def uint_field
|
485
486
|
|
487
|
+
def skip_field(field, type, length)
|
488
|
+
if length == 65535
|
489
|
+
field[0] = :VarSkip
|
490
|
+
else
|
491
|
+
field += [nil, {:length => length.to_i}]
|
492
|
+
end
|
493
|
+
|
494
|
+
field
|
495
|
+
end # def skip_field
|
496
|
+
|
497
|
+
def string_field(field, type, length)
|
498
|
+
if length == 65535
|
499
|
+
field[0] = :VarString
|
500
|
+
else
|
501
|
+
field[0] = :string
|
502
|
+
field += [{ :length => length.to_i, :trim_padding => true }]
|
503
|
+
end
|
504
|
+
|
505
|
+
field
|
506
|
+
end # def string_field
|
507
|
+
|
486
508
|
def netflow_field_for(type, length)
|
487
509
|
if @netflow_fields.include?(type)
|
488
510
|
field = @netflow_fields[type].clone
|
@@ -494,9 +516,9 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
494
516
|
# is dynamic
|
495
517
|
case field[0]
|
496
518
|
when :skip
|
497
|
-
field += [nil, {:length => length}]
|
519
|
+
field += [nil, {:length => length.to_i}]
|
498
520
|
when :string
|
499
|
-
field += [{:length => length, :trim_padding => true}]
|
521
|
+
field += [{:length => length.to_i, :trim_padding => true}]
|
500
522
|
end
|
501
523
|
|
502
524
|
@logger.debug? and @logger.debug("Definition complete", :field => field)
|
@@ -528,9 +550,12 @@ class LogStash::Codecs::Netflow < LogStash::Codecs::Base
|
|
528
550
|
if field.is_a?(Array)
|
529
551
|
case field[0]
|
530
552
|
when :skip
|
531
|
-
field
|
553
|
+
field = skip_field(field, type, length.to_i)
|
532
554
|
when :string
|
533
|
-
field
|
555
|
+
field = string_field(field, type, length.to_i)
|
556
|
+
when :octetarray
|
557
|
+
field[0] = :OctetArray
|
558
|
+
field += [{:initial_length => length.to_i}]
|
534
559
|
when :uint64
|
535
560
|
field[0] = uint_field(length, 8)
|
536
561
|
when :uint32
|
@@ -1202,6 +1202,670 @@
|
|
1202
1202
|
433:
|
1203
1203
|
- :uint64
|
1204
1204
|
- :ignoredLayer2FrameTotalCount
|
1205
|
+
5951:
|
1206
|
+
128:
|
1207
|
+
- :uint32
|
1208
|
+
- :netscalerRoundTripTime
|
1209
|
+
129:
|
1210
|
+
- :uint32
|
1211
|
+
- :netscalerTransactionId
|
1212
|
+
130:
|
1213
|
+
- :string
|
1214
|
+
- :netscalerHttpReqUrl
|
1215
|
+
131:
|
1216
|
+
- :string
|
1217
|
+
- :netscalerHttpReqCookie
|
1218
|
+
132:
|
1219
|
+
- :uint64
|
1220
|
+
- :netscalerFlowFlags
|
1221
|
+
133:
|
1222
|
+
- :uint32
|
1223
|
+
- :netscalerConnectionId
|
1224
|
+
134:
|
1225
|
+
- :uint8
|
1226
|
+
- :netscalerSyslogPriority
|
1227
|
+
135:
|
1228
|
+
- :string
|
1229
|
+
- :netscalerSyslogMessage
|
1230
|
+
136:
|
1231
|
+
- :uint64
|
1232
|
+
- :netscalerSyslogTimestamp
|
1233
|
+
140:
|
1234
|
+
- :string
|
1235
|
+
- :netscalerHttpReqReferer
|
1236
|
+
141:
|
1237
|
+
- :string
|
1238
|
+
- :netscalerHttpReqMethod
|
1239
|
+
142:
|
1240
|
+
- :string
|
1241
|
+
- :netscalerHttpReqHost
|
1242
|
+
143:
|
1243
|
+
- :string
|
1244
|
+
- :netscalerHttpReqUserAgent
|
1245
|
+
144:
|
1246
|
+
- :uint16
|
1247
|
+
- :netscalerHttpRspStatus
|
1248
|
+
145:
|
1249
|
+
- :uint64
|
1250
|
+
- :netscalerHttpRspLen
|
1251
|
+
146:
|
1252
|
+
- :uint64
|
1253
|
+
- :netscalerServerTTFB
|
1254
|
+
147:
|
1255
|
+
- :uint64
|
1256
|
+
- :netscalerServerTTLB
|
1257
|
+
150:
|
1258
|
+
- :uint32
|
1259
|
+
- :netscalerAppNameIncarnationNumber
|
1260
|
+
151:
|
1261
|
+
- :uint32
|
1262
|
+
- :netscalerAppNameAppId
|
1263
|
+
152:
|
1264
|
+
- :string
|
1265
|
+
- :netscalerAppName
|
1266
|
+
153:
|
1267
|
+
- :uint64
|
1268
|
+
- :netscalerHttpReqRcvFB
|
1269
|
+
156:
|
1270
|
+
- :uint64
|
1271
|
+
- :netscalerHttpReqForwFB
|
1272
|
+
157:
|
1273
|
+
- :uint64
|
1274
|
+
- :netscalerHttpResRcvFB
|
1275
|
+
158:
|
1276
|
+
- :uint64
|
1277
|
+
- :netscalerHttpResForwFB
|
1278
|
+
159:
|
1279
|
+
- :uint64
|
1280
|
+
- :netscalerHttpReqRcvLB
|
1281
|
+
160:
|
1282
|
+
- :uint64
|
1283
|
+
- :netscalerHttpReqForwLB
|
1284
|
+
161:
|
1285
|
+
- :uint32
|
1286
|
+
- :netscalerMainPageId
|
1287
|
+
162:
|
1288
|
+
- :uint32
|
1289
|
+
- :netscalerMainPageCoreId
|
1290
|
+
163:
|
1291
|
+
- :string
|
1292
|
+
- :netscalerHttpClientInteractionStartTime
|
1293
|
+
164:
|
1294
|
+
- :string
|
1295
|
+
- :netscalerHttpClientRenderEndTime
|
1296
|
+
165:
|
1297
|
+
- :string
|
1298
|
+
- :netscalerHttpClientRenderStartTime
|
1299
|
+
167:
|
1300
|
+
- :string
|
1301
|
+
- :netscalerAppTemplateName
|
1302
|
+
168:
|
1303
|
+
- :string
|
1304
|
+
- :netscalerHttpClientInteractionEndTime
|
1305
|
+
169:
|
1306
|
+
- :uint64
|
1307
|
+
- :netscalerHttpResRcvLB
|
1308
|
+
170:
|
1309
|
+
- :uint64
|
1310
|
+
- :netscalerHttpResForwLB
|
1311
|
+
171:
|
1312
|
+
- :uint32
|
1313
|
+
- :netscalerAppUnitNameAppId
|
1314
|
+
172:
|
1315
|
+
- :uint32
|
1316
|
+
- :netscalerDbLoginFlags
|
1317
|
+
173:
|
1318
|
+
- :uint8
|
1319
|
+
- :netscalerDbReqType
|
1320
|
+
174:
|
1321
|
+
- :uint8
|
1322
|
+
- :netscalerDbProtocolName
|
1323
|
+
175:
|
1324
|
+
- :string
|
1325
|
+
- :netscalerDbUserName
|
1326
|
+
176:
|
1327
|
+
- :string
|
1328
|
+
- :netscalerDbDatabaseName
|
1329
|
+
177:
|
1330
|
+
- :string
|
1331
|
+
- :netscalerDbCltHostName
|
1332
|
+
178:
|
1333
|
+
- :string
|
1334
|
+
- :netscalerDbReqString
|
1335
|
+
179:
|
1336
|
+
- :string
|
1337
|
+
- :netscalerDbRespStatusString
|
1338
|
+
180:
|
1339
|
+
- :uint64
|
1340
|
+
- :netscalerDbRespStatus
|
1341
|
+
181:
|
1342
|
+
- :uint64
|
1343
|
+
- :netscalerDbRespLength
|
1344
|
+
182:
|
1345
|
+
- :uint32
|
1346
|
+
- :netscalerClientRTT
|
1347
|
+
183:
|
1348
|
+
- :string
|
1349
|
+
- :netscalerHttpContentType
|
1350
|
+
185:
|
1351
|
+
- :string
|
1352
|
+
- :netscalerHttpReqAuthorization
|
1353
|
+
186:
|
1354
|
+
- :string
|
1355
|
+
- :netscalerHttpReqVia
|
1356
|
+
187:
|
1357
|
+
- :string
|
1358
|
+
- :netscalerHttpResLocation
|
1359
|
+
188:
|
1360
|
+
- :string
|
1361
|
+
- :netscalerHttpResSetCookie
|
1362
|
+
189:
|
1363
|
+
- :string
|
1364
|
+
- :netscalerHttpResSetCookie2
|
1365
|
+
190:
|
1366
|
+
- :string
|
1367
|
+
- :netscalerHttpReqXForwardedFor
|
1368
|
+
192:
|
1369
|
+
- :octetarray
|
1370
|
+
- :netscalerConnectionChainID
|
1371
|
+
193:
|
1372
|
+
- :uint8
|
1373
|
+
- :netscalerConnectionChainHopCount
|
1374
|
+
200:
|
1375
|
+
- :octetarray
|
1376
|
+
- :netscalerICASessionGuid
|
1377
|
+
201:
|
1378
|
+
- :string
|
1379
|
+
- :netscaleIcaClientVersion
|
1380
|
+
202:
|
1381
|
+
- :uint16
|
1382
|
+
- :netscalerIcaClientType
|
1383
|
+
203:
|
1384
|
+
- :ip4_addr
|
1385
|
+
- :netscalerIcaClientIP
|
1386
|
+
204:
|
1387
|
+
- :string
|
1388
|
+
- :netscalerIcaClientHostName
|
1389
|
+
205:
|
1390
|
+
- :string
|
1391
|
+
- :netscalerAaaUsername
|
1392
|
+
207:
|
1393
|
+
- :string
|
1394
|
+
- :netscalerIcaDomainName
|
1395
|
+
208:
|
1396
|
+
- :uint16
|
1397
|
+
- :netscalerIcaClientLauncher
|
1398
|
+
209:
|
1399
|
+
- :uint32
|
1400
|
+
- :netscalerIcaSessionSetupTime
|
1401
|
+
210:
|
1402
|
+
- :string
|
1403
|
+
- :netscalerIcaServerName
|
1404
|
+
214:
|
1405
|
+
- :uint8
|
1406
|
+
- :netscalerIcaSessionReconnects
|
1407
|
+
215:
|
1408
|
+
- :uint32
|
1409
|
+
- :netscalerIcaRTT
|
1410
|
+
216:
|
1411
|
+
- :uint32
|
1412
|
+
- :netscalerIcaClientsideRXBytes
|
1413
|
+
217:
|
1414
|
+
- :uint32
|
1415
|
+
- :netscalerIcaClientsideTXBytes
|
1416
|
+
219:
|
1417
|
+
- :uint16
|
1418
|
+
- :netscalerIcaClientsidePacketsRetransmit
|
1419
|
+
220:
|
1420
|
+
- :uint16
|
1421
|
+
- :netscalerIcaServersidePacketsRetransmit
|
1422
|
+
221:
|
1423
|
+
- :uint32
|
1424
|
+
- :netscalerIcaClientsideRTT
|
1425
|
+
222:
|
1426
|
+
- :uint32
|
1427
|
+
- :netscalerIcaServersideRTT
|
1428
|
+
223:
|
1429
|
+
- :uint32
|
1430
|
+
- :netscalerIcaSessionUpdateBeginSec
|
1431
|
+
224:
|
1432
|
+
- :uint32
|
1433
|
+
- :netscalerIcaSessionUpdateEndSec
|
1434
|
+
225:
|
1435
|
+
- :uint32
|
1436
|
+
- :netscalerIcaChannelId1
|
1437
|
+
226:
|
1438
|
+
- :uint32
|
1439
|
+
- :netscalerIcaChannelId1Bytes
|
1440
|
+
227:
|
1441
|
+
- :uint32
|
1442
|
+
- :netscalerIcaChannelId2
|
1443
|
+
228:
|
1444
|
+
- :uint32
|
1445
|
+
- :netscalerIcaChannelId2Bytes
|
1446
|
+
229:
|
1447
|
+
- :uint32
|
1448
|
+
- :netscalerIcaChannelId3
|
1449
|
+
230:
|
1450
|
+
- :uint32
|
1451
|
+
- :netscalerIcaChannelId3Bytes
|
1452
|
+
231:
|
1453
|
+
- :uint32
|
1454
|
+
- :netscalerIcaChannelId4
|
1455
|
+
232:
|
1456
|
+
- :uint32
|
1457
|
+
- :netscalerIcaChannelId4Bytes
|
1458
|
+
233:
|
1459
|
+
- :uint32
|
1460
|
+
- :netscalerIcaChannelId5
|
1461
|
+
234:
|
1462
|
+
- :uint32
|
1463
|
+
- :netscalerIcaChannelId5Bytes
|
1464
|
+
235:
|
1465
|
+
- :uint16
|
1466
|
+
- :netscalerIcaConnectionPriority
|
1467
|
+
236:
|
1468
|
+
- :uint32
|
1469
|
+
- :netscalerApplicationStartupDuration
|
1470
|
+
237:
|
1471
|
+
- :uint16
|
1472
|
+
- :netscalerIcaLaunchMechanism
|
1473
|
+
238:
|
1474
|
+
- :string
|
1475
|
+
- :netscalerIcaApplicationName
|
1476
|
+
239:
|
1477
|
+
- :uint32
|
1478
|
+
- :netscalerApplicationStartupTime
|
1479
|
+
240:
|
1480
|
+
- :uint16
|
1481
|
+
- :netscalerIcaApplicationTerminationType
|
1482
|
+
241:
|
1483
|
+
- :uint32
|
1484
|
+
- :netscalerIcaApplicationTerminationTime
|
1485
|
+
242:
|
1486
|
+
- :uint32
|
1487
|
+
- :netscalerIcaSessionEndTime
|
1488
|
+
243:
|
1489
|
+
- :uint32
|
1490
|
+
- :netscalerIcaClientsideJitter
|
1491
|
+
244:
|
1492
|
+
- :uint32
|
1493
|
+
- :netscalerIcaServersideJitter
|
1494
|
+
245:
|
1495
|
+
- :uint32
|
1496
|
+
- :netscalerIcaAppProcessID
|
1497
|
+
246:
|
1498
|
+
- :string
|
1499
|
+
- :netscalerIcaAppModulePath
|
1500
|
+
247:
|
1501
|
+
- :uint32
|
1502
|
+
- :netscalerIcaDeviceSerialNo
|
1503
|
+
248:
|
1504
|
+
- :octetarray
|
1505
|
+
- :netscalerMsiClientCookie
|
1506
|
+
249:
|
1507
|
+
- :uint64
|
1508
|
+
- :netscalerIcaFlags
|
1509
|
+
250:
|
1510
|
+
- :string
|
1511
|
+
- :netscalerIcaUsername
|
1512
|
+
251:
|
1513
|
+
- :uint8
|
1514
|
+
- :netscalerLicenseType
|
1515
|
+
252:
|
1516
|
+
- :uint64
|
1517
|
+
- :netscalerMaxLicenseCount
|
1518
|
+
253:
|
1519
|
+
- :uint64
|
1520
|
+
- :netscalerCurrentLicenseConsumed
|
1521
|
+
254:
|
1522
|
+
- :uint32
|
1523
|
+
- :netscalerIcaNetworkUpdateStartTime
|
1524
|
+
255:
|
1525
|
+
- :uint32
|
1526
|
+
- :netscalerIcaNetworkUpdateEndTime
|
1527
|
+
256:
|
1528
|
+
- :uint32
|
1529
|
+
- :netscalerIcaClientsideSRTT
|
1530
|
+
257:
|
1531
|
+
- :uint32
|
1532
|
+
- :netscalerIcaServersideSRTT
|
1533
|
+
258:
|
1534
|
+
- :uint32
|
1535
|
+
- :netscalerIcaClientsideDelay
|
1536
|
+
259:
|
1537
|
+
- :uint32
|
1538
|
+
- :netscalerIcaServersideDelay
|
1539
|
+
260:
|
1540
|
+
- :uint32
|
1541
|
+
- :netscalerIcaHostDelay
|
1542
|
+
261:
|
1543
|
+
- :uint16
|
1544
|
+
- :netscalerIcaClientSideWindowSize
|
1545
|
+
262:
|
1546
|
+
- :uint16
|
1547
|
+
- :netscalerIcaServerSideWindowSize
|
1548
|
+
263:
|
1549
|
+
- :uint16
|
1550
|
+
- :netscalerIcaClientSideRTOCount
|
1551
|
+
264:
|
1552
|
+
- :uint16
|
1553
|
+
- :netscalerIcaServerSideRTOCount
|
1554
|
+
265:
|
1555
|
+
- :uint32
|
1556
|
+
- :netscalerIcaL7ClientLatency
|
1557
|
+
266:
|
1558
|
+
- :uint32
|
1559
|
+
- :netscalerIcaL7ServerLatency
|
1560
|
+
267:
|
1561
|
+
- :string
|
1562
|
+
- :netscalerHttpDomainName
|
1563
|
+
268:
|
1564
|
+
- :uint32
|
1565
|
+
- :netscalerCacheRedirClientConnectionCoreID
|
1566
|
+
269:
|
1567
|
+
- :uint32
|
1568
|
+
- :netscalerCacheRedirClientConnectionTransactionID
|
1569
|
+
270:
|
1570
|
+
- :uint32
|
1571
|
+
- :netscalerUnknown270
|
1572
|
+
271:
|
1573
|
+
- :uint32
|
1574
|
+
- :netscalerUnknown271
|
1575
|
+
272:
|
1576
|
+
- :uint32
|
1577
|
+
- :netscalerUnknown272
|
1578
|
+
273:
|
1579
|
+
- :uint32
|
1580
|
+
- :netscalerUnknown273
|
1581
|
+
274:
|
1582
|
+
- :uint32
|
1583
|
+
- :netscalerUnknown274
|
1584
|
+
275:
|
1585
|
+
- :uint32
|
1586
|
+
- :netscalerUnknown275
|
1587
|
+
276:
|
1588
|
+
- :uint32
|
1589
|
+
- :netscalerUnknown276
|
1590
|
+
277:
|
1591
|
+
- :uint32
|
1592
|
+
- :netscalerUnknown277
|
1593
|
+
278:
|
1594
|
+
- :uint32
|
1595
|
+
- :netscalerUnknown278
|
1596
|
+
279:
|
1597
|
+
- :uint32
|
1598
|
+
- :netscalerUnknown279
|
1599
|
+
280:
|
1600
|
+
- :uint32
|
1601
|
+
- :netscalerUnknown280
|
1602
|
+
281:
|
1603
|
+
- :uint32
|
1604
|
+
- :netscalerUnknown281
|
1605
|
+
282:
|
1606
|
+
- :uint32
|
1607
|
+
- :netscalerUnknown282
|
1608
|
+
283:
|
1609
|
+
- :uint32
|
1610
|
+
- :netscalerUnknown283
|
1611
|
+
284:
|
1612
|
+
- :uint32
|
1613
|
+
- :netscalerUnknown284
|
1614
|
+
285:
|
1615
|
+
- :uint32
|
1616
|
+
- :netscalerUnknown285
|
1617
|
+
286:
|
1618
|
+
- :uint32
|
1619
|
+
- :netscalerUnknown286
|
1620
|
+
287:
|
1621
|
+
- :uint32
|
1622
|
+
- :netscalerUnknown287
|
1623
|
+
288:
|
1624
|
+
- :uint32
|
1625
|
+
- :netscalerUnknown288
|
1626
|
+
289:
|
1627
|
+
- :uint32
|
1628
|
+
- :netscalerUnknown289
|
1629
|
+
290:
|
1630
|
+
- :uint32
|
1631
|
+
- :netscalerUnknown290
|
1632
|
+
291:
|
1633
|
+
- :uint32
|
1634
|
+
- :netscalerUnknown291
|
1635
|
+
292:
|
1636
|
+
- :uint32
|
1637
|
+
- :netscalerUnknown292
|
1638
|
+
293:
|
1639
|
+
- :uint32
|
1640
|
+
- :netscalerUnknown293
|
1641
|
+
294:
|
1642
|
+
- :uint32
|
1643
|
+
- :netscalerUnknown294
|
1644
|
+
295:
|
1645
|
+
- :uint32
|
1646
|
+
- :netscalerUnknown295
|
1647
|
+
296:
|
1648
|
+
- :uint32
|
1649
|
+
- :netscalerUnknown296
|
1650
|
+
297:
|
1651
|
+
- :uint32
|
1652
|
+
- :netscalerUnknown297
|
1653
|
+
298:
|
1654
|
+
- :uint32
|
1655
|
+
- :netscalerUnknown298
|
1656
|
+
299:
|
1657
|
+
- :uint32
|
1658
|
+
- :netscalerUnknown299
|
1659
|
+
300:
|
1660
|
+
- :uint32
|
1661
|
+
- :netscalerUnknown300
|
1662
|
+
301:
|
1663
|
+
- :uint32
|
1664
|
+
- :netscalerUnknown301
|
1665
|
+
302:
|
1666
|
+
- :uint32
|
1667
|
+
- :netscalerUnknown302
|
1668
|
+
303:
|
1669
|
+
- :uint32
|
1670
|
+
- :netscalerUnknown303
|
1671
|
+
304:
|
1672
|
+
- :uint32
|
1673
|
+
- :netscalerUnknown304
|
1674
|
+
305:
|
1675
|
+
- :uint32
|
1676
|
+
- :netscalerUnknown305
|
1677
|
+
306:
|
1678
|
+
- :uint32
|
1679
|
+
- :netscalerUnknown306
|
1680
|
+
307:
|
1681
|
+
- :uint32
|
1682
|
+
- :netscalerUnknown307
|
1683
|
+
308:
|
1684
|
+
- :uint32
|
1685
|
+
- :netscalerUnknown308
|
1686
|
+
309:
|
1687
|
+
- :uint32
|
1688
|
+
- :netscalerUnknown309
|
1689
|
+
310:
|
1690
|
+
- :uint32
|
1691
|
+
- :netscalerUnknown310
|
1692
|
+
311:
|
1693
|
+
- :uint32
|
1694
|
+
- :netscalerUnknown311
|
1695
|
+
312:
|
1696
|
+
- :uint32
|
1697
|
+
- :netscalerUnknown312
|
1698
|
+
313:
|
1699
|
+
- :uint32
|
1700
|
+
- :netscalerUnknown313
|
1701
|
+
314:
|
1702
|
+
- :uint32
|
1703
|
+
- :netscalerUnknown314
|
1704
|
+
315:
|
1705
|
+
- :uint32
|
1706
|
+
- :netscalerUnknown315
|
1707
|
+
316:
|
1708
|
+
- :string
|
1709
|
+
- :netscalerUnknown316
|
1710
|
+
317:
|
1711
|
+
- :uint32
|
1712
|
+
- :netscalerUnknown317
|
1713
|
+
318:
|
1714
|
+
- :uint32
|
1715
|
+
- :netscalerUnknown318
|
1716
|
+
319:
|
1717
|
+
- :string
|
1718
|
+
- :netscalerUnknown319
|
1719
|
+
320:
|
1720
|
+
- :uint16
|
1721
|
+
- :netscalerUnknown320
|
1722
|
+
321:
|
1723
|
+
- :uint32
|
1724
|
+
- :netscalerUnknown321
|
1725
|
+
322:
|
1726
|
+
- :uint32
|
1727
|
+
- :netscalerUnknown322
|
1728
|
+
323:
|
1729
|
+
- :uint16
|
1730
|
+
- :netscalerUnknown323
|
1731
|
+
324:
|
1732
|
+
- :uint16
|
1733
|
+
- :netscalerUnknown324
|
1734
|
+
325:
|
1735
|
+
- :uint16
|
1736
|
+
- :netscalerUnknown325
|
1737
|
+
326:
|
1738
|
+
- :uint16
|
1739
|
+
- :netscalerUnknown326
|
1740
|
+
327:
|
1741
|
+
- :uint32
|
1742
|
+
- :netscalerUnknown327
|
1743
|
+
328:
|
1744
|
+
- :uint16
|
1745
|
+
- :netscalerUnknown328
|
1746
|
+
329:
|
1747
|
+
- :uint16
|
1748
|
+
- :netscalerUnknown329
|
1749
|
+
330:
|
1750
|
+
- :uint16
|
1751
|
+
- :netscalerUnknown330
|
1752
|
+
331:
|
1753
|
+
- :uint16
|
1754
|
+
- :netscalerUnknown331
|
1755
|
+
332:
|
1756
|
+
- :uint32
|
1757
|
+
- :netscalerUnknown332
|
1758
|
+
333:
|
1759
|
+
- :string
|
1760
|
+
- :netscalerUnknown333
|
1761
|
+
334:
|
1762
|
+
- :string
|
1763
|
+
- :netscalerUnknown334
|
1764
|
+
335:
|
1765
|
+
- :uint32
|
1766
|
+
- :netscalerUnknown335
|
1767
|
+
336:
|
1768
|
+
- :uint32
|
1769
|
+
- :netscalerUnknown336
|
1770
|
+
337:
|
1771
|
+
- :uint32
|
1772
|
+
- :netscalerUnknown337
|
1773
|
+
338:
|
1774
|
+
- :uint32
|
1775
|
+
- :netscalerUnknown338
|
1776
|
+
339:
|
1777
|
+
- :uint32
|
1778
|
+
- :netscalerUnknown339
|
1779
|
+
340:
|
1780
|
+
- :uint32
|
1781
|
+
- :netscalerUnknown340
|
1782
|
+
341:
|
1783
|
+
- :uint32
|
1784
|
+
- :netscalerUnknown341
|
1785
|
+
342:
|
1786
|
+
- :uint32
|
1787
|
+
- :netscalerUnknown342
|
1788
|
+
343:
|
1789
|
+
- :uint32
|
1790
|
+
- :netscalerUnknown343
|
1791
|
+
344:
|
1792
|
+
- :uint32
|
1793
|
+
- :netscalerUnknown344
|
1794
|
+
345:
|
1795
|
+
- :uint32
|
1796
|
+
- :netscalerUnknown345
|
1797
|
+
346:
|
1798
|
+
- :uint32
|
1799
|
+
- :netscalerUnknown346
|
1800
|
+
347:
|
1801
|
+
- :uint32
|
1802
|
+
- :netscalerUnknown347
|
1803
|
+
348:
|
1804
|
+
- :uint16
|
1805
|
+
- :netscalerUnknown348
|
1806
|
+
349:
|
1807
|
+
- :string
|
1808
|
+
- :netscalerUnknown349
|
1809
|
+
350:
|
1810
|
+
- :string
|
1811
|
+
- :netscalerUnknown350
|
1812
|
+
351:
|
1813
|
+
- :string
|
1814
|
+
- :netscalerUnknown351
|
1815
|
+
352:
|
1816
|
+
- :uint16
|
1817
|
+
- :netscalerUnknown352
|
1818
|
+
353:
|
1819
|
+
- :uint32
|
1820
|
+
- :netscalerUnknown353
|
1821
|
+
354:
|
1822
|
+
- :uint32
|
1823
|
+
- :netscalerUnknown354
|
1824
|
+
355:
|
1825
|
+
- :uint32
|
1826
|
+
- :netscalerUnknown355
|
1827
|
+
356:
|
1828
|
+
- :uint32
|
1829
|
+
- :netscalerUnknown356
|
1830
|
+
357:
|
1831
|
+
- :uint32
|
1832
|
+
- :netscalerUnknown357
|
1833
|
+
363:
|
1834
|
+
- :octetarray
|
1835
|
+
- :netscalerUnknown363
|
1836
|
+
383:
|
1837
|
+
- :octetarray
|
1838
|
+
- :netscalerUnknown383
|
1839
|
+
391:
|
1840
|
+
- :uint32
|
1841
|
+
- :netscalerUnknown391
|
1842
|
+
398:
|
1843
|
+
- :uint32
|
1844
|
+
- :netscalerUnknown398
|
1845
|
+
404:
|
1846
|
+
- :uint32
|
1847
|
+
- :netscalerUnknown404
|
1848
|
+
405:
|
1849
|
+
- :uint32
|
1850
|
+
- :netscalerUnknown405
|
1851
|
+
427:
|
1852
|
+
- :uint64
|
1853
|
+
- :netscalerUnknown427
|
1854
|
+
429:
|
1855
|
+
- :uint8
|
1856
|
+
- :netscalerUnknown429
|
1857
|
+
432:
|
1858
|
+
- :uint8
|
1859
|
+
- :netscalerUnknown432
|
1860
|
+
433:
|
1861
|
+
- :uint8
|
1862
|
+
- :netscalerUnknown433
|
1863
|
+
453:
|
1864
|
+
- :uint64
|
1865
|
+
- :netscalerUnknown453
|
1866
|
+
465:
|
1867
|
+
- :uint32
|
1868
|
+
- :netscalerUnknown465
|
1205
1869
|
29305:
|
1206
1870
|
1:
|
1207
1871
|
- :uint64
|