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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 64fcf9c71a5f61b3d08657aa9330fe84c509130f
4
- data.tar.gz: 7b3d28e45b1049e3164fc6e1bec4302aef0390c4
3
+ metadata.gz: 2c0a3f206c7fe1f106fda91bd4d6ae4859b431cc
4
+ data.tar.gz: fd0a8240b8b1ea48b5c3c6c200eed186ee9774ee
5
5
  SHA512:
6
- metadata.gz: 721e9b3d27195d9fbcb97101fb710b4830544d9d7300e00e1fa69feca51eb0a45b3416370b94131ff38bd7edb2a751a33ea017e46d3ebe81d57f929d21d9edc1
7
- data.tar.gz: 2596a72bf9fc4a8d738e51ffbdf0da7325207192390e1f21770808bd7e0c487ff333d735b89d559502b2b56c3d024f1ce5a95a24fdcdceaadd0feb50046e9d83
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
@@ -7,6 +7,7 @@ Contributors:
7
7
  * Colin Surprenant (colinsurprenant)
8
8
  * Daniel Nägele (analogbyte)
9
9
  * Evgeniy Sudyr (ejectck)
10
+ * G.J. Moed (gjmoed)
10
11
  * Jordan Sissel (jordansissel)
11
12
  * Jorrit Folmer (jorritfolmer)
12
13
  * Matt Dainty (bodgit)
@@ -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.record_fields.each do |field|
225
- entry = netflow_field_for(field.field_type, field.field_length)
226
- throw :field unless entry
227
- fields += entry
228
- end
229
- # We get this far, we have a list of fields
230
- #key = "#{flowset.source_id}|#{event["source"]}|#{template.template_id}"
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
- key = "#{flowset.source_id}|#{template.template_id}"
235
- end
236
- @netflow_templates[key, @cache_ttl] = BinData::Struct.new(:endian => :big, :fields => fields)
237
- # Purge any expired templates
238
- @netflow_templates.cleanup!
239
- end
240
- end
241
- when 1
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.record_fields.each do |field|
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
- end
370
- end
371
- when 3
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 += [nil, {:length => length}]
553
+ field = skip_field(field, type, length.to_i)
532
554
  when :string
533
- field += [{:length => length, :trim_padding => true}]
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