Coverage Report

Created: 2025-02-15 06:25

/src/wireshark/epan/dissectors/packet-netmon.c
Line
Count
Source (jump to first uncovered line)
1
/* packet-netmon.c
2
 * Routines for Network Monitor capture dissection
3
 *
4
 * Wireshark - Network traffic analyzer
5
 * By Gerald Combs <gerald@wireshark.org>
6
 * Copyright 1998 Gerald Combs
7
 *
8
 * SPDX-License-Identifier: GPL-2.0-or-later
9
 *
10
 * Network Event Tracing event taken from:
11
 *
12
 * https://docs.microsoft.com/en-us/windows/win32/api/evntcons/ns-evntcons-event_header
13
 */
14
15
#include "config.h"
16
17
#include <epan/packet.h>
18
#include <epan/to_str.h>
19
#include <epan/expert.h>
20
#include <epan/tfs.h>
21
#include <wsutil/array.h>
22
#include <wiretap/wtap.h>
23
#include "packet-netmon.h"
24
25
void proto_register_netmon(void);
26
void proto_reg_handoff_netmon(void);
27
28
14
#define EVENT_HEADER_PROPERTY_XML               0x0001
29
14
#define EVENT_HEADER_PROPERTY_FORWARDED_XML     0x0002
30
14
#define EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG   0x0004
31
32
static const value_string event_level_vals[] = {
33
  { 0,  "Log Always"},
34
  { 1,  "Critical"},
35
  { 2,  "Error"},
36
  { 3,  "Warning"},
37
  { 4,  "Info"},
38
  { 5,  "Verbose"},
39
  { 6,  "Reserved"},
40
  { 7,  "Reserved"},
41
  { 8,  "Reserved"},
42
  { 9,  "Reserved"},
43
  { 10, "Reserved"},
44
  { 11, "Reserved"},
45
  { 12, "Reserved"},
46
  { 13, "Reserved"},
47
  { 14, "Reserved"},
48
  { 15, "Reserved"},
49
  { 0,  NULL }
50
};
51
52
static const value_string opcode_vals[] = {
53
  { 0,  "Info"},
54
  { 1,  "Start"},
55
  { 2,  "Stop"},
56
  { 3,  "DC Start"},
57
  { 4,  "DC Stop"},
58
  { 5,  "Extension"},
59
  { 6,  "Reply"},
60
  { 7,  "Resume"},
61
  { 8,  "Suspend"},
62
  { 9,  "Transfer"},
63
  { 0,  NULL }
64
};
65
66
static const range_string filter_types[] = {
67
  { 0,  0,  "Display Filter" },
68
  { 1,  1,  "Capture Filter" },
69
  { 2,  0xFFFFFFFF, "Display Filter" },
70
  { 0, 0, NULL }
71
};
72
73
static dissector_table_t provider_id_table;
74
75
/* Initialize the protocol and registered fields */
76
static int proto_netmon_header;
77
static int proto_netmon_event;
78
static int proto_netmon_filter;
79
static int proto_netmon_network_info;
80
static int proto_netmon_system_trace;
81
static int proto_netmon_system_config;
82
static int proto_netmon_process;
83
84
static int hf_netmon_header_title_comment;
85
static int hf_netmon_header_description_comment;
86
87
static int hf_netmon_event_size;
88
static int hf_netmon_event_header_type;
89
static int hf_netmon_event_flags;
90
static int hf_netmon_event_flags_extended_info;
91
static int hf_netmon_event_flags_private_session;
92
static int hf_netmon_event_flags_string_only;
93
static int hf_netmon_event_flags_trace_message;
94
static int hf_netmon_event_flags_no_cputime;
95
static int hf_netmon_event_flags_32bit_header;
96
static int hf_netmon_event_flags_64bit_header;
97
static int hf_netmon_event_flags_classic_header;
98
static int hf_netmon_event_event_property;
99
static int hf_netmon_event_event_property_xml;
100
static int hf_netmon_event_event_property_forwarded_xml;
101
static int hf_netmon_event_event_property_legacy_eventlog;
102
static int hf_netmon_event_thread_id;
103
static int hf_netmon_event_process_id;
104
static int hf_netmon_event_timestamp;
105
static int hf_netmon_event_provider_id;
106
static int hf_netmon_event_event_desc_id;
107
static int hf_netmon_event_event_desc_version;
108
static int hf_netmon_event_event_desc_channel;
109
static int hf_netmon_event_event_desc_level;
110
static int hf_netmon_event_event_desc_opcode;
111
static int hf_netmon_event_event_desc_task;
112
static int hf_netmon_event_event_desc_keyword;
113
static int hf_netmon_event_kernel_time;
114
static int hf_netmon_event_user_time;
115
static int hf_netmon_event_processor_time;
116
static int hf_netmon_event_activity_id;
117
static int hf_netmon_event_processor_number;
118
static int hf_netmon_event_alignment;
119
static int hf_netmon_event_logger_id;
120
static int hf_netmon_event_extended_data_count;
121
static int hf_netmon_event_user_data_length;
122
static int hf_netmon_event_reassembled;
123
static int hf_netmon_event_extended_data_reserved;
124
static int hf_netmon_event_extended_data_type;
125
static int hf_netmon_event_extended_data_linkage;
126
static int hf_netmon_event_extended_data_reserved2;
127
static int hf_netmon_event_extended_data_size;
128
static int hf_netmon_event_extended_data;
129
static int hf_netmon_event_user_data;
130
131
static int hf_netmon_filter_version;
132
static int hf_netmon_filter_type;
133
static int hf_netmon_filter_app_major_version;
134
static int hf_netmon_filter_app_minor_version;
135
static int hf_netmon_filter_app_name;
136
static int hf_netmon_filter_filter;
137
138
static int hf_netmon_network_info_version;
139
static int hf_netmon_network_info_adapter_count;
140
static int hf_netmon_network_info_computer_name;
141
static int hf_netmon_network_info_friendly_name;
142
static int hf_netmon_network_info_description;
143
static int hf_netmon_network_info_miniport_guid;
144
static int hf_netmon_network_info_media_type;
145
static int hf_netmon_network_info_mtu;
146
static int hf_netmon_network_info_link_speed;
147
static int hf_netmon_network_info_mac_address;
148
static int hf_netmon_network_info_ipv4_count;
149
static int hf_netmon_network_info_ipv6_count;
150
static int hf_netmon_network_info_gateway_count;
151
static int hf_netmon_network_info_dhcp_server_count;
152
static int hf_netmon_network_info_dns_ipv4_count;
153
static int hf_netmon_network_info_dns_ipv6_count;
154
static int hf_netmon_network_info_ipv4;
155
static int hf_netmon_network_info_subnet;
156
static int hf_netmon_network_info_ipv6;
157
static int hf_netmon_network_info_gateway;
158
static int hf_netmon_network_info_dhcp_server;
159
static int hf_netmon_network_info_dns_ipv4;
160
static int hf_netmon_network_info_dns_ipv6;
161
162
static int hf_netmon_system_trace_buffer_size;
163
static int hf_netmon_system_trace_version;
164
static int hf_netmon_system_trace_provider_version;
165
static int hf_netmon_system_trace_num_processors;
166
static int hf_netmon_system_trace_end_time;
167
static int hf_netmon_system_trace_timer_resolution;
168
static int hf_netmon_system_trace_max_file_size;
169
static int hf_netmon_system_trace_log_file_mode;
170
static int hf_netmon_system_trace_buffers_written;
171
static int hf_netmon_system_trace_start_buffers;
172
static int hf_netmon_system_trace_pointers_size;
173
static int hf_netmon_system_trace_events_lost;
174
static int hf_netmon_system_trace_cpu_speed;
175
static int hf_netmon_system_trace_logger_name;
176
static int hf_netmon_system_trace_log_file_name_ptr;
177
static int hf_netmon_system_trace_time_zone_info;
178
static int hf_netmon_system_trace_boot_time;
179
static int hf_netmon_system_trace_perf_freq;
180
static int hf_netmon_system_trace_start_time;
181
static int hf_netmon_system_trace_reserved_flags;
182
static int hf_netmon_system_trace_buffers_lost;
183
static int hf_netmon_system_trace_session_name;
184
static int hf_netmon_system_trace_log_file_name;
185
static int hf_netmon_system_trace_group_mask1;
186
static int hf_netmon_system_trace_group_mask2;
187
static int hf_netmon_system_trace_group_mask3;
188
static int hf_netmon_system_trace_group_mask4;
189
static int hf_netmon_system_trace_group_mask5;
190
static int hf_netmon_system_trace_group_mask6;
191
static int hf_netmon_system_trace_group_mask7;
192
static int hf_netmon_system_trace_group_mask8;
193
static int hf_netmon_system_trace_kernel_event_version;
194
195
static int hf_netmon_system_config_mhz;
196
static int hf_netmon_system_config_num_processors;
197
static int hf_netmon_system_config_mem_size;
198
static int hf_netmon_system_config_page_size;
199
static int hf_netmon_system_config_allocation_granularity;
200
static int hf_netmon_system_config_computer_name;
201
static int hf_netmon_system_config_domain_name;
202
static int hf_netmon_system_config_hyper_threading_flag;
203
static int hf_netmon_system_config_disk_number;
204
static int hf_netmon_system_config_bytes_per_sector;
205
static int hf_netmon_system_config_sectors_per_track;
206
static int hf_netmon_system_config_tracks_per_cylinder;
207
static int hf_netmon_system_config_cylinders;
208
static int hf_netmon_system_config_scsi_port;
209
static int hf_netmon_system_config_scsi_path;
210
static int hf_netmon_system_config_scsi_target;
211
static int hf_netmon_system_config_scsi_lun;
212
static int hf_netmon_system_config_manufacturer;
213
static int hf_netmon_system_config_partition_count;
214
static int hf_netmon_system_config_write_cache_enabled;
215
static int hf_netmon_system_config_pad;
216
static int hf_netmon_system_config_boot_drive_letter;
217
static int hf_netmon_system_config_spare;
218
static int hf_netmon_system_config_start_offset;
219
static int hf_netmon_system_config_partition_size;
220
static int hf_netmon_system_config_size;
221
static int hf_netmon_system_config_drive_type;
222
static int hf_netmon_system_config_drive_letter;
223
static int hf_netmon_system_config_partition_number;
224
static int hf_netmon_system_config_sectors_per_cluster;
225
static int hf_netmon_system_config_num_free_clusters;
226
static int hf_netmon_system_config_total_num_clusters;
227
static int hf_netmon_system_config_file_system;
228
static int hf_netmon_system_config_volume_ext;
229
static int hf_netmon_system_config_physical_addr;
230
static int hf_netmon_system_config_physical_addr_len;
231
static int hf_netmon_system_config_ipv4_index;
232
static int hf_netmon_system_config_ipv6_index;
233
static int hf_netmon_system_config_nic_description;
234
static int hf_netmon_system_config_ipaddresses;
235
static int hf_netmon_system_config_dns_server_addresses;
236
static int hf_netmon_system_config_memory_size;
237
static int hf_netmon_system_config_x_resolution;
238
static int hf_netmon_system_config_y_resolution;
239
static int hf_netmon_system_config_bits_per_pixel;
240
static int hf_netmon_system_config_vrefresh;
241
static int hf_netmon_system_config_chip_type;
242
static int hf_netmon_system_config_dac_type;
243
static int hf_netmon_system_config_adapter_string;
244
static int hf_netmon_system_config_bios_string;
245
static int hf_netmon_system_config_device_id;
246
static int hf_netmon_system_config_state_flags;
247
static int hf_netmon_system_config_process_id;
248
static int hf_netmon_system_config_service_state;
249
static int hf_netmon_system_config_sub_process_tag;
250
static int hf_netmon_system_config_service_name;
251
static int hf_netmon_system_config_display_name;
252
static int hf_netmon_system_config_process_name;
253
static int hf_netmon_system_config_s1;
254
static int hf_netmon_system_config_s2;
255
static int hf_netmon_system_config_s3;
256
static int hf_netmon_system_config_s4;
257
static int hf_netmon_system_config_s5;
258
static int hf_netmon_system_config_tcb_table_partitions;
259
static int hf_netmon_system_config_max_hash_table_size;
260
static int hf_netmon_system_config_max_user_port;
261
static int hf_netmon_system_config_tcp_timed_wait_delay;
262
static int hf_netmon_system_config_irq_affinity;
263
static int hf_netmon_system_config_irq_num;
264
static int hf_netmon_system_config_device_desc_len;
265
static int hf_netmon_system_config_device_desc;
266
static int hf_netmon_system_config_device_id_len;
267
static int hf_netmon_system_config_friendly_name_len;
268
static int hf_netmon_system_config_friendly_name;
269
static int hf_netmon_system_config_target_id;
270
static int hf_netmon_system_config_device_type;
271
static int hf_netmon_system_config_device_timing_mode;
272
static int hf_netmon_system_config_location_information_len;
273
static int hf_netmon_system_config_location_information;
274
static int hf_netmon_system_config_system_manufacturer;
275
static int hf_netmon_system_config_system_product_name;
276
static int hf_netmon_system_config_bios_date;
277
static int hf_netmon_system_config_bios_version;
278
static int hf_netmon_system_config_load_order_group;
279
static int hf_netmon_system_config_svc_host_group;
280
static int hf_netmon_system_config_irq_group;
281
static int hf_netmon_system_config_pdo_name;
282
static int hf_netmon_system_config_nic_name;
283
static int hf_netmon_system_config_index;
284
static int hf_netmon_system_config_physical_addr_str;
285
static int hf_netmon_system_config_ip_address;
286
static int hf_netmon_system_config_subnet_mask;
287
static int hf_netmon_system_config_dhcp_server;
288
static int hf_netmon_system_config_gateway;
289
static int hf_netmon_system_config_primary_wins_server;
290
static int hf_netmon_system_config_secondary_wins_server;
291
static int hf_netmon_system_config_dns_server1;
292
static int hf_netmon_system_config_dns_server2;
293
static int hf_netmon_system_config_dns_server3;
294
static int hf_netmon_system_config_dns_server4;
295
static int hf_netmon_system_config_data;
296
297
298
299
static int hf_netmon_process_unique_process_key;
300
static int hf_netmon_process_process_id;
301
static int hf_netmon_process_parent_id;
302
static int hf_netmon_process_session_id;
303
static int hf_netmon_process_exit_status;
304
static int hf_netmon_process_directory_table_base;
305
static int hf_netmon_process_unknown;
306
static int hf_netmon_process_user_sid_revision;
307
static int hf_netmon_process_user_sid_subauth_count;
308
static int hf_netmon_process_user_sid_id;
309
static int hf_netmon_process_user_sid_authority;
310
static int hf_netmon_process_image_file_name;
311
static int hf_netmon_process_command_line;
312
static int hf_netmon_process_page_directory_base;
313
static int hf_netmon_process_page_fault_count;
314
static int hf_netmon_process_handle_count;
315
static int hf_netmon_process_reserved;
316
static int hf_netmon_process_peak_virtual_size;
317
static int hf_netmon_process_peak_working_set_size;
318
static int hf_netmon_process_peak_page_file_usage;
319
static int hf_netmon_process_quota_peak_paged_pool_usage;
320
static int hf_netmon_process_quota_peak_non_paged_pool_usage;
321
static int hf_netmon_process_virtual_size;
322
static int hf_netmon_process_workingset_size;
323
static int hf_netmon_process_pagefile_usage;
324
static int hf_netmon_process_quota_paged_pool_usage;
325
static int hf_netmon_process_quota_non_paged_pool_usage;
326
static int hf_netmon_process_private_page_count;
327
static int hf_netmon_process_directory_table_base32;
328
329
330
static int ett_netmon_header;
331
static int ett_netmon_event;
332
static int ett_netmon_event_desc;
333
static int ett_netmon_event_flags;
334
static int ett_netmon_event_property;
335
static int ett_netmon_event_extended_data;
336
static int ett_netmon_filter;
337
static int ett_netmon_network_info;
338
static int ett_netmon_network_info_list;
339
static int ett_netmon_network_info_adapter;
340
static int ett_netmon_system_trace;
341
static int ett_netmon_event_buffer_context;
342
static int ett_netmon_process;
343
static int ett_netmon_sid;
344
static int ett_netmon_system_config;
345
346
static expert_field ei_netmon_process_user_sid;
347
348
static dissector_table_t wtap_encap_table;
349
350
void
351
netmon_etl_field(proto_tree *tree, tvbuff_t *tvb, int* offset, int hf, uint16_t flags)
352
0
{
353
0
  if (flags & EVENT_HEADER_FLAG_64_BIT_HEADER) {
354
    /* XXX - This seems to be how values are displayed in Network Monitor */
355
0
    uint64_t value = tvb_get_letoh64(tvb, *offset) & 0xFFFFFFFF;
356
0
    proto_tree_add_uint64(tree, hf, tvb, *offset, 8, value);
357
0
    (*offset) += 8;
358
0
  } else {
359
0
    proto_tree_add_item(tree, hf, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
360
0
    (*offset) += 4;
361
0
  }
362
0
}
363
364
void
365
netmon_sid_field(proto_tree *tree, tvbuff_t *tvb, int* offset, packet_info *pinfo,
366
        int hf_revision, int hf_subauthority_count, int hf_sid_id, int hf_sid_authority, expert_field* invalid_sid, bool conformant _U_)
367
0
{
368
0
  proto_item *ti, *sid_item;
369
0
  proto_tree *sid_tree;
370
0
  int start_offset = *offset;
371
0
  uint32_t i, revision, count;
372
373
0
  sid_tree = proto_tree_add_subtree(tree, tvb, *offset, 2, ett_netmon_sid, &sid_item, "SID");
374
375
0
  ti = proto_tree_add_item_ret_uint(sid_tree, hf_revision, tvb, *offset, 1, ENC_LITTLE_ENDIAN, &revision);
376
0
  (*offset) += 1;
377
0
  if (revision != 1)
378
0
  {
379
0
    expert_add_info(pinfo, ti, invalid_sid);
380
0
  }
381
0
  proto_tree_add_item_ret_uint(sid_tree, hf_subauthority_count, tvb, *offset, 1, ENC_LITTLE_ENDIAN, &count);
382
0
  (*offset) += 1;
383
0
  if (count > 15)
384
0
  {
385
0
    expert_add_info(pinfo, ti, invalid_sid);
386
0
  }
387
388
0
  proto_tree_add_item(sid_tree, hf_sid_id, tvb, *offset, 6, ENC_NA);
389
0
  (*offset) += 6;
390
391
0
  for (i = 0; i < count; i++)
392
0
  {
393
0
    proto_tree_add_item(sid_tree, hf_sid_authority, tvb, *offset, 4, ENC_LITTLE_ENDIAN);
394
0
    (*offset) += 4;
395
0
  }
396
397
0
  proto_item_set_len(sid_item, (*offset)-start_offset);
398
0
}
399
400
/* Code to actually dissect the packets */
401
static int
402
dissect_netmon_header(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
403
0
{
404
0
  proto_item *ti;
405
0
  proto_tree *header_tree;
406
0
  union wtap_pseudo_header temp_header;
407
0
  char *comment;
408
409
0
  ti = proto_tree_add_item(tree, proto_netmon_header, tvb, 0, 0, ENC_NA);
410
0
  header_tree = proto_item_add_subtree(ti, ett_netmon_header);
411
412
0
  if (pinfo->pseudo_header->netmon.title != NULL) {
413
0
    ti = proto_tree_add_string(header_tree, hf_netmon_header_title_comment, tvb, 0, 0, pinfo->pseudo_header->netmon.title);
414
0
    proto_item_set_generated(ti);
415
0
  }
416
417
0
  if (pinfo->pseudo_header->netmon.description != NULL) {
418
    /* Description comment is only ASCII.  However, it's
419
     * RTF, not raw text.
420
     */
421
422
    /* Ensure string termination */
423
0
    comment = wmem_strndup(pinfo->pool, pinfo->pseudo_header->netmon.description, pinfo->pseudo_header->netmon.descLength);
424
425
0
    ti = proto_tree_add_string(header_tree, hf_netmon_header_description_comment, tvb, 0, 0, comment);
426
0
    proto_item_set_generated(ti);
427
0
  }
428
429
  /* Save the pseudo header data to a temp variable before it's copied to
430
   * real pseudo header
431
   */
432
0
  switch (pinfo->pseudo_header->netmon.sub_encap)
433
0
  {
434
0
  case WTAP_ENCAP_ATM_PDUS:
435
0
    memcpy(&temp_header.atm, &pinfo->pseudo_header->netmon.subheader.atm, sizeof(temp_header.atm));
436
0
    memcpy(&pinfo->pseudo_header->atm, &temp_header.atm, sizeof(temp_header.atm));
437
0
    break;
438
0
  case WTAP_ENCAP_ETHERNET:
439
0
    memcpy(&temp_header.eth, &pinfo->pseudo_header->netmon.subheader.eth, sizeof(temp_header.eth));
440
0
    memcpy(&pinfo->pseudo_header->eth, &temp_header.eth, sizeof(temp_header.eth));
441
0
    break;
442
0
  case WTAP_ENCAP_IEEE_802_11_NETMON:
443
0
    memcpy(&temp_header.ieee_802_11, &pinfo->pseudo_header->netmon.subheader.ieee_802_11, sizeof(temp_header.ieee_802_11));
444
0
    memcpy(&pinfo->pseudo_header->ieee_802_11, &temp_header.ieee_802_11, sizeof(temp_header.ieee_802_11));
445
0
    break;
446
0
  }
447
448
0
  if (!dissector_try_uint_with_data(wtap_encap_table,
449
0
    pinfo->pseudo_header->netmon.sub_encap, tvb, pinfo, tree, true,
450
0
    (void *)pinfo->pseudo_header)) {
451
0
    call_data_dissector(tvb, pinfo, tree);
452
0
  }
453
454
0
  return tvb_captured_length(tvb);
455
0
}
456
457
static int
458
dissect_netmon_event(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
459
0
{
460
0
  proto_item *ti, *extended_data_item;
461
0
  proto_tree *event_tree, *event_desc_tree, *extended_data_tree, *buffer_context_tree;
462
0
  int offset = 0, extended_data_count_offset;
463
0
  uint32_t i, thread_id, process_id, extended_data_count, extended_data_size, user_data_size;
464
0
  nstime_t timestamp;
465
0
  tvbuff_t *provider_id_tvb;
466
0
  guid_key provider_guid;
467
0
  struct netmon_provider_id_data provider_id_data;
468
0
  static int * const event_flags[] = {
469
0
    &hf_netmon_event_flags_extended_info,
470
0
    &hf_netmon_event_flags_private_session,
471
0
    &hf_netmon_event_flags_string_only,
472
0
    &hf_netmon_event_flags_trace_message,
473
0
    &hf_netmon_event_flags_no_cputime,
474
0
    &hf_netmon_event_flags_32bit_header,
475
0
    &hf_netmon_event_flags_64bit_header,
476
0
    &hf_netmon_event_flags_classic_header,
477
0
    NULL
478
0
  };
479
0
  static int * const event_property[] = {
480
0
    &hf_netmon_event_event_property_xml,
481
0
    &hf_netmon_event_event_property_forwarded_xml,
482
0
    &hf_netmon_event_event_property_legacy_eventlog,
483
0
    NULL
484
0
  };
485
486
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon Event");
487
  /* Clear out stuff in the info column */
488
0
  col_clear(pinfo->cinfo, COL_INFO);
489
490
0
  memset(&provider_id_data, 0, sizeof(provider_id_data));
491
492
0
  ti = proto_tree_add_item(tree, proto_netmon_event, tvb, offset, -1, ENC_NA);
493
0
  event_tree = proto_item_add_subtree(ti, ett_netmon_event);
494
495
0
  proto_tree_add_item(event_tree, hf_netmon_event_size, tvb, offset, 2, ENC_LITTLE_ENDIAN);
496
0
  offset += 2;
497
0
  proto_tree_add_item(event_tree, hf_netmon_event_header_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
498
0
  offset += 2;
499
0
  provider_id_data.event_flags = tvb_get_letohs(tvb, offset);
500
0
  proto_tree_add_bitmask(event_tree, tvb, offset, hf_netmon_event_flags, ett_netmon_event_flags, event_flags, ENC_LITTLE_ENDIAN);
501
0
  offset += 2;
502
0
  proto_tree_add_bitmask(event_tree, tvb, offset, hf_netmon_event_event_property, ett_netmon_event_property, event_property, ENC_LITTLE_ENDIAN);
503
0
  offset += 2;
504
0
  proto_tree_add_item_ret_uint(event_tree, hf_netmon_event_thread_id, tvb, offset, 4, ENC_LITTLE_ENDIAN, &thread_id);
505
0
  offset += 4;
506
0
  proto_tree_add_item_ret_uint(event_tree, hf_netmon_event_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN, &process_id);
507
0
  offset += 4;
508
509
0
  timestamp.secs = 0;
510
0
  timestamp.nsecs = 0;
511
0
  filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
512
0
  proto_tree_add_time(event_tree, hf_netmon_event_timestamp, tvb, offset, 8, &timestamp);
513
0
  offset += 8;
514
515
0
  proto_tree_add_item(event_tree, hf_netmon_event_provider_id, tvb, offset, 16, ENC_LITTLE_ENDIAN);
516
  /* Save the GUID to use in dissector table */
517
0
  tvb_memcpy(tvb, &provider_guid.guid, offset, 16);
518
0
  provider_guid.ver = 0; //version field not used
519
0
  offset += 16;
520
521
0
  col_add_fstr(pinfo->cinfo, COL_INFO, "Thread ID: %d, Process ID: %d, Provider ID: %s",
522
0
                    thread_id, process_id, guid_to_str(pinfo->pool, &provider_guid.guid));
523
524
0
  event_desc_tree = proto_tree_add_subtree(event_tree, tvb, offset, 16, ett_netmon_event_desc, NULL, "Event Descriptor");
525
0
  proto_tree_add_item_ret_uint(event_desc_tree, hf_netmon_event_event_desc_id, tvb, offset, 2, ENC_LITTLE_ENDIAN, &provider_id_data.event_id);
526
0
  offset += 2;
527
0
  provider_id_data.event_version = tvb_get_uint8(tvb, offset);
528
0
  proto_tree_add_item(event_desc_tree, hf_netmon_event_event_desc_version, tvb, offset, 1, ENC_LITTLE_ENDIAN);
529
0
  offset += 1;
530
0
  proto_tree_add_item(event_desc_tree, hf_netmon_event_event_desc_channel, tvb, offset, 1, ENC_LITTLE_ENDIAN);
531
0
  offset += 1;
532
0
  proto_tree_add_item(event_desc_tree, hf_netmon_event_event_desc_level, tvb, offset, 1, ENC_LITTLE_ENDIAN);
533
0
  offset += 1;
534
0
  provider_id_data.opcode = tvb_get_uint8(tvb, offset);
535
0
  proto_tree_add_item(event_desc_tree, hf_netmon_event_event_desc_opcode, tvb, offset, 1, ENC_LITTLE_ENDIAN);
536
0
  offset += 1;
537
0
  proto_tree_add_item(event_desc_tree, hf_netmon_event_event_desc_task, tvb, offset, 2, ENC_LITTLE_ENDIAN);
538
0
  offset += 2;
539
0
  proto_tree_add_item_ret_uint64(event_desc_tree, hf_netmon_event_event_desc_keyword, tvb, offset, 8, ENC_LITTLE_ENDIAN, &provider_id_data.keyword);
540
0
  offset += 8;
541
542
0
  if (provider_id_data.event_flags & (EVENT_HEADER_FLAG_PRIVATE_SESSION | EVENT_HEADER_FLAG_NO_CPUTIME))
543
0
  {
544
    /* Kernel and User time are a union with processor time */
545
0
    proto_tree_add_item(event_tree, hf_netmon_event_kernel_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
546
0
    offset += 4;
547
0
    proto_tree_add_item(event_tree, hf_netmon_event_user_time, tvb, offset, 4, ENC_LITTLE_ENDIAN);
548
0
    offset += 4;
549
0
  }
550
0
  else
551
0
  {
552
0
    proto_tree_add_item(event_tree, hf_netmon_event_processor_time, tvb, offset, 8, ENC_LITTLE_ENDIAN);
553
0
    offset += 8;
554
0
  }
555
556
0
  proto_tree_add_item(event_tree, hf_netmon_event_activity_id, tvb, offset, 16, ENC_LITTLE_ENDIAN);
557
0
  offset += 16;
558
559
0
  buffer_context_tree = proto_tree_add_subtree(event_tree, tvb, offset, 4, ett_netmon_event_buffer_context, NULL, "BufferContext");
560
0
  proto_tree_add_item(buffer_context_tree, hf_netmon_event_processor_number, tvb, offset, 1, ENC_LITTLE_ENDIAN);
561
0
  offset += 1;
562
0
  proto_tree_add_item(buffer_context_tree, hf_netmon_event_alignment, tvb, offset, 1, ENC_LITTLE_ENDIAN);
563
0
  offset += 1;
564
0
  proto_tree_add_item(buffer_context_tree, hf_netmon_event_logger_id, tvb, offset, 2, ENC_LITTLE_ENDIAN);
565
0
  offset += 2;
566
567
0
  proto_tree_add_item_ret_uint(event_tree, hf_netmon_event_extended_data_count, tvb, offset, 2, ENC_LITTLE_ENDIAN, &extended_data_count);
568
0
  offset += 2;
569
0
  proto_tree_add_item_ret_uint(event_tree, hf_netmon_event_user_data_length, tvb, offset, 2, ENC_LITTLE_ENDIAN, &user_data_size);
570
0
  offset += 2;
571
0
  proto_tree_add_item(event_tree, hf_netmon_event_reassembled, tvb, offset, 1, ENC_LITTLE_ENDIAN);
572
0
  offset += 1;
573
574
0
  for (i = 1; i <= extended_data_count; i++)
575
0
  {
576
0
    extended_data_count_offset = offset;
577
0
    extended_data_tree = proto_tree_add_subtree_format(event_tree, tvb, offset, 4, ett_netmon_event_extended_data, &extended_data_item, "Extended Data Item #%d", i);
578
0
    proto_tree_add_item(extended_data_tree, hf_netmon_event_extended_data_reserved, tvb, offset, 2, ENC_LITTLE_ENDIAN);
579
0
    offset += 2;
580
0
    proto_tree_add_item(extended_data_tree, hf_netmon_event_extended_data_type, tvb, offset, 2, ENC_LITTLE_ENDIAN);
581
0
    offset += 2;
582
0
    proto_tree_add_item(extended_data_tree, hf_netmon_event_extended_data_linkage, tvb, offset, 2, ENC_LITTLE_ENDIAN);
583
0
    proto_tree_add_item(extended_data_tree, hf_netmon_event_extended_data_reserved2, tvb, offset, 2, ENC_LITTLE_ENDIAN);
584
0
    offset += 2;
585
0
    proto_tree_add_item_ret_uint(extended_data_tree, hf_netmon_event_extended_data_size, tvb, offset, 2, ENC_LITTLE_ENDIAN, &extended_data_size);
586
0
    offset += 2;
587
0
    proto_tree_add_item(extended_data_tree, hf_netmon_event_extended_data, tvb, offset, extended_data_size, ENC_NA);
588
0
    offset += extended_data_size;
589
0
    proto_item_set_len(extended_data_item, offset-extended_data_count_offset);
590
0
  }
591
592
0
  provider_id_tvb = tvb_new_subset_remaining(tvb, offset);
593
0
  if (!dissector_try_guid_with_data(provider_id_table, &provider_guid, provider_id_tvb, pinfo, tree, true, &provider_id_data))
594
0
  {
595
0
    proto_tree_add_item(event_tree, hf_netmon_event_user_data, tvb, offset, user_data_size, ENC_NA);
596
0
    offset += user_data_size;
597
0
  }
598
0
  proto_item_set_len(ti, offset);
599
0
  return tvb_captured_length(tvb);
600
0
}
601
602
603
static int
604
dissect_netmon_filter(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
605
0
{
606
0
  proto_item *ti;
607
0
  proto_tree *filter_tree;
608
0
  int offset = 0;
609
0
  unsigned length;
610
0
  const uint8_t* filter;
611
612
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon Filter");
613
  /* Clear out stuff in the info column */
614
0
  col_clear(pinfo->cinfo, COL_INFO);
615
616
0
  ti = proto_tree_add_item(tree, proto_netmon_filter, tvb, offset, -1, ENC_NA);
617
0
  filter_tree = proto_item_add_subtree(ti, ett_netmon_filter);
618
619
0
  proto_tree_add_item(filter_tree, hf_netmon_filter_version, tvb, offset, 2, ENC_BIG_ENDIAN);
620
0
  offset += 2;
621
0
  proto_tree_add_item(filter_tree, hf_netmon_filter_type, tvb, offset, 4, ENC_BIG_ENDIAN);
622
0
  offset += 4;
623
0
  proto_tree_add_item(filter_tree, hf_netmon_filter_app_major_version, tvb, offset, 4, ENC_BIG_ENDIAN);
624
0
  offset += 4;
625
0
  proto_tree_add_item(filter_tree, hf_netmon_filter_app_minor_version, tvb, offset, 4, ENC_BIG_ENDIAN);
626
0
  offset += 4;
627
0
  length = tvb_unicode_strsize(tvb, offset);
628
0
  proto_tree_add_item(filter_tree, hf_netmon_filter_app_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
629
0
  offset += length;
630
0
  length = tvb_unicode_strsize(tvb, offset);
631
0
  proto_tree_add_item_ret_string(filter_tree, hf_netmon_filter_filter, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16,
632
0
                  pinfo->pool, &filter);
633
0
  col_add_fstr(pinfo->cinfo, COL_INFO, "Filter: %s", filter);
634
635
0
  return tvb_captured_length(tvb);
636
0
}
637
638
639
static int
640
dissect_netmon_network_info(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
641
0
{
642
0
  proto_item *ti, *list_item, *adapter_item;
643
0
  proto_tree *network_info_tree, *list_tree, *adapter_tree;
644
0
  int offset = 0, list_start_offset, adapter_start_offset;
645
0
  unsigned adapter, adapter_count, length;
646
0
  uint64_t link_speed;
647
648
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon Network Info");
649
  /* Clear out stuff in the info column */
650
0
  col_clear(pinfo->cinfo, COL_INFO);
651
652
0
  ti = proto_tree_add_item(tree, proto_netmon_network_info, tvb, offset, -1, ENC_NA);
653
0
  network_info_tree = proto_item_add_subtree(ti, ett_netmon_network_info);
654
655
0
  proto_tree_add_item(network_info_tree, hf_netmon_network_info_version, tvb, offset, 2, ENC_BIG_ENDIAN);
656
0
  offset += 2;
657
658
0
  proto_tree_add_item_ret_uint(network_info_tree, hf_netmon_network_info_adapter_count, tvb, offset, 2, ENC_BIG_ENDIAN, &adapter_count);
659
0
  offset += 2;
660
0
  col_add_fstr(pinfo->cinfo, COL_INFO, "Adapter count: %d", adapter_count);
661
662
0
  length = tvb_unicode_strsize(tvb, offset);
663
0
  proto_tree_add_item(network_info_tree, hf_netmon_network_info_computer_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
664
0
  offset += length;
665
0
  if (adapter_count > 0)
666
0
  {
667
0
    list_start_offset = offset;
668
0
    list_tree = proto_tree_add_subtree(network_info_tree, tvb, offset, 1, ett_netmon_network_info_list, &list_item, "NetworkInfo");
669
0
    for (adapter = 1; adapter <= adapter_count; adapter++)
670
0
    {
671
0
      uint32_t loop, ipv4_count, ipv6_count, gateway_count, dhcp_server_count, dns_ipv4_count, dns_ipv6_count;
672
673
0
      adapter_start_offset = offset;
674
0
      adapter_tree = proto_tree_add_subtree_format(list_tree, tvb, offset, 1, ett_netmon_network_info_adapter, &adapter_item, "Adapter #%d", adapter);
675
676
0
      length = tvb_unicode_strsize(tvb, offset);
677
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_friendly_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
678
0
      offset += length;
679
0
      length = tvb_unicode_strsize(tvb, offset);
680
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_description, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
681
0
      offset += length;
682
0
      length = tvb_unicode_strsize(tvb, offset);
683
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_miniport_guid, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
684
0
      offset += length;
685
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_media_type, tvb, offset, 4, ENC_BIG_ENDIAN);
686
0
      offset += 4;
687
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_mtu, tvb, offset, 4, ENC_BIG_ENDIAN);
688
0
      offset += 4;
689
0
      link_speed = tvb_get_ntoh64(tvb, offset);
690
0
      if (link_speed == 0xFFFFFFFFFFFFFFFF)
691
0
      {
692
0
          proto_tree_add_uint64_format_value(adapter_tree, hf_netmon_network_info_link_speed, tvb, offset, 8, link_speed, "(Unknown)");
693
0
      }
694
0
      else if (link_speed >= 1000 * 1000 * 1000)
695
0
      {
696
0
          proto_tree_add_uint64_format_value(adapter_tree, hf_netmon_network_info_link_speed, tvb, offset, 8, link_speed, "%" PRIu64 " Gbps", link_speed/(1000*1000*1000));
697
0
      }
698
0
      else if (link_speed >= 1000 * 1000)
699
0
      {
700
0
          proto_tree_add_uint64_format_value(adapter_tree, hf_netmon_network_info_link_speed, tvb, offset, 8, link_speed, "%" PRIu64 " Mbps", link_speed/(1000*1000));
701
0
      }
702
0
      else if (link_speed >= 1000)
703
0
      {
704
0
          proto_tree_add_uint64_format_value(adapter_tree, hf_netmon_network_info_link_speed, tvb, offset, 8, link_speed, "%" PRIu64 " Kbps", link_speed/1000);
705
0
      }
706
0
      else
707
0
      {
708
0
          proto_tree_add_uint64_format_value(adapter_tree, hf_netmon_network_info_link_speed, tvb, offset, 8, link_speed, "%" PRIu64 " bps", link_speed);
709
0
      }
710
0
      offset += 8;
711
0
      proto_tree_add_item(adapter_tree, hf_netmon_network_info_mac_address, tvb, offset, 6, ENC_NA);
712
0
      offset += 6;
713
714
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_ipv4_count, tvb, offset, 2, ENC_BIG_ENDIAN, &ipv4_count);
715
0
      offset += 2;
716
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_ipv6_count, tvb, offset, 2, ENC_BIG_ENDIAN, &ipv6_count);
717
0
      offset += 2;
718
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_gateway_count, tvb, offset, 2, ENC_BIG_ENDIAN, &gateway_count);
719
0
      offset += 2;
720
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_dhcp_server_count, tvb, offset, 2, ENC_BIG_ENDIAN, &dhcp_server_count);
721
0
      offset += 2;
722
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_dns_ipv4_count, tvb, offset, 2, ENC_BIG_ENDIAN, &dns_ipv4_count);
723
0
      offset += 2;
724
0
      proto_tree_add_item_ret_uint(adapter_tree, hf_netmon_network_info_dns_ipv6_count, tvb, offset, 2, ENC_BIG_ENDIAN, &dns_ipv6_count);
725
0
      offset += 2;
726
727
0
      for (loop = 0; loop < ipv4_count; loop++)
728
0
      {
729
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
730
0
        offset += 4;
731
0
      }
732
0
      for (loop = 0; loop < ipv4_count; loop++)
733
0
      {
734
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_subnet, tvb, offset, 4, ENC_BIG_ENDIAN);
735
0
        offset += 4;
736
0
      }
737
0
      for (loop = 0; loop < ipv6_count; loop++)
738
0
      {
739
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_ipv6, tvb, offset, 16, ENC_NA);
740
0
        offset += 16;
741
0
      }
742
0
      for (loop = 0; loop < gateway_count; loop++)
743
0
      {
744
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_gateway, tvb, offset, 4, ENC_BIG_ENDIAN);
745
0
        offset += 4;
746
0
      }
747
0
      for (loop = 0; loop < dhcp_server_count; loop++)
748
0
      {
749
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_dhcp_server, tvb, offset, 4, ENC_BIG_ENDIAN);
750
0
        offset += 4;
751
0
      }
752
0
      for (loop = 0; loop < dns_ipv4_count; loop++)
753
0
      {
754
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_dns_ipv4, tvb, offset, 4, ENC_BIG_ENDIAN);
755
0
        offset += 4;
756
0
      }
757
0
      for (loop = 0; loop < dns_ipv6_count; loop++)
758
0
      {
759
0
        proto_tree_add_item(adapter_tree, hf_netmon_network_info_dns_ipv6, tvb, offset, 16, ENC_NA);
760
0
        offset += 16;
761
0
      }
762
763
0
      proto_item_set_len(adapter_item, offset-adapter_start_offset);
764
0
    }
765
766
0
    proto_item_set_len(list_item, offset-list_start_offset);
767
0
  }
768
769
0
  return tvb_captured_length(tvb);
770
0
}
771
772
static int
773
dissect_netmon_system_trace(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
774
0
{
775
0
  proto_item *ti;
776
0
  proto_tree *system_tree;
777
0
  int offset = 0;
778
0
  struct netmon_provider_id_data *provider_id_data = (struct netmon_provider_id_data*)data;
779
0
  unsigned length;
780
0
  nstime_t timestamp;
781
0
  uint64_t raw_timestamp;
782
783
0
  DISSECTOR_ASSERT(provider_id_data != NULL);
784
785
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon System Trace");
786
0
  col_clear(pinfo->cinfo, COL_INFO);
787
788
0
  ti = proto_tree_add_item(tree, proto_netmon_system_trace, tvb, 0, -1, ENC_NA);
789
0
  system_tree = proto_item_add_subtree(ti, ett_netmon_system_trace);
790
791
0
  switch (provider_id_data->opcode)
792
0
  {
793
0
  case 0:
794
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_buffer_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
795
0
    offset += 4;
796
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_version, tvb, offset, 4, ENC_LITTLE_ENDIAN);
797
0
    offset += 4;
798
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_provider_version, tvb, offset, 4, ENC_LITTLE_ENDIAN);
799
0
    offset += 4;
800
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_num_processors, tvb, offset, 4, ENC_LITTLE_ENDIAN);
801
0
    offset += 4;
802
803
0
    raw_timestamp = tvb_get_letoh64(tvb, offset);
804
0
    if (raw_timestamp != 0)
805
0
    {
806
0
      timestamp.secs = 0;
807
0
      timestamp.nsecs = 0;
808
0
      filetime_to_nstime(&timestamp, raw_timestamp);
809
0
      proto_tree_add_time(system_tree, hf_netmon_system_trace_end_time, tvb, offset, 8, &timestamp);
810
0
    }
811
0
    else
812
0
    {
813
0
      proto_tree_add_time_format_value(system_tree, hf_netmon_system_trace_end_time, tvb, offset, 8, &timestamp, "(None)");
814
0
    }
815
0
    offset += 8;
816
817
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_timer_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
818
0
    offset += 4;
819
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_max_file_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
820
0
    offset += 4;
821
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_log_file_mode, tvb, offset, 4, ENC_LITTLE_ENDIAN);
822
0
    offset += 4;
823
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_buffers_written, tvb, offset, 4, ENC_LITTLE_ENDIAN);
824
0
    offset += 4;
825
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_start_buffers, tvb, offset, 4, ENC_LITTLE_ENDIAN);
826
0
    offset += 4;
827
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_pointers_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
828
0
    offset += 4;
829
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_events_lost, tvb, offset, 4, ENC_LITTLE_ENDIAN);
830
0
    offset += 4;
831
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_cpu_speed, tvb, offset, 4, ENC_LITTLE_ENDIAN);
832
0
    offset += 4;
833
0
    netmon_etl_field(system_tree, tvb, &offset, hf_netmon_system_trace_logger_name, provider_id_data->event_flags);
834
0
    netmon_etl_field(system_tree, tvb, &offset, hf_netmon_system_trace_log_file_name_ptr, provider_id_data->event_flags);
835
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_time_zone_info, tvb, offset, 176, ENC_NA);
836
0
    offset += 176;
837
838
0
    timestamp.secs = 0;
839
0
    timestamp.nsecs = 0;
840
0
    filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
841
0
    proto_tree_add_time(system_tree, hf_netmon_system_trace_boot_time, tvb, offset, 8, &timestamp);
842
0
    offset += 8;
843
844
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_perf_freq, tvb, offset, 8, ENC_LITTLE_ENDIAN);
845
0
    offset += 8;
846
847
0
    timestamp.secs = 0;
848
0
    timestamp.nsecs = 0;
849
0
    filetime_to_nstime(&timestamp, tvb_get_letoh64(tvb, offset));
850
0
    proto_tree_add_time(system_tree, hf_netmon_system_trace_start_time, tvb, offset, 8, &timestamp);
851
0
    offset += 8;
852
853
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_reserved_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
854
0
    offset += 4;
855
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_buffers_lost, tvb, offset, 4, ENC_LITTLE_ENDIAN);
856
0
    offset += 4;
857
0
    length = tvb_unicode_strsize(tvb, offset);
858
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_session_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
859
0
    offset += length;
860
0
    length = tvb_unicode_strsize(tvb, offset);
861
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_log_file_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
862
0
    break;
863
0
  case 5:
864
0
  case 32:
865
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask1, tvb, offset, 4, ENC_LITTLE_ENDIAN);
866
0
    offset += 4;
867
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask2, tvb, offset, 4, ENC_LITTLE_ENDIAN);
868
0
    offset += 4;
869
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask3, tvb, offset, 4, ENC_LITTLE_ENDIAN);
870
0
    offset += 4;
871
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask4, tvb, offset, 4, ENC_LITTLE_ENDIAN);
872
0
    offset += 4;
873
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask5, tvb, offset, 4, ENC_LITTLE_ENDIAN);
874
0
    offset += 4;
875
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask6, tvb, offset, 4, ENC_LITTLE_ENDIAN);
876
0
    offset += 4;
877
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask7, tvb, offset, 4, ENC_LITTLE_ENDIAN);
878
0
    offset += 4;
879
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_group_mask8, tvb, offset, 4, ENC_LITTLE_ENDIAN);
880
0
    offset += 4;
881
0
    proto_tree_add_item(system_tree, hf_netmon_system_trace_kernel_event_version, tvb, offset, 4, ENC_LITTLE_ENDIAN);
882
0
    offset += 4;
883
0
    break;
884
0
  case 8: // EventTrace_RDComplete
885
0
    break;
886
0
  }
887
888
0
  return tvb_captured_length(tvb);
889
0
}
890
891
static int
892
dissect_netmon_system_config(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
893
0
{
894
0
  proto_item *ti;
895
0
  proto_tree *system_tree;
896
0
  int offset = 0;
897
0
  struct netmon_provider_id_data *provider_id_data = (struct netmon_provider_id_data*)data;
898
0
  unsigned length;
899
0
  uint32_t field1, field2;
900
0
  const uint8_t *str_field1, *str_field2, *str_field3, *str_field4;
901
902
0
  DISSECTOR_ASSERT(provider_id_data != NULL);
903
904
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon System Config");
905
0
  col_clear(pinfo->cinfo, COL_INFO);
906
907
0
  ti = proto_tree_add_item(tree, proto_netmon_system_config, tvb, 0, -1, ENC_NA);
908
0
  system_tree = proto_item_add_subtree(ti, ett_netmon_system_config);
909
910
0
  switch (provider_id_data->event_version)
911
0
  {
912
  // SystemConfig_V0
913
0
  case 0:
914
0
    switch (provider_id_data->opcode)
915
0
    {
916
0
    case 10:
917
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_mhz, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
918
0
      offset += 4;
919
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_num_processors, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field2);
920
0
      offset += 4;
921
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Processors: %u, (%u MHz)", field2, field1);
922
923
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_mem_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
924
0
      offset += 4;
925
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_page_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
926
0
      offset += 4;
927
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_allocation_granularity, tvb, offset, 4, ENC_LITTLE_ENDIAN);
928
0
      offset += 4;
929
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_computer_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
930
0
      offset += 512;
931
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_domain_name, tvb, offset, 264, ENC_LITTLE_ENDIAN|ENC_UTF_16);
932
0
      offset += 264;
933
0
      netmon_etl_field(system_tree, tvb, &offset, hf_netmon_system_config_hyper_threading_flag, provider_id_data->event_flags);
934
0
      break;
935
0
    case 11:
936
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
937
0
      offset += 4;
938
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
939
0
      offset += 4;
940
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_track, tvb, offset, 4, ENC_LITTLE_ENDIAN);
941
0
      offset += 4;
942
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_tracks_per_cylinder, tvb, offset, 4, ENC_LITTLE_ENDIAN);
943
0
      offset += 4;
944
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_cylinders, tvb, offset, 8, ENC_LITTLE_ENDIAN);
945
0
      offset += 8;
946
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_port, tvb, offset, 4, ENC_LITTLE_ENDIAN);
947
0
      offset += 4;
948
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_path, tvb, offset, 4, ENC_LITTLE_ENDIAN);
949
0
      offset += 4;
950
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_target, tvb, offset, 4, ENC_LITTLE_ENDIAN);
951
0
      offset += 4;
952
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_lun, tvb, offset, 4, ENC_LITTLE_ENDIAN);
953
0
      offset += 4;
954
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_manufacturer, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
955
0
      offset += 512;
956
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
957
0
      offset += 4;
958
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_write_cache_enabled, tvb, offset, 1, ENC_LITTLE_ENDIAN);
959
0
      offset += 1;
960
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 1, ENC_NA);
961
0
      offset += 1;
962
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_boot_drive_letter, tvb, offset, 6, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
963
0
      offset += 6;
964
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_spare, tvb, offset, 4, ENC_LITTLE_ENDIAN|ENC_UTF_16);
965
0
      offset += 4;
966
967
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Manufacturer: %s, BootDriveLetter: %s", str_field1, str_field2);
968
0
      break;
969
0
    case 12:
970
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_start_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN);
971
0
      offset += 8;
972
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_size, tvb, offset, 8, ENC_LITTLE_ENDIAN);
973
0
      offset += 8;
974
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
975
0
      offset += 4;
976
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
977
0
      offset += 4;
978
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_drive_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
979
0
      offset += 4;
980
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_drive_letter, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
981
0
      offset += 8;
982
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
983
0
      offset += 4;
984
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
985
0
      offset += 4;
986
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_cluster, tvb, offset, 4, ENC_LITTLE_ENDIAN);
987
0
      offset += 4;
988
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
989
0
      offset += 4;
990
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
991
0
      offset += 4;
992
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_num_free_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
993
0
      offset += 8;
994
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_total_num_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
995
0
      offset += 8;
996
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_file_system, tvb, offset, 32, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
997
0
      offset += 32;
998
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Drive: %s, FileSystem: %s", str_field1, str_field2);
999
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_volume_ext, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1000
0
      offset += 4;
1001
0
      break;
1002
0
    case 13:
1003
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_nic_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1004
0
      offset += 512;
1005
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1006
0
      offset += 4;
1007
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1008
0
      offset += 4;
1009
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr_str, tvb, offset, 16, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1010
0
      offset += 16;
1011
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1012
0
      offset += 4;
1013
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1014
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "NIC: %s, Address: %s", str_field1, tvb_ip_to_str(pinfo->pool, tvb, offset));
1015
0
      offset += 4;
1016
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_subnet_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
1017
0
      offset += 4;
1018
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dhcp_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1019
0
      offset += 4;
1020
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_gateway, tvb, offset, 4, ENC_BIG_ENDIAN);
1021
0
      offset += 4;
1022
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_primary_wins_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1023
0
      offset += 4;
1024
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_secondary_wins_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1025
0
      offset += 4;
1026
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server1, tvb, offset, 4, ENC_BIG_ENDIAN);
1027
0
      offset += 4;
1028
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server2, tvb, offset, 4, ENC_BIG_ENDIAN);
1029
0
      offset += 4;
1030
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server3, tvb, offset, 4, ENC_BIG_ENDIAN);
1031
0
      offset += 4;
1032
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server4, tvb, offset, 4, ENC_BIG_ENDIAN);
1033
0
      offset += 4;
1034
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_data, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1035
0
      offset += 4;
1036
0
      break;
1037
0
    case 14:
1038
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_memory_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1039
0
      offset += 4;
1040
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_x_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1041
0
      offset += 4;
1042
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_y_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1043
0
      offset += 4;
1044
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bits_per_pixel, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1045
0
      offset += 4;
1046
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_vrefresh, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1047
0
      offset += 4;
1048
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_chip_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1049
0
      offset += 512;
1050
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dac_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1051
0
      offset += 512;
1052
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_adapter_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1053
0
      offset += 512;
1054
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_bios_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field3);
1055
0
      offset += 512;
1056
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Chip: %s, Adapter: %s, Bios: %s", str_field1, str_field2, str_field3);
1057
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1058
0
      offset += 512;
1059
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_state_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1060
0
      offset += 4;
1061
0
      break;
1062
0
    case 15:
1063
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_service_name, tvb, offset, 68, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1064
0
      offset += 68;
1065
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_display_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1066
0
      offset += 512;
1067
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_process_name, tvb, offset, 68, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1068
0
      offset += 68;
1069
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Service: %s, Process: %s", str_field1, str_field2);
1070
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1071
0
      offset += 4;
1072
0
      break;
1073
0
    case 16:
1074
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1075
0
      offset += 1;
1076
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1077
0
      offset += 1;
1078
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s3, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1079
0
      offset += 1;
1080
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s4, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1081
0
      offset += 1;
1082
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s5, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1083
0
      offset += 1;
1084
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 3, ENC_NA);
1085
0
      offset += 3;
1086
0
      break;
1087
0
    case 21:
1088
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_irq_affinity, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1089
0
      offset += 8;
1090
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_irq_num, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1091
0
      offset += 4;
1092
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "IRQ: %u", field1);
1093
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1094
0
      offset += 4;
1095
      /* XXX - can we trust size above? */
1096
0
      length = tvb_unicode_strsize(tvb, offset);
1097
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1098
0
      offset += length;
1099
0
      break;
1100
0
    case 22:
1101
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1102
0
      offset += 4;
1103
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1104
0
      offset += 4;
1105
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_friendly_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1106
0
      offset += 4;
1107
      /* XXX - can we trust sizes above? */
1108
0
      length = tvb_unicode_strsize(tvb, offset);
1109
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_device_id, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1110
0
      offset += length;
1111
0
      length = tvb_unicode_strsize(tvb, offset);
1112
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1113
0
      offset += length;
1114
0
      length = tvb_unicode_strsize(tvb, offset);
1115
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_friendly_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1116
0
      offset += length;
1117
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "ID: %s, Name: %s", str_field1, str_field2);
1118
0
      length = tvb_unicode_strsize(tvb, offset);
1119
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pdo_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1120
0
      offset += length;
1121
0
      break;
1122
0
    }
1123
0
    break;
1124
  // SystemConfig_V1
1125
0
  case 1:
1126
0
    switch (provider_id_data->opcode)
1127
0
    {
1128
0
    case 10:
1129
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_mhz, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1130
0
      offset += 4;
1131
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_num_processors, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field2);
1132
0
      offset += 4;
1133
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Processors: %u, (%u MHz)", field2, field1);
1134
1135
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_mem_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1136
0
      offset += 4;
1137
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_page_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1138
0
      offset += 4;
1139
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_allocation_granularity, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1140
0
      offset += 4;
1141
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_computer_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1142
0
      offset += 512;
1143
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_domain_name, tvb, offset, 264, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1144
0
      offset += 264;
1145
0
      netmon_etl_field(system_tree, tvb, &offset, hf_netmon_system_config_hyper_threading_flag, provider_id_data->event_flags);
1146
0
      break;
1147
0
    case 11:
1148
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1149
0
      offset += 4;
1150
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1151
0
      offset += 4;
1152
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_track, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1153
0
      offset += 4;
1154
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_tracks_per_cylinder, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1155
0
      offset += 4;
1156
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_cylinders, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1157
0
      offset += 8;
1158
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_port, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1159
0
      offset += 4;
1160
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_path, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1161
0
      offset += 4;
1162
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_target, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1163
0
      offset += 4;
1164
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_lun, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1165
0
      offset += 4;
1166
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_manufacturer, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1167
0
      offset += 512;
1168
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1169
0
      offset += 4;
1170
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_write_cache_enabled, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1171
0
      offset += 1;
1172
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 1, ENC_NA);
1173
0
      offset += 1;
1174
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_boot_drive_letter, tvb, offset, 6, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1175
0
      offset += 6;
1176
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_spare, tvb, offset, 4, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1177
0
      offset += 4;
1178
1179
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Manufacturer: %s, BootDriveLetter: %s", str_field1, str_field2);
1180
0
      break;
1181
0
    case 12:
1182
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_start_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1183
0
      offset += 8;
1184
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_size, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1185
0
      offset += 8;
1186
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1187
0
      offset += 4;
1188
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1189
0
      offset += 4;
1190
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_drive_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1191
0
      offset += 4;
1192
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_drive_letter, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1193
0
      offset += 8;
1194
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
1195
0
      offset += 4;
1196
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1197
0
      offset += 4;
1198
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_cluster, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1199
0
      offset += 4;
1200
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1201
0
      offset += 4;
1202
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
1203
0
      offset += 4;
1204
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_num_free_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1205
0
      offset += 8;
1206
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_total_num_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1207
0
      offset += 8;
1208
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_file_system, tvb, offset, 32, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1209
0
      offset += 32;
1210
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Drive: %s, FileSystem: %s", str_field1, str_field2);
1211
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_volume_ext, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1212
0
      offset += 4;
1213
0
      break;
1214
0
    case 13:
1215
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_nic_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1216
0
      offset += 512;
1217
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1218
0
      offset += 4;
1219
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1220
0
      offset += 4;
1221
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr_str, tvb, offset, 16, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1222
0
      offset += 16;
1223
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1224
0
      offset += 4;
1225
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_ip_address, tvb, offset, 4, ENC_BIG_ENDIAN);
1226
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "NIC: %s, Address: %s", str_field1, tvb_ip_to_str(pinfo->pool, tvb, offset));
1227
0
      offset += 4;
1228
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_subnet_mask, tvb, offset, 4, ENC_BIG_ENDIAN);
1229
0
      offset += 4;
1230
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dhcp_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1231
0
      offset += 4;
1232
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_gateway, tvb, offset, 4, ENC_BIG_ENDIAN);
1233
0
      offset += 4;
1234
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_primary_wins_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1235
0
      offset += 4;
1236
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_secondary_wins_server, tvb, offset, 4, ENC_BIG_ENDIAN);
1237
0
      offset += 4;
1238
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server1, tvb, offset, 4, ENC_BIG_ENDIAN);
1239
0
      offset += 4;
1240
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server2, tvb, offset, 4, ENC_BIG_ENDIAN);
1241
0
      offset += 4;
1242
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server3, tvb, offset, 4, ENC_BIG_ENDIAN);
1243
0
      offset += 4;
1244
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server4, tvb, offset, 4, ENC_BIG_ENDIAN);
1245
0
      offset += 4;
1246
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_data, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1247
0
      offset += 4;
1248
0
      break;
1249
0
    case 14:
1250
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_memory_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1251
0
      offset += 4;
1252
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_x_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1253
0
      offset += 4;
1254
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_y_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1255
0
      offset += 4;
1256
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bits_per_pixel, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1257
0
      offset += 4;
1258
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_vrefresh, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1259
0
      offset += 4;
1260
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_chip_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1261
0
      offset += 512;
1262
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dac_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1263
0
      offset += 512;
1264
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_adapter_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1265
0
      offset += 512;
1266
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_bios_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field3);
1267
0
      offset += 512;
1268
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Chip: %s, Adapter: %s, Bios: %s", str_field1, str_field2, str_field3);
1269
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1270
0
      offset += 512;
1271
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_state_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1272
0
      offset += 4;
1273
0
      break;
1274
0
    case 15:
1275
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_service_name, tvb, offset, 68, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1276
0
      offset += 68;
1277
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_display_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1278
0
      offset += 512;
1279
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_process_name, tvb, offset, 68, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1280
0
      offset += 68;
1281
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Service: %s, Process: %s", str_field1, str_field2);
1282
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1283
0
      offset += 4;
1284
0
      break;
1285
0
    case 16:
1286
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1287
0
      offset += 1;
1288
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1289
0
      offset += 1;
1290
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s3, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1291
0
      offset += 1;
1292
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s4, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1293
0
      offset += 1;
1294
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s5, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1295
0
      offset += 1;
1296
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 3, ENC_NA);
1297
0
      offset += 3;
1298
0
      break;
1299
0
    case 21:
1300
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_irq_affinity, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1301
0
      offset += 8;
1302
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_irq_num, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1303
0
      offset += 4;
1304
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "IRQ: %u", field1);
1305
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1306
0
      offset += 4;
1307
      /* XXX - can we trust size above? */
1308
0
      length = tvb_unicode_strsize(tvb, offset);
1309
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1310
0
      offset += length;
1311
0
      break;
1312
0
    case 22:
1313
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1314
0
      offset += 4;
1315
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1316
0
      offset += 4;
1317
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_friendly_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1318
0
      offset += 4;
1319
      /* XXX - can we trust sizes above? */
1320
0
      length = tvb_unicode_strsize(tvb, offset);
1321
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_device_id, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1322
0
      offset += length;
1323
0
      length = tvb_unicode_strsize(tvb, offset);
1324
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1325
0
      offset += length;
1326
0
      length = tvb_unicode_strsize(tvb, offset);
1327
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_friendly_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1328
0
      offset += length;
1329
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "ID: %s, Name: %s", str_field1, str_field2);
1330
0
      length = tvb_unicode_strsize(tvb, offset);
1331
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pdo_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1332
0
      offset += length;
1333
0
      break;
1334
0
    }
1335
0
    break;
1336
  // SystemConfig_V2
1337
0
  case 2:
1338
0
    switch (provider_id_data->opcode)
1339
0
    {
1340
0
    case 10:
1341
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_mhz, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1342
0
      offset += 4;
1343
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_num_processors, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field2);
1344
0
      offset += 4;
1345
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Processors: %u, (%u MHz)", field2, field1);
1346
1347
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_mem_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1348
0
      offset += 4;
1349
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_page_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1350
0
      offset += 4;
1351
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_allocation_granularity, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1352
0
      offset += 4;
1353
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_computer_name, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1354
0
      offset += 512;
1355
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_domain_name, tvb, offset, 268, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1356
0
      offset += 268;
1357
0
      netmon_etl_field(system_tree, tvb, &offset, hf_netmon_system_config_hyper_threading_flag, provider_id_data->event_flags);
1358
0
      break;
1359
0
    case 11:
1360
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1361
0
      offset += 4;
1362
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1363
0
      offset += 4;
1364
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_track, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1365
0
      offset += 4;
1366
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_tracks_per_cylinder, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1367
0
      offset += 4;
1368
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_cylinders, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1369
0
      offset += 8;
1370
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_port, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1371
0
      offset += 4;
1372
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_path, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1373
0
      offset += 4;
1374
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_target, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1375
0
      offset += 4;
1376
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_scsi_lun, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1377
0
      offset += 4;
1378
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_manufacturer, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1379
0
      offset += 512;
1380
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1381
0
      offset += 4;
1382
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_write_cache_enabled, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1383
0
      offset += 1;
1384
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 1, ENC_NA);
1385
0
      offset += 1;
1386
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_boot_drive_letter, tvb, offset, 6, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1387
0
      offset += 6;
1388
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_spare, tvb, offset, 4, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1389
0
      offset += 4;
1390
1391
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Manufacturer: %s, BootDriveLetter: %s", str_field1, str_field2);
1392
0
      break;
1393
0
    case 12:
1394
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_start_offset, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1395
0
      offset += 8;
1396
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_size, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1397
0
      offset += 8;
1398
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_disk_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1399
0
      offset += 4;
1400
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1401
0
      offset += 4;
1402
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_drive_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1403
0
      offset += 4;
1404
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_drive_letter, tvb, offset, 8, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1405
0
      offset += 8;
1406
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
1407
0
      offset += 4;
1408
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_partition_number, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1409
0
      offset += 4;
1410
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sectors_per_cluster, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1411
0
      offset += 4;
1412
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bytes_per_sector, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1413
0
      offset += 4;
1414
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
1415
0
      offset += 4;
1416
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_num_free_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1417
0
      offset += 8;
1418
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_total_num_clusters, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1419
0
      offset += 8;
1420
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_file_system, tvb, offset, 32, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1421
0
      offset += 32;
1422
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Drive: %s, FileSystem: %s", str_field1, str_field2);
1423
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_volume_ext, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1424
0
      offset += 4;
1425
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 4, ENC_NA);
1426
0
      offset += 4;
1427
0
      break;
1428
0
    case 13:
1429
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1430
0
      offset += 8;
1431
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_physical_addr_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1432
0
      offset += 4;
1433
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_ipv4_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1434
0
      offset += 4;
1435
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_ipv6_index, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1436
0
      offset += 4;
1437
0
      length = tvb_unicode_strsize(tvb, offset);
1438
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_nic_description, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1439
0
      offset += length;
1440
0
      length = tvb_unicode_strsize(tvb, offset);
1441
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_ipaddresses, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1442
0
      offset += length;
1443
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "IP Addresses: %s", str_field1);
1444
0
      length = tvb_unicode_strsize(tvb, offset);
1445
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dns_server_addresses, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1446
0
      offset += length;
1447
0
      break;
1448
0
    case 14:
1449
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_memory_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1450
0
      offset += 4;
1451
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_x_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1452
0
      offset += 4;
1453
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_y_resolution, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1454
0
      offset += 4;
1455
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_bits_per_pixel, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1456
0
      offset += 4;
1457
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_vrefresh, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1458
0
      offset += 4;
1459
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_chip_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1460
0
      offset += 512;
1461
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_dac_type, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1462
0
      offset += 512;
1463
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_adapter_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1464
0
      offset += 512;
1465
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_bios_string, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field3);
1466
0
      offset += 512;
1467
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Chip: %s, Adapter: %s, Bios: %s", str_field1, str_field2, str_field3);
1468
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id, tvb, offset, 512, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1469
0
      offset += 512;
1470
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_state_flags, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1471
0
      offset += 4;
1472
0
      break;
1473
0
    case 15:
1474
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1475
0
      offset += 4;
1476
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_service_state, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1477
0
      offset += 4;
1478
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sub_process_tag, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1479
0
      offset += 4;
1480
0
      length = tvb_unicode_strsize(tvb, offset);
1481
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_service_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1482
0
      offset += length;
1483
0
      length = tvb_unicode_strsize(tvb, offset);
1484
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_display_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1485
0
      offset += length;
1486
0
      length = tvb_unicode_strsize(tvb, offset);
1487
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_process_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1488
0
      offset += length;
1489
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Service: %s, Process: %s", str_field1, str_field2);
1490
0
      break;
1491
0
    case 16:
1492
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s1, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1493
0
      offset += 1;
1494
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s2, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1495
0
      offset += 1;
1496
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s3, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1497
0
      offset += 1;
1498
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s4, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1499
0
      offset += 1;
1500
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_s5, tvb, offset, 1, ENC_LITTLE_ENDIAN);
1501
0
      offset += 1;
1502
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 3, ENC_NA);
1503
0
      offset += 3;
1504
0
      break;
1505
0
    case 17:
1506
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_tcb_table_partitions, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1507
0
      offset += 4;
1508
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_max_hash_table_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1509
0
      offset += 4;
1510
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_max_user_port, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1511
0
      offset += 4;
1512
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_tcp_timed_wait_delay, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1513
0
      offset += 4;
1514
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "MaxUserPort: %u", field1);
1515
0
      break;
1516
0
    case 21:
1517
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_irq_affinity, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1518
0
      offset += 8;
1519
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_irq_num, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1520
0
      offset += 4;
1521
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "IRQ: %u", field1);
1522
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1523
0
      offset += 4;
1524
      /* XXX - can we trust size above? */
1525
0
      length = tvb_unicode_strsize(tvb, offset);
1526
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1527
0
      offset += length;
1528
0
      break;
1529
0
    case 22:
1530
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1531
0
      offset += 4;
1532
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1533
0
      offset += 4;
1534
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_friendly_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1535
0
      offset += 4;
1536
      /* XXX - can we trust sizes above? */
1537
0
      length = tvb_unicode_strsize(tvb, offset);
1538
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_device_id, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1539
0
      offset += length;
1540
0
      length = tvb_unicode_strsize(tvb, offset);
1541
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1542
0
      offset += length;
1543
0
      length = tvb_unicode_strsize(tvb, offset);
1544
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_friendly_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1545
0
      offset += length;
1546
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "ID: %s, Name: %s", str_field1, str_field2);
1547
0
      break;
1548
0
    case 23:
1549
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_target_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1550
0
      offset += 4;
1551
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_type, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1552
0
      offset += 4;
1553
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_timing_mode, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1554
0
      offset += 4;
1555
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_location_information_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1556
0
      offset += 4;
1557
0
      length = tvb_unicode_strsize(tvb, offset);
1558
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_location_information, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1559
0
      offset += length;
1560
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Location: %s", str_field1);
1561
0
      break;
1562
0
    case 25:
1563
0
      length = tvb_unicode_strsize(tvb, offset);
1564
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_system_manufacturer, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1565
0
      offset += length;
1566
0
      length = tvb_unicode_strsize(tvb, offset);
1567
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_system_product_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1568
0
      offset += length;
1569
0
      length = tvb_unicode_strsize(tvb, offset);
1570
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_bios_date, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field3);
1571
0
      offset += length;
1572
0
      length = tvb_unicode_strsize(tvb, offset);
1573
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_bios_version, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field4);
1574
0
      offset += length;
1575
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Manufacturer: %s, ProductName: %s, BiosDate: %s, BiosVersion: %s", str_field1, str_field2, str_field3, str_field4);
1576
0
      break;
1577
0
    }
1578
0
    break;
1579
  // SystemConfig_V3
1580
0
  case 3:
1581
0
    switch (provider_id_data->opcode)
1582
0
    {
1583
0
    case 15:
1584
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1585
0
      offset += 4;
1586
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_service_state, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1587
0
      offset += 4;
1588
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_sub_process_tag, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1589
0
      offset += 4;
1590
0
      length = tvb_unicode_strsize(tvb, offset);
1591
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_service_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1592
0
      offset += length;
1593
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Service: %s, (PID=%d)", str_field1, field1);
1594
0
      length = tvb_unicode_strsize(tvb, offset);
1595
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_display_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1596
0
      offset += length;
1597
0
      length = tvb_unicode_strsize(tvb, offset);
1598
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_process_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1599
0
      offset += length;
1600
0
      length = tvb_unicode_strsize(tvb, offset);
1601
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_load_order_group, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1602
0
      offset += length;
1603
0
      length = tvb_unicode_strsize(tvb, offset);
1604
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_svc_host_group, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1605
0
      offset += length;
1606
0
      break;
1607
0
    case 21:
1608
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_irq_affinity, tvb, offset, 8, ENC_LITTLE_ENDIAN);
1609
0
      offset += 8;
1610
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_irq_group, tvb, offset, 2, ENC_LITTLE_ENDIAN);
1611
0
      offset += 2;
1612
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pad, tvb, offset, 2, ENC_NA);
1613
0
      offset += 2;
1614
0
      proto_tree_add_item_ret_uint(system_tree, hf_netmon_system_config_irq_num, tvb, offset, 4, ENC_LITTLE_ENDIAN, &field1);
1615
0
      offset += 4;
1616
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "IRQ: %u", field1);
1617
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1618
0
      offset += 4;
1619
      /* XXX - can we trust size above? */
1620
0
      length = tvb_unicode_strsize(tvb, offset);
1621
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1622
0
      offset += length;
1623
0
      break;
1624
0
    case 22:
1625
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_id_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1626
0
      offset += 4;
1627
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1628
0
      offset += 4;
1629
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_friendly_name_len, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1630
0
      offset += 4;
1631
      /* XXX - can we trust sizes above? */
1632
0
      length = tvb_unicode_strsize(tvb, offset);
1633
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_device_id, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field1);
1634
0
      offset += length;
1635
0
      length = tvb_unicode_strsize(tvb, offset);
1636
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_device_desc, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1637
0
      offset += length;
1638
0
      length = tvb_unicode_strsize(tvb, offset);
1639
0
      proto_tree_add_item_ret_string(system_tree, hf_netmon_system_config_friendly_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16, pinfo->pool, &str_field2);
1640
0
      offset += length;
1641
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "ID: %s, Name: %s", str_field1, str_field2);
1642
0
      length = tvb_unicode_strsize(tvb, offset);
1643
0
      proto_tree_add_item(system_tree, hf_netmon_system_config_pdo_name, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1644
0
      offset += length;
1645
0
      break;
1646
0
    }
1647
0
    break;
1648
0
  }
1649
1650
0
  return offset;
1651
0
}
1652
1653
static int
1654
dissect_netmon_process(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void* data _U_)
1655
0
{
1656
0
  proto_item *ti;
1657
0
  proto_tree *process_tree;
1658
0
  int offset = 0;
1659
0
  struct netmon_provider_id_data *provider_id_data = (struct netmon_provider_id_data*)data;
1660
0
  unsigned length;
1661
0
  const uint8_t *filename;
1662
1663
0
  DISSECTOR_ASSERT(provider_id_data != NULL);
1664
1665
0
  col_set_str(pinfo->cinfo, COL_PROTOCOL, "NetMon Process");
1666
0
  col_clear(pinfo->cinfo, COL_INFO);
1667
1668
0
  ti = proto_tree_add_item(tree, proto_netmon_process, tvb, 0, -1, ENC_NA);
1669
0
  process_tree = proto_item_add_subtree(ti, ett_netmon_process);
1670
1671
0
  switch (provider_id_data->event_version)
1672
0
  {
1673
0
  case 0:
1674
0
    switch (provider_id_data->opcode)
1675
0
    {
1676
0
    case 1:
1677
0
    case 2:
1678
0
    case 3:
1679
0
    case 4:
1680
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1681
0
      offset += 4;
1682
0
      proto_tree_add_item(process_tree, hf_netmon_process_parent_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1683
0
      offset += 4;
1684
0
      netmon_sid_field(process_tree, tvb, &offset, pinfo, hf_netmon_process_user_sid_revision,
1685
0
              hf_netmon_process_user_sid_subauth_count, hf_netmon_process_user_sid_id, hf_netmon_process_user_sid_authority,
1686
0
              &ei_netmon_process_user_sid, false);
1687
0
      length = tvb_strsize(tvb, offset);
1688
0
      proto_tree_add_item_ret_string(process_tree, hf_netmon_process_image_file_name, tvb, offset, length, ENC_NA|ENC_ASCII,
1689
0
              pinfo->pool, &filename);
1690
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Filename: %s", filename);
1691
0
      offset += length;
1692
0
      break;
1693
1694
0
    }
1695
0
    break;
1696
0
  case 1:
1697
0
    switch (provider_id_data->opcode)
1698
0
    {
1699
0
    case 1:
1700
0
    case 2:
1701
0
    case 3:
1702
0
    case 4:
1703
0
      netmon_etl_field(process_tree, tvb, &offset, hf_netmon_process_page_directory_base, provider_id_data->event_flags);
1704
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1705
0
      offset += 4;
1706
0
      proto_tree_add_item(process_tree, hf_netmon_process_parent_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1707
0
      offset += 4;
1708
0
      proto_tree_add_item(process_tree, hf_netmon_process_session_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1709
0
      offset += 4;
1710
0
      proto_tree_add_item(process_tree, hf_netmon_process_exit_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1711
0
      offset += 4;
1712
0
      netmon_sid_field(process_tree, tvb, &offset, pinfo, hf_netmon_process_user_sid_revision,
1713
0
              hf_netmon_process_user_sid_subauth_count, hf_netmon_process_user_sid_id, hf_netmon_process_user_sid_authority,
1714
0
              &ei_netmon_process_user_sid, false);
1715
0
      length = tvb_strsize(tvb, offset);
1716
0
      proto_tree_add_item_ret_string(process_tree, hf_netmon_process_image_file_name, tvb, offset, length, ENC_NA|ENC_ASCII,
1717
0
              pinfo->pool, &filename);
1718
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Filename: %s", filename);
1719
0
      offset += length;
1720
0
      break;
1721
0
    }
1722
0
    break;
1723
0
  case 2:
1724
0
    switch (provider_id_data->opcode)
1725
0
    {
1726
0
    case 1:
1727
0
    case 2:
1728
0
    case 3:
1729
0
    case 4:
1730
0
    case 39:
1731
0
      netmon_etl_field(process_tree, tvb, &offset, hf_netmon_process_unique_process_key, provider_id_data->event_flags);
1732
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1733
0
      offset += 4;
1734
0
      proto_tree_add_item(process_tree, hf_netmon_process_parent_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1735
0
      offset += 4;
1736
0
      proto_tree_add_item(process_tree, hf_netmon_process_session_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1737
0
      offset += 4;
1738
0
      proto_tree_add_item(process_tree, hf_netmon_process_exit_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1739
0
      offset += 4;
1740
0
      if (provider_id_data->event_flags & EVENT_HEADER_FLAG_64_BIT_HEADER)
1741
0
      {
1742
0
        proto_tree_add_item(process_tree, hf_netmon_process_unknown, tvb, offset, 16, ENC_NA);
1743
0
        offset += 16;
1744
0
      }
1745
0
      else
1746
0
      {
1747
0
        proto_tree_add_item(process_tree, hf_netmon_process_unknown, tvb, offset, 8, ENC_NA);
1748
0
        offset += 8;
1749
0
      }
1750
0
      netmon_sid_field(process_tree, tvb, &offset, pinfo, hf_netmon_process_user_sid_revision,
1751
0
              hf_netmon_process_user_sid_subauth_count, hf_netmon_process_user_sid_id, hf_netmon_process_user_sid_authority,
1752
0
              &ei_netmon_process_user_sid, false);
1753
0
      length = tvb_strsize(tvb, offset);
1754
0
      proto_tree_add_item_ret_string(process_tree, hf_netmon_process_image_file_name, tvb, offset, length, ENC_NA|ENC_ASCII,
1755
0
              pinfo->pool, &filename);
1756
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Filename: %s", filename);
1757
0
      offset += length;
1758
1759
0
      length = tvb_unicode_strsize(tvb, offset);
1760
0
      proto_tree_add_item(process_tree, hf_netmon_process_command_line, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1761
0
      offset += length;
1762
0
      break;
1763
1764
0
    case 32:
1765
0
    case 33:
1766
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1767
0
      offset += 4;
1768
0
      proto_tree_add_item(process_tree, hf_netmon_process_page_fault_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1769
0
      offset += 4;
1770
0
      proto_tree_add_item(process_tree, hf_netmon_process_handle_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1771
0
      offset += 4;
1772
0
      proto_tree_add_item(process_tree, hf_netmon_process_reserved, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1773
0
      offset += 4;
1774
0
      proto_tree_add_item(process_tree, hf_netmon_process_peak_virtual_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1775
0
      offset += 4;
1776
0
      proto_tree_add_item(process_tree, hf_netmon_process_peak_working_set_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1777
0
      offset += 4;
1778
0
      proto_tree_add_item(process_tree, hf_netmon_process_peak_page_file_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1779
0
      offset += 4;
1780
0
      proto_tree_add_item(process_tree, hf_netmon_process_quota_peak_paged_pool_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1781
0
      offset += 4;
1782
0
      proto_tree_add_item(process_tree, hf_netmon_process_quota_peak_non_paged_pool_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1783
0
      offset += 4;
1784
0
      proto_tree_add_item(process_tree, hf_netmon_process_virtual_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1785
0
      offset += 4;
1786
0
      proto_tree_add_item(process_tree, hf_netmon_process_workingset_size, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1787
0
      offset += 4;
1788
0
      proto_tree_add_item(process_tree, hf_netmon_process_pagefile_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1789
0
      offset += 4;
1790
0
      proto_tree_add_item(process_tree, hf_netmon_process_quota_paged_pool_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1791
0
      offset += 4;
1792
0
      proto_tree_add_item(process_tree, hf_netmon_process_quota_non_paged_pool_usage, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1793
0
      offset += 4;
1794
0
      proto_tree_add_item(process_tree, hf_netmon_process_private_page_count, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1795
0
      offset += 4;
1796
0
      break;
1797
0
    case 35:
1798
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1799
0
      offset += 4;
1800
0
      proto_tree_add_item(process_tree, hf_netmon_process_directory_table_base32, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1801
0
      offset += 4;
1802
0
      break;
1803
0
    }
1804
0
    break;
1805
0
  case 3:
1806
0
    switch (provider_id_data->opcode)
1807
0
    {
1808
0
    case 1:
1809
0
    case 2:
1810
0
    case 3:
1811
0
    case 4:
1812
0
    case 39:
1813
0
      netmon_etl_field(process_tree, tvb, &offset, hf_netmon_process_unique_process_key, provider_id_data->event_flags);
1814
0
      proto_tree_add_item(process_tree, hf_netmon_process_process_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1815
0
      offset += 4;
1816
0
      proto_tree_add_item(process_tree, hf_netmon_process_parent_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1817
0
      offset += 4;
1818
0
      proto_tree_add_item(process_tree, hf_netmon_process_session_id, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1819
0
      offset += 4;
1820
0
      proto_tree_add_item(process_tree, hf_netmon_process_exit_status, tvb, offset, 4, ENC_LITTLE_ENDIAN);
1821
0
      offset += 4;
1822
0
      netmon_etl_field(process_tree, tvb, &offset, hf_netmon_process_directory_table_base, provider_id_data->event_flags);
1823
0
      if (provider_id_data->event_flags & EVENT_HEADER_FLAG_64_BIT_HEADER)
1824
0
      {
1825
0
        proto_tree_add_item(process_tree, hf_netmon_process_unknown, tvb, offset, 16, ENC_NA);
1826
0
        offset += 16;
1827
0
      }
1828
0
      else
1829
0
      {
1830
0
        proto_tree_add_item(process_tree, hf_netmon_process_unknown, tvb, offset, 8, ENC_NA);
1831
0
        offset += 8;
1832
0
      }
1833
0
      netmon_sid_field(process_tree, tvb, &offset, pinfo, hf_netmon_process_user_sid_revision,
1834
0
              hf_netmon_process_user_sid_subauth_count, hf_netmon_process_user_sid_id, hf_netmon_process_user_sid_authority,
1835
0
              &ei_netmon_process_user_sid, false);
1836
0
      length = tvb_strsize(tvb, offset);
1837
0
      proto_tree_add_item_ret_string(process_tree, hf_netmon_process_image_file_name, tvb, offset, length, ENC_NA|ENC_ASCII,
1838
0
              pinfo->pool, &filename);
1839
0
      col_add_fstr(pinfo->cinfo, COL_INFO, "Filename: %s", filename);
1840
0
      offset += length;
1841
1842
0
      length = tvb_unicode_strsize(tvb, offset);
1843
0
      proto_tree_add_item(process_tree, hf_netmon_process_command_line, tvb, offset, length, ENC_LITTLE_ENDIAN|ENC_UTF_16);
1844
0
      offset += length;
1845
0
      break;
1846
0
    }
1847
0
    break;
1848
0
  }
1849
1850
0
  return tvb_captured_length(tvb);
1851
0
}
1852
1853
void proto_register_netmon(void)
1854
14
{
1855
14
  static hf_register_info hf_header[] = {
1856
14
    { &hf_netmon_header_title_comment,
1857
14
      { "Comment title", "netmon_header.title_comment",
1858
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
1859
14
    },
1860
14
    { &hf_netmon_header_description_comment,
1861
14
      { "Comment description", "netmon_header.description_comment",
1862
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
1863
14
    },
1864
14
  };
1865
1866
1867
14
  static hf_register_info hf_event[] = {
1868
14
    { &hf_netmon_event_size,
1869
14
      { "Size", "netmon_event.size",
1870
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
1871
14
    },
1872
14
    { &hf_netmon_event_header_type,
1873
14
      { "Header type", "netmon_event.header_type",
1874
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
1875
14
    },
1876
14
    { &hf_netmon_event_flags,
1877
14
      { "Flags", "netmon_event.flags",
1878
14
      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
1879
14
    },
1880
14
    { &hf_netmon_event_flags_extended_info,
1881
14
      { "Extended Info", "netmon_event.flags.extended_info",
1882
14
      FT_BOOLEAN, 16, TFS(&tfs_present_not_present), EVENT_HEADER_FLAG_EXTENDED_INFO, NULL, HFILL }
1883
14
    },
1884
14
    { &hf_netmon_event_flags_private_session,
1885
14
      { "Private Sessions", "netmon_event.flags.private_session",
1886
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_PRIVATE_SESSION, NULL, HFILL }
1887
14
    },
1888
14
    { &hf_netmon_event_flags_string_only,
1889
14
      { "Null-terminated Unicode string", "netmon_event.flags.string_only",
1890
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_STRING_ONLY, NULL, HFILL }
1891
14
    },
1892
14
    { &hf_netmon_event_flags_trace_message,
1893
14
      { "TraceMessage logged", "netmon_event.flags.trace_message",
1894
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_TRACE_MESSAGE, NULL, HFILL }
1895
14
    },
1896
14
    { &hf_netmon_event_flags_no_cputime,
1897
14
      { "Use ProcessorTime", "netmon_event.flags.no_cputime",
1898
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_NO_CPUTIME, NULL, HFILL }
1899
14
    },
1900
14
    { &hf_netmon_event_flags_32bit_header,
1901
14
      { "Provider running on 32-bit computer", "netmon_event.flags.32bit_header",
1902
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_32_BIT_HEADER, NULL, HFILL }
1903
14
    },
1904
14
    { &hf_netmon_event_flags_64bit_header,
1905
14
      { "Provider running on 64-bit computer", "netmon_event.flags.64bit_header",
1906
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_64_BIT_HEADER, NULL, HFILL }
1907
14
    },
1908
14
    { &hf_netmon_event_flags_classic_header,
1909
14
      { "Use TraceEvent", "netmon_event.flags.classic_header",
1910
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_FLAG_CLASSIC_HEADER, NULL, HFILL }
1911
14
    },
1912
14
    { &hf_netmon_event_event_property,
1913
14
      { "Event property", "netmon_event.event_property",
1914
14
      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
1915
14
    },
1916
14
    { &hf_netmon_event_event_property_xml,
1917
14
      { "Need manifest", "netmon_event.event_property.xml",
1918
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_PROPERTY_XML, NULL, HFILL }
1919
14
    },
1920
14
    { &hf_netmon_event_event_property_forwarded_xml,
1921
14
      { "Event data contains fully-rendered XML", "netmon_event.event_property.forwarded_xml",
1922
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_PROPERTY_FORWARDED_XML, NULL, HFILL }
1923
14
    },
1924
14
    { &hf_netmon_event_event_property_legacy_eventlog,
1925
14
      { "Need WMI MOF class", "netmon_event.event_property.legacy_eventlog",
1926
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), EVENT_HEADER_PROPERTY_LEGACY_EVENTLOG, NULL, HFILL }
1927
14
    },
1928
14
    { &hf_netmon_event_thread_id,
1929
14
      { "Thread ID", "netmon_event.thread_id",
1930
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
1931
14
    },
1932
14
    { &hf_netmon_event_process_id,
1933
14
      { "Process ID", "netmon_event.process_id",
1934
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
1935
14
    },
1936
14
    { &hf_netmon_event_timestamp,
1937
14
      { "Timestamp", "netmon_event.timestamp",
1938
14
      FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
1939
14
    },
1940
14
    { &hf_netmon_event_provider_id,
1941
14
      { "Provider ID", "netmon_event.provider_id",
1942
14
      FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }
1943
14
    },
1944
14
    { &hf_netmon_event_event_desc_id,
1945
14
      { "ID", "netmon_event.event_desc.id",
1946
14
      FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1947
14
    },
1948
14
    { &hf_netmon_event_event_desc_version,
1949
14
      { "Version", "netmon_event.event_desc.version",
1950
14
      FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1951
14
    },
1952
14
    { &hf_netmon_event_event_desc_channel,
1953
14
      { "Channel", "netmon_event.event_desc.channel",
1954
14
      FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1955
14
    },
1956
14
    { &hf_netmon_event_event_desc_level,
1957
14
      { "Level", "netmon_event.event_desc.level",
1958
14
      FT_UINT8, BASE_DEC, VALS(event_level_vals), 0x0, NULL, HFILL }
1959
14
    },
1960
14
    { &hf_netmon_event_event_desc_opcode,
1961
14
      { "Opcode", "netmon_event.event_desc.opcode",
1962
14
      FT_UINT8, BASE_HEX, VALS(opcode_vals), 0x0, NULL, HFILL }
1963
14
    },
1964
14
    { &hf_netmon_event_event_desc_task,
1965
14
      { "Task", "netmon_event.event_desc.task",
1966
14
      FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1967
14
    },
1968
14
    { &hf_netmon_event_event_desc_keyword,
1969
14
      { "Keyword", "netmon_event.event_desc.keyword",
1970
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
1971
14
    },
1972
14
    { &hf_netmon_event_kernel_time,
1973
14
      { "Kernel time", "netmon_event.kernel_time",
1974
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
1975
14
    },
1976
14
    { &hf_netmon_event_user_time,
1977
14
      { "User time", "netmon_event.user_time",
1978
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
1979
14
    },
1980
14
    { &hf_netmon_event_processor_time,
1981
14
      { "Processor time", "netmon_event.processor_time",
1982
14
      FT_UINT64, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1983
14
    },
1984
14
    { &hf_netmon_event_activity_id,
1985
14
      { "Activity ID", "netmon_event.activity_id",
1986
14
      FT_GUID, BASE_NONE, NULL, 0x0, NULL, HFILL }
1987
14
    },
1988
14
    { &hf_netmon_event_processor_number,
1989
14
      { "Processor number", "netmon_event.processor_number",
1990
14
      FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1991
14
    },
1992
14
    { &hf_netmon_event_alignment,
1993
14
      { "Alignment", "netmon_event.alignment",
1994
14
      FT_UINT8, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1995
14
    },
1996
14
    { &hf_netmon_event_logger_id,
1997
14
      { "Logger ID", "netmon_event.logger_id",
1998
14
      FT_UINT16, BASE_DEC_HEX, NULL, 0x0, NULL, HFILL }
1999
14
    },
2000
14
    { &hf_netmon_event_extended_data_count,
2001
14
      { "Extended data count", "netmon_event.extended_data_count",
2002
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2003
14
    },
2004
14
    { &hf_netmon_event_user_data_length,
2005
14
      { "User data length", "netmon_event.user_data_length",
2006
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2007
14
    },
2008
14
    { &hf_netmon_event_reassembled,
2009
14
      { "Reassembled", "netmon_event.reassembled",
2010
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2011
14
    },
2012
14
    { &hf_netmon_event_extended_data_reserved,
2013
14
      { "Reserved", "netmon_event.extended_data.reserved",
2014
14
      FT_UINT16, BASE_HEX, NULL, 0x0, NULL, HFILL }
2015
14
    },
2016
14
    { &hf_netmon_event_extended_data_type,
2017
14
      { "Extended info type", "netmon_event.extended_data.type",
2018
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2019
14
    },
2020
14
    { &hf_netmon_event_extended_data_linkage,
2021
14
      { "Additional extended data", "netmon_event.extended_data.linkage",
2022
14
      FT_BOOLEAN, 16, TFS(&tfs_yes_no), 0x0001, NULL, HFILL }
2023
14
    },
2024
14
    { &hf_netmon_event_extended_data_reserved2,
2025
14
      { "Reserved", "netmon_event.extended_data.reserved2",
2026
14
      FT_UINT16, BASE_HEX, NULL, 0xFFFE, NULL, HFILL }
2027
14
    },
2028
14
    { &hf_netmon_event_extended_data_size,
2029
14
      { "Extended data size", "netmon_event.extended_data.size",
2030
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2031
14
    },
2032
14
    { &hf_netmon_event_extended_data,
2033
14
      { "Extended data", "netmon_event.extended_data",
2034
14
      FT_BYTES, BASE_NONE|BASE_ALLOW_ZERO, NULL, 0x0, NULL, HFILL }
2035
14
    },
2036
14
    { &hf_netmon_event_user_data,
2037
14
      { "User data", "netmon_event.user_data",
2038
14
      FT_BYTES, BASE_NONE|BASE_ALLOW_ZERO, NULL, 0x0, NULL, HFILL }
2039
14
    },
2040
14
  };
2041
2042
14
  static hf_register_info hf_filter[] = {
2043
14
    { &hf_netmon_filter_version,
2044
14
      { "Version", "netmon_filter.version",
2045
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2046
14
    },
2047
14
    { &hf_netmon_filter_type,
2048
14
      { "Filter type", "netmon_filter.type",
2049
14
      FT_UINT32, BASE_DEC|BASE_RANGE_STRING, RVALS(filter_types), 0x0, NULL, HFILL }
2050
14
    },
2051
14
    { &hf_netmon_filter_app_major_version,
2052
14
      { "App Major Version", "netmon_filter.app_major_version",
2053
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2054
14
    },
2055
14
    { &hf_netmon_filter_app_minor_version,
2056
14
      { "App Minor Version", "netmon_filter.app_minor_version",
2057
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2058
14
    },
2059
14
    { &hf_netmon_filter_app_name,
2060
14
      { "Application Name", "netmon_filter.app_name",
2061
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2062
14
    },
2063
14
    { &hf_netmon_filter_filter,
2064
14
      { "Filter", "netmon_filter.filter",
2065
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2066
14
    },
2067
14
  };
2068
2069
14
  static hf_register_info hf_network_info[] = {
2070
14
    { &hf_netmon_network_info_version,
2071
14
      { "Version", "netmon_network_info.version",
2072
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2073
14
    },
2074
14
    { &hf_netmon_network_info_adapter_count,
2075
14
      { "Adapter count", "netmon_network_info.adapter_count",
2076
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2077
14
    },
2078
14
    { &hf_netmon_network_info_computer_name,
2079
14
      { "Computer name", "netmon_network_info.computer_name",
2080
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2081
14
    },
2082
14
    { &hf_netmon_network_info_friendly_name,
2083
14
      { "Friendly name", "netmon_network_info.friendly_name",
2084
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2085
14
    },
2086
14
    { &hf_netmon_network_info_description,
2087
14
      { "Description", "netmon_network_info.description",
2088
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2089
14
    },
2090
14
    { &hf_netmon_network_info_miniport_guid,
2091
14
      { "Miniport GUID", "netmon_network_info.miniport_guid",
2092
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2093
14
    },
2094
14
    { &hf_netmon_network_info_media_type,
2095
14
      { "Media type", "netmon_network_info.media_type",
2096
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2097
14
    },
2098
14
    { &hf_netmon_network_info_mtu,
2099
14
      { "MTU", "netmon_network_info.mtu",
2100
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2101
14
    },
2102
14
    { &hf_netmon_network_info_link_speed,
2103
14
      { "Link speed", "netmon_network_info.link_speed",
2104
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2105
14
    },
2106
14
    { &hf_netmon_network_info_mac_address,
2107
14
      { "MAC address", "netmon_network_info.mac_address",
2108
14
      FT_ETHER, BASE_NONE, NULL, 0x0, NULL, HFILL }
2109
14
    },
2110
14
    { &hf_netmon_network_info_ipv4_count,
2111
14
      { "IPv4 count", "netmon_network_info.ipv4_count",
2112
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2113
14
    },
2114
14
    { &hf_netmon_network_info_ipv6_count,
2115
14
      { "IPv6 count", "netmon_network_info.ipv6_count",
2116
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2117
14
    },
2118
14
    { &hf_netmon_network_info_gateway_count,
2119
14
      { "Gateway count", "netmon_network_info.gateway_count",
2120
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2121
14
    },
2122
14
    { &hf_netmon_network_info_dhcp_server_count,
2123
14
      { "DHCP server count", "netmon_network_info.dhcp_server_count",
2124
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2125
14
    },
2126
14
    { &hf_netmon_network_info_dns_ipv4_count,
2127
14
      { "DNS IPv4 count", "netmon_network_info.dns_ipv4_count",
2128
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2129
14
    },
2130
14
    { &hf_netmon_network_info_dns_ipv6_count,
2131
14
      { "DNS IPv6 count", "netmon_network_info.dns_ipv6_count",
2132
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2133
14
    },
2134
14
    { &hf_netmon_network_info_ipv4,
2135
14
      { "IPv4 address", "netmon_network_info.ipv4",
2136
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2137
14
    },
2138
14
    { &hf_netmon_network_info_subnet,
2139
14
      { "Subnet mask", "netmon_network_info.subnet",
2140
14
      FT_IPv4, BASE_NETMASK, NULL, 0x0, NULL, HFILL }
2141
14
    },
2142
14
    { &hf_netmon_network_info_ipv6,
2143
14
      { "IPv6 address", "netmon_network_info.ipv6",
2144
14
      FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
2145
14
    },
2146
14
    { &hf_netmon_network_info_gateway,
2147
14
      { "Gateway address", "netmon_network_info.gateway",
2148
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2149
14
    },
2150
14
    { &hf_netmon_network_info_dhcp_server,
2151
14
      { "DHCP Server", "netmon_network_info.dhcp_server",
2152
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2153
14
    },
2154
14
    { &hf_netmon_network_info_dns_ipv4,
2155
14
      { "DNS IPv4 address", "netmon_network_info.dns_ipv4",
2156
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2157
14
    },
2158
14
    { &hf_netmon_network_info_dns_ipv6,
2159
14
      { "DNS IPv6 address", "netmon_network_info.dns_ipv6",
2160
14
      FT_IPv6, BASE_NONE, NULL, 0x0, NULL, HFILL }
2161
14
    },
2162
14
  };
2163
2164
14
  static hf_register_info hf_system_trace[] = {
2165
14
    { &hf_netmon_system_trace_buffer_size,
2166
14
      { "Buffer size", "netmon_system_trace.buffer_size",
2167
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2168
14
    },
2169
14
    { &hf_netmon_system_trace_version,
2170
14
      { "Version", "netmon_system_trace.version",
2171
14
      FT_UINT32, BASE_HEX_DEC, NULL, 0x0, NULL, HFILL }
2172
14
    },
2173
14
    { &hf_netmon_system_trace_provider_version,
2174
14
      { "Provider version", "netmon_system_trace.provider_version",
2175
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2176
14
    },
2177
14
    { &hf_netmon_system_trace_num_processors,
2178
14
      { "Number of processors", "netmon_system_trace.num_processors",
2179
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2180
14
    },
2181
14
    { &hf_netmon_system_trace_end_time,
2182
14
      { "End time", "netmon_system_trace.end_time",
2183
14
      FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
2184
14
    },
2185
14
    { &hf_netmon_system_trace_timer_resolution,
2186
14
      { "Timer resolution", "netmon_system_trace.timer_resolution",
2187
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2188
14
    },
2189
14
    { &hf_netmon_system_trace_max_file_size,
2190
14
      { "Max file size", "netmon_system_trace.max_file_size",
2191
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2192
14
    },
2193
14
    { &hf_netmon_system_trace_log_file_mode,
2194
14
      { "Log file mode", "netmon_system_trace.log_file_mode",
2195
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2196
14
    },
2197
14
    { &hf_netmon_system_trace_buffers_written,
2198
14
      { "Buffers written", "netmon_system_trace.buffers_written",
2199
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2200
14
    },
2201
14
    { &hf_netmon_system_trace_start_buffers,
2202
14
      { "Start buffers", "netmon_system_trace.start_buffers",
2203
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2204
14
    },
2205
14
    { &hf_netmon_system_trace_pointers_size,
2206
14
      { "Pointers size", "netmon_system_trace.pointers_size",
2207
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2208
14
    },
2209
14
    { &hf_netmon_system_trace_events_lost,
2210
14
      { "Events lost", "netmon_system_trace.events_lost",
2211
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2212
14
    },
2213
14
    { &hf_netmon_system_trace_cpu_speed,
2214
14
      { "CPU speed", "netmon_system_trace.cpu_speed",
2215
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2216
14
    },
2217
14
    { &hf_netmon_system_trace_logger_name,
2218
14
      { "Logger name", "netmon_system_trace.logger_name",
2219
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2220
14
    },
2221
14
    { &hf_netmon_system_trace_log_file_name_ptr,
2222
14
      { "Log file name", "netmon_system_trace.log_file_name_ptr",
2223
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2224
14
    },
2225
14
    { &hf_netmon_system_trace_time_zone_info,
2226
14
      { "Time zone info", "netmon_system_trace.time_zone_info",
2227
14
      FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
2228
14
    },
2229
14
    { &hf_netmon_system_trace_boot_time,
2230
14
      { "Boot time", "netmon_system_trace.boot_time",
2231
14
      FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
2232
14
    },
2233
14
    { &hf_netmon_system_trace_perf_freq,
2234
14
      { "Perf freq", "netmon_system_trace.pref_freq",
2235
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2236
14
    },
2237
14
    { &hf_netmon_system_trace_start_time,
2238
14
      { "Start time", "netmon_system_trace.start_time",
2239
14
      FT_ABSOLUTE_TIME, ABSOLUTE_TIME_LOCAL, NULL, 0x0, NULL, HFILL }
2240
14
    },
2241
14
    { &hf_netmon_system_trace_reserved_flags,
2242
14
      { "Reserved Flags", "netmon_system_trace.reserved_flags",
2243
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2244
14
    },
2245
14
    { &hf_netmon_system_trace_buffers_lost,
2246
14
      { "Buffers lost", "netmon_system_trace.buffers_lost",
2247
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2248
14
    },
2249
14
    { &hf_netmon_system_trace_session_name,
2250
14
      { "Session name", "netmon_system_trace.session_name",
2251
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2252
14
    },
2253
14
    { &hf_netmon_system_trace_log_file_name,
2254
14
      { "Log file name", "netmon_system_trace.log_file_name",
2255
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2256
14
    },
2257
14
    { &hf_netmon_system_trace_group_mask1,
2258
14
      { "Group Mask1", "netmon_system_trace.group_mask1",
2259
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2260
14
    },
2261
14
    { &hf_netmon_system_trace_group_mask2,
2262
14
      { "Group Mask2", "netmon_system_trace.group_mask2",
2263
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2264
14
    },
2265
14
    { &hf_netmon_system_trace_group_mask3,
2266
14
      { "Group Mask3", "netmon_system_trace.group_mask3",
2267
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2268
14
    },
2269
14
    { &hf_netmon_system_trace_group_mask4,
2270
14
      { "Group Mask4", "netmon_system_trace.group_mask4",
2271
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2272
14
    },
2273
14
    { &hf_netmon_system_trace_group_mask5,
2274
14
      { "Group Mask5", "netmon_system_trace.group_mask5",
2275
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2276
14
    },
2277
14
    { &hf_netmon_system_trace_group_mask6,
2278
14
      { "Group Mask6", "netmon_system_trace.group_mask6",
2279
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2280
14
    },
2281
14
    { &hf_netmon_system_trace_group_mask7,
2282
14
      { "Group Mask7", "netmon_system_trace.group_mask7",
2283
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2284
14
    },
2285
14
    { &hf_netmon_system_trace_group_mask8,
2286
14
      { "Group Mask8", "netmon_system_trace.group_mask8",
2287
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2288
14
    },
2289
14
    { &hf_netmon_system_trace_kernel_event_version,
2290
14
      { "Kernel event version", "netmon_system_trace.kernel_event_version",
2291
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2292
14
    },
2293
14
  };
2294
2295
14
  static hf_register_info hf_system_config[] = {
2296
14
    { &hf_netmon_system_config_mhz,
2297
14
      { "Mhz", "netmon_system_config.mhz",
2298
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2299
14
    },
2300
14
    { &hf_netmon_system_config_num_processors,
2301
14
      { "Number of processors", "netmon_system_config.num_processors",
2302
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2303
14
    },
2304
14
    { &hf_netmon_system_config_mem_size,
2305
14
      { "Memory size", "netmon_system_config.mem_size",
2306
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2307
14
    },
2308
14
    { &hf_netmon_system_config_page_size,
2309
14
      { "Page size", "netmon_system_config.page_size",
2310
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2311
14
    },
2312
14
    { &hf_netmon_system_config_allocation_granularity,
2313
14
      { "Allocation granularity", "netmon_system_config.allocation_granularity",
2314
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2315
14
    },
2316
14
    { &hf_netmon_system_config_computer_name,
2317
14
      { "Computer name", "netmon_system_config.computer_name",
2318
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2319
14
    },
2320
14
    { &hf_netmon_system_config_domain_name,
2321
14
      { "Domain name", "netmon_system_config.domain_name",
2322
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2323
14
    },
2324
14
    { &hf_netmon_system_config_hyper_threading_flag,
2325
14
      { "Hyper threading flag", "netmon_system_config.hyper_threading_flag",
2326
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2327
14
    },
2328
14
    { &hf_netmon_system_config_disk_number,
2329
14
      { "Disk number", "netmon_system_config.disk_number",
2330
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2331
14
    },
2332
14
    { &hf_netmon_system_config_bytes_per_sector,
2333
14
      { "Bytes per sector", "netmon_system_config.bytes_per_sector",
2334
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2335
14
    },
2336
14
    { &hf_netmon_system_config_sectors_per_track,
2337
14
      { "Sectors per track", "netmon_system_config.sectors_per_track",
2338
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2339
14
    },
2340
14
    { &hf_netmon_system_config_tracks_per_cylinder,
2341
14
      { "Tracks per cylinder", "netmon_system_config.tracks_per_cylinder",
2342
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2343
14
    },
2344
14
    { &hf_netmon_system_config_cylinders,
2345
14
      { "Cylinders", "netmon_system_config.cylinders",
2346
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2347
14
    },
2348
14
    { &hf_netmon_system_config_scsi_port,
2349
14
      { "SCSI port", "netmon_system_config.scsi_port",
2350
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2351
14
    },
2352
14
    { &hf_netmon_system_config_scsi_path,
2353
14
      { "SCSI path", "netmon_system_config.scsi_path",
2354
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2355
14
    },
2356
14
    { &hf_netmon_system_config_scsi_target,
2357
14
      { "SCSI target", "netmon_system_config.csi_target",
2358
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2359
14
    },
2360
14
    { &hf_netmon_system_config_scsi_lun,
2361
14
      { "SCSI lun", "netmon_system_config.scsi_lun",
2362
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2363
14
    },
2364
14
    { &hf_netmon_system_config_manufacturer,
2365
14
      { "Manufacturer", "netmon_system_config.manufacturer",
2366
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2367
14
    },
2368
14
    { &hf_netmon_system_config_partition_count,
2369
14
      { "Partition count", "netmon_system_config.partition_count",
2370
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2371
14
    },
2372
14
    { &hf_netmon_system_config_write_cache_enabled,
2373
14
      { "Write cache enabled", "netmon_system_config.write_cache_enabled",
2374
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2375
14
    },
2376
14
    { &hf_netmon_system_config_pad,
2377
14
      { "Pad", "netmon_system_config.pad",
2378
14
      FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
2379
14
    },
2380
14
    { &hf_netmon_system_config_boot_drive_letter,
2381
14
      { "Boot drive letter", "netmon_system_config.boot_drive_letter",
2382
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2383
14
    },
2384
14
    { &hf_netmon_system_config_spare,
2385
14
      { "Spare", "netmon_system_config.spare",
2386
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2387
14
    },
2388
14
    { &hf_netmon_system_config_start_offset,
2389
14
      { "Start offset", "netmon_system_config.start_offset",
2390
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2391
14
    },
2392
14
    { &hf_netmon_system_config_partition_size,
2393
14
      { "Partition size", "netmon_system_config.partition_size",
2394
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2395
14
    },
2396
14
    { &hf_netmon_system_config_size,
2397
14
      { "Size", "netmon_system_config.size",
2398
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2399
14
    },
2400
14
    { &hf_netmon_system_config_drive_type,
2401
14
      { "Drive type", "netmon_system_config.drive_type",
2402
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2403
14
    },
2404
14
    { &hf_netmon_system_config_drive_letter,
2405
14
      { "Drive letter", "netmon_system_config.drive_letter",
2406
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2407
14
    },
2408
14
    { &hf_netmon_system_config_partition_number,
2409
14
      { "Partition number", "netmon_system_config.partition_number",
2410
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2411
14
    },
2412
14
    { &hf_netmon_system_config_sectors_per_cluster,
2413
14
      { "Sectors per cluster", "netmon_system_config.sectors_per_cluster",
2414
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2415
14
    },
2416
14
    { &hf_netmon_system_config_num_free_clusters,
2417
14
      { "Number of free clusters", "netmon_system_config.num_free_clusters",
2418
14
      FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2419
14
    },
2420
14
    { &hf_netmon_system_config_total_num_clusters,
2421
14
      { "Total number of clusters", "netmon_system_config.total_num_clusters",
2422
14
      FT_INT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2423
14
    },
2424
14
    { &hf_netmon_system_config_file_system,
2425
14
      { "File system", "netmon_system_config.file_system",
2426
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2427
14
    },
2428
14
    { &hf_netmon_system_config_volume_ext,
2429
14
      { "Volume ext", "netmon_system_config.volume_ext",
2430
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2431
14
    },
2432
14
    { &hf_netmon_system_config_physical_addr,
2433
14
      { "Physical address", "netmon_system_config.physical_addr",
2434
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2435
14
    },
2436
14
    { &hf_netmon_system_config_physical_addr_len,
2437
14
      { "Physical address length", "netmon_system_config.physical_addr_len",
2438
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2439
14
    },
2440
14
    { &hf_netmon_system_config_ipv4_index,
2441
14
      { "IPv4 index", "netmon_system_config.ipv4_index",
2442
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2443
14
    },
2444
14
    { &hf_netmon_system_config_ipv6_index,
2445
14
      { "IPv6 index", "netmon_system_config.ipv6_index",
2446
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2447
14
    },
2448
14
    { &hf_netmon_system_config_nic_description,
2449
14
      { "File system", "netmon_system_config.file_system",
2450
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2451
14
    },
2452
14
    { &hf_netmon_system_config_ipaddresses,
2453
14
      { "IP addresses", "netmon_system_config.ipaddresses",
2454
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2455
14
    },
2456
14
    { &hf_netmon_system_config_dns_server_addresses,
2457
14
      { "DNS server addresses", "netmon_system_config.dns_server_addresses",
2458
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2459
14
    },
2460
14
    { &hf_netmon_system_config_memory_size,
2461
14
      { "Memory size", "netmon_system_config.memory_size",
2462
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2463
14
    },
2464
14
    { &hf_netmon_system_config_x_resolution,
2465
14
      { "X resolution", "netmon_system_config.x_resolution",
2466
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2467
14
    },
2468
14
    { &hf_netmon_system_config_y_resolution,
2469
14
      { "Y resolution", "netmon_system_config.y_resolution",
2470
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2471
14
    },
2472
14
    { &hf_netmon_system_config_bits_per_pixel,
2473
14
      { "Bits per pixel", "netmon_system_config.bits_per_pixel",
2474
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2475
14
    },
2476
14
    { &hf_netmon_system_config_vrefresh,
2477
14
      { "VRefresh", "netmon_system_config.vrefresh",
2478
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2479
14
    },
2480
14
    { &hf_netmon_system_config_chip_type,
2481
14
      { "Chip type", "netmon_system_config.chip_type",
2482
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2483
14
    },
2484
14
    { &hf_netmon_system_config_dac_type,
2485
14
      { "DAC type", "netmon_system_config.dac_type",
2486
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2487
14
    },
2488
14
    { &hf_netmon_system_config_adapter_string,
2489
14
      { "Adapter string", "netmon_system_config.adapter_string",
2490
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2491
14
    },
2492
14
    { &hf_netmon_system_config_bios_string,
2493
14
      { "BIOS string", "netmon_system_config.bios_string",
2494
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2495
14
    },
2496
14
    { &hf_netmon_system_config_device_id,
2497
14
      { "Device ID", "netmon_system_config.device_id",
2498
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2499
14
    },
2500
14
    { &hf_netmon_system_config_state_flags,
2501
14
      { "State flags", "netmon_system_config.state_flags",
2502
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2503
14
    },
2504
14
    { &hf_netmon_system_config_process_id,
2505
14
      { "Process ID", "netmon_system_config.process_id",
2506
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2507
14
    },
2508
14
    { &hf_netmon_system_config_service_state,
2509
14
      { "Service state", "netmon_system_config.service_state",
2510
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2511
14
    },
2512
14
    { &hf_netmon_system_config_sub_process_tag,
2513
14
      { "Subprocess tag", "netmon_system_config.sub_process_tag",
2514
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2515
14
    },
2516
14
    { &hf_netmon_system_config_service_name,
2517
14
      { "Service name", "netmon_system_config.service_name",
2518
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2519
14
    },
2520
14
    { &hf_netmon_system_config_display_name,
2521
14
      { "Display name", "netmon_system_config.display_name",
2522
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2523
14
    },
2524
14
    { &hf_netmon_system_config_process_name,
2525
14
      { "Process name", "netmon_system_config.process_name",
2526
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2527
14
    },
2528
14
    { &hf_netmon_system_config_s1,
2529
14
      { "S1", "netmon_system_config.s1",
2530
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2531
14
    },
2532
14
    { &hf_netmon_system_config_s2,
2533
14
      { "S2", "netmon_system_config.s2",
2534
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2535
14
    },
2536
14
    { &hf_netmon_system_config_s3,
2537
14
      { "S3", "netmon_system_config.s3",
2538
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2539
14
    },
2540
14
    { &hf_netmon_system_config_s4,
2541
14
      { "S4", "netmon_system_config.s4",
2542
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2543
14
    },
2544
14
    { &hf_netmon_system_config_s5,
2545
14
      { "S5", "netmon_system_config.s5",
2546
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2547
14
    },
2548
14
    { &hf_netmon_system_config_tcb_table_partitions,
2549
14
      { "Tcb table partitions", "netmon_system_config.tcb_table_partitions",
2550
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2551
14
    },
2552
14
    { &hf_netmon_system_config_max_hash_table_size,
2553
14
      { "Max hash table size", "netmon_system_config.max_hash_table_size",
2554
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2555
14
    },
2556
14
    { &hf_netmon_system_config_max_user_port,
2557
14
      { "Max user port", "netmon_system_config.max_user_port",
2558
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2559
14
    },
2560
14
    { &hf_netmon_system_config_tcp_timed_wait_delay,
2561
14
      { "TCP timed wait delay", "netmon_system_config.tcp_timed_wait_delay",
2562
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2563
14
    },
2564
14
    { &hf_netmon_system_config_irq_affinity,
2565
14
      { "IRQ affinity", "netmon_system_config.irq_affinity",
2566
14
      FT_UINT64, BASE_DEC, NULL, 0x0, NULL, HFILL }
2567
14
    },
2568
14
    { &hf_netmon_system_config_irq_num,
2569
14
      { "IRQ", "netmon_system_config.irq_num",
2570
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2571
14
    },
2572
14
    { &hf_netmon_system_config_device_desc_len,
2573
14
      { "Device description length", "netmon_system_config.device_desc_len",
2574
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2575
14
    },
2576
14
    { &hf_netmon_system_config_device_desc,
2577
14
      { "Device description", "netmon_system_config.device_desc",
2578
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2579
14
    },
2580
14
    { &hf_netmon_system_config_friendly_name,
2581
14
      { "Friendly name", "netmon_system_config.friendly_name",
2582
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2583
14
    },
2584
14
    { &hf_netmon_system_config_device_id_len,
2585
14
      { "Device ID length", "netmon_system_config.device_id_len",
2586
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2587
14
    },
2588
14
    { &hf_netmon_system_config_friendly_name_len,
2589
14
      { "Friendly name length", "netmon_system_config.friendly_name_len",
2590
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2591
14
    },
2592
14
    { &hf_netmon_system_config_target_id,
2593
14
      { "Target ID", "netmon_system_config.target_id",
2594
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2595
14
    },
2596
14
    { &hf_netmon_system_config_device_type,
2597
14
      { "Device type", "netmon_system_config.device_type",
2598
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2599
14
    },
2600
14
    { &hf_netmon_system_config_device_timing_mode,
2601
14
      { "Device timing mode", "netmon_system_config.device_timing_mode",
2602
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2603
14
    },
2604
14
    { &hf_netmon_system_config_location_information_len,
2605
14
      { "Location information length", "netmon_system_config.location_information_len",
2606
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2607
14
    },
2608
14
    { &hf_netmon_system_config_location_information,
2609
14
      { "Location information", "netmon_system_config.location_information",
2610
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2611
14
    },
2612
14
    { &hf_netmon_system_config_system_manufacturer,
2613
14
      { "System manufacturer", "netmon_system_config.system_manufacturer",
2614
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2615
14
    },
2616
14
    { &hf_netmon_system_config_system_product_name,
2617
14
      { "System product name", "netmon_system_config.system_product_name",
2618
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2619
14
    },
2620
14
    { &hf_netmon_system_config_bios_date,
2621
14
      { "BIOS date", "netmon_system_config.bios_date",
2622
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2623
14
    },
2624
14
    { &hf_netmon_system_config_bios_version,
2625
14
      { "BIOS version", "netmon_system_config.bios_version",
2626
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2627
14
    },
2628
14
    { &hf_netmon_system_config_load_order_group,
2629
14
      { "Load order group", "netmon_system_config.load_order_group",
2630
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2631
14
    },
2632
14
    { &hf_netmon_system_config_svc_host_group,
2633
14
      { "svchost group", "netmon_system_config.svc_host_group",
2634
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2635
14
    },
2636
14
    { &hf_netmon_system_config_irq_group,
2637
14
      { "IRQ group", "netmon_system_config.irq_group",
2638
14
      FT_UINT16, BASE_DEC, NULL, 0x0, NULL, HFILL }
2639
14
    },
2640
14
    { &hf_netmon_system_config_pdo_name,
2641
14
      { "PDO name", "netmon_system_config.pdo_name",
2642
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2643
14
    },
2644
14
    { &hf_netmon_system_config_nic_name,
2645
14
      { "NIC name", "netmon_system_config.nic_name",
2646
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2647
14
    },
2648
14
    { &hf_netmon_system_config_index,
2649
14
      { "Index", "netmon_system_config.index",
2650
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2651
14
    },
2652
14
    { &hf_netmon_system_config_physical_addr_str,
2653
14
      { "Physical address", "netmon_system_config.physical_addr_str",
2654
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2655
14
    },
2656
14
    { &hf_netmon_system_config_ip_address,
2657
14
      { "IP address", "netmon_system_config.ip_address",
2658
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2659
14
    },
2660
14
    { &hf_netmon_system_config_subnet_mask,
2661
14
      { "Subnet mask", "netmon_system_config.subnet_mask",
2662
14
      FT_IPv4, BASE_NETMASK, NULL, 0x0, NULL, HFILL }
2663
14
    },
2664
14
    { &hf_netmon_system_config_dhcp_server,
2665
14
      { "DHCP server", "netmon_system_config.dhcp_server",
2666
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2667
14
    },
2668
14
    { &hf_netmon_system_config_gateway,
2669
14
      { "Gateway", "netmon_system_config.gateway",
2670
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2671
14
    },
2672
14
    { &hf_netmon_system_config_primary_wins_server,
2673
14
      { "Primary WINS server", "netmon_system_config.primary_wins_server",
2674
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2675
14
    },
2676
14
    { &hf_netmon_system_config_secondary_wins_server,
2677
14
      { "Secondary WINS server", "netmon_system_config.secondary_wins_server",
2678
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2679
14
    },
2680
14
    { &hf_netmon_system_config_dns_server1,
2681
14
      { "DNS server1", "netmon_system_config.dns_server1",
2682
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2683
14
    },
2684
14
    { &hf_netmon_system_config_dns_server2,
2685
14
      { "DNS server2", "netmon_system_config.dns_server2",
2686
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2687
14
    },
2688
14
    { &hf_netmon_system_config_dns_server3,
2689
14
      { "DNS server3", "netmon_system_config.dns_server3",
2690
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2691
14
    },
2692
14
    { &hf_netmon_system_config_dns_server4,
2693
14
      { "DNS server4", "netmon_system_config.dns_server4",
2694
14
      FT_IPv4, BASE_NONE, NULL, 0x0, NULL, HFILL }
2695
14
    },
2696
14
    { &hf_netmon_system_config_data,
2697
14
      { "Data", "netmon_system_config.data",
2698
14
      FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL }
2699
14
    },
2700
14
  };
2701
2702
14
  static hf_register_info hf_process[] = {
2703
14
    { &hf_netmon_process_unique_process_key,
2704
14
      { "Unique process key", "netmon_process.unique_process_key",
2705
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2706
14
    },
2707
14
    { &hf_netmon_process_process_id,
2708
14
      { "Process ID", "netmon_process.process_id",
2709
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2710
14
    },
2711
14
    { &hf_netmon_process_parent_id,
2712
14
      { "Parent ID", "netmon_process.parent_id",
2713
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2714
14
    },
2715
14
    { &hf_netmon_process_session_id,
2716
14
      { "Session ID", "netmon_process.session_id",
2717
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2718
14
    },
2719
14
    { &hf_netmon_process_exit_status,
2720
14
      { "Exit status", "netmon_process.exit_status",
2721
14
      FT_INT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2722
14
    },
2723
14
    { &hf_netmon_process_directory_table_base,
2724
14
      { "Directory table base", "netmon_process.directory_table_base",
2725
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2726
14
    },
2727
14
    { &hf_netmon_process_unknown,
2728
14
      { "Unknown", "netmon_process.unknown",
2729
14
      FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
2730
14
    },
2731
14
    { &hf_netmon_process_user_sid_revision,
2732
14
      { "User SID Revision", "netmon_process.user_sid.revision",
2733
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2734
14
    },
2735
14
    { &hf_netmon_process_user_sid_subauth_count,
2736
14
      { "User SID Subauth count", "netmon_process.user_sid.subauth_count",
2737
14
      FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL }
2738
14
    },
2739
14
    { &hf_netmon_process_user_sid_id,
2740
14
      { "User SID Identifier Authority", "netmon_process.user_sid.id",
2741
14
      FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL }
2742
14
    },
2743
14
    { &hf_netmon_process_user_sid_authority,
2744
14
      { "User SID Authority", "netmon_process.user_sid.authority",
2745
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2746
14
    },
2747
14
    { &hf_netmon_process_image_file_name,
2748
14
      { "Image file name", "netmon_process.image_file_name",
2749
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2750
14
    },
2751
14
    { &hf_netmon_process_command_line,
2752
14
      { "Commandline", "netmon_process.command_line",
2753
14
      FT_STRING, BASE_NONE, NULL, 0x0, NULL, HFILL }
2754
14
    },
2755
14
    { &hf_netmon_process_page_directory_base,
2756
14
      { "Page directory base", "netmon_process.page_directory_base",
2757
14
      FT_UINT64, BASE_HEX, NULL, 0x0, NULL, HFILL }
2758
14
    },
2759
14
    { &hf_netmon_process_page_fault_count,
2760
14
      { "Page fault count", "netmon_process.page_fault_count",
2761
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2762
14
    },
2763
14
    { &hf_netmon_process_handle_count,
2764
14
      { "Handle count", "netmon_process.handle_count",
2765
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2766
14
    },
2767
14
    { &hf_netmon_process_reserved,
2768
14
      { "Reserved", "netmon_process.reserved",
2769
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2770
14
    },
2771
14
    { &hf_netmon_process_peak_virtual_size,
2772
14
      { "Peak virtual size", "netmon_process.peak_virtual_size",
2773
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2774
14
    },
2775
14
    { &hf_netmon_process_peak_working_set_size,
2776
14
      { "Peak working set size", "netmon_process.peak_working_set_size",
2777
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2778
14
    },
2779
14
    { &hf_netmon_process_peak_page_file_usage,
2780
14
      { "Peak page file usage", "netmon_process.peak_page_file_usage",
2781
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2782
14
    },
2783
14
    { &hf_netmon_process_quota_peak_paged_pool_usage,
2784
14
      { "Quota peak paged pool usage", "netmon_process.quota_peak_paged_pool_usage",
2785
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2786
14
    },
2787
14
    { &hf_netmon_process_quota_peak_non_paged_pool_usage,
2788
14
      { "Quota peak non-paged pool usage", "netmon_process.quota_peak_non_paged_pool_usage",
2789
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2790
14
    },
2791
14
    { &hf_netmon_process_virtual_size,
2792
14
      { "Virtual size", "netmon_process.virtual_size",
2793
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2794
14
    },
2795
14
    { &hf_netmon_process_workingset_size,
2796
14
      { "Working set size", "netmon_process.workingset_size",
2797
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2798
14
    },
2799
14
    { &hf_netmon_process_pagefile_usage,
2800
14
      { "Pagefile usage", "netmon_process.pagefile_usage",
2801
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2802
14
    },
2803
14
    { &hf_netmon_process_quota_paged_pool_usage,
2804
14
      { "Quota paged pool usage", "netmon_process.quota_paged_pool_usage",
2805
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2806
14
    },
2807
14
    { &hf_netmon_process_quota_non_paged_pool_usage,
2808
14
      { "Quota nonpaged pool usage", "netmon_process.quota_non_paged_pool_usage",
2809
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2810
14
    },
2811
14
    { &hf_netmon_process_private_page_count,
2812
14
      { "Private page count", "netmon_process.private_page_count",
2813
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2814
14
    },
2815
14
    { &hf_netmon_process_directory_table_base32,
2816
14
      { "Directory table base", "netmon_process.directory_table_base32",
2817
14
      FT_UINT32, BASE_DEC, NULL, 0x0, NULL, HFILL }
2818
14
    },
2819
14
  };
2820
2821
14
  static int *ett[] = {
2822
14
    &ett_netmon_header,
2823
14
    &ett_netmon_event,
2824
14
    &ett_netmon_event_desc,
2825
14
    &ett_netmon_event_flags,
2826
14
    &ett_netmon_event_property,
2827
14
    &ett_netmon_event_extended_data,
2828
14
    &ett_netmon_filter,
2829
14
    &ett_netmon_network_info,
2830
14
    &ett_netmon_network_info_list,
2831
14
    &ett_netmon_network_info_adapter,
2832
14
    &ett_netmon_system_trace,
2833
14
    &ett_netmon_event_buffer_context,
2834
14
    &ett_netmon_process,
2835
14
    &ett_netmon_sid,
2836
14
    &ett_netmon_system_config,
2837
14
  };
2838
2839
14
  static ei_register_info ei_process[] = {
2840
14
    { &ei_netmon_process_user_sid, { "netmon_process.process_user_sid.invalid", PI_MALFORMED, PI_WARN, "Invalid SID", EXPFILL }},
2841
14
  };
2842
2843
14
  expert_module_t *expert_process;
2844
2845
14
  proto_netmon_header = proto_register_protocol ("Network Monitor Header", "NetMon Header", "netmon_header" );
2846
14
  proto_netmon_event = proto_register_protocol ("Network Monitor Event", "NetMon Event", "netmon_event" );
2847
14
  proto_netmon_filter = proto_register_protocol ("Network Monitor Filter", "NetMon Filter", "netmon_filter" );
2848
14
  proto_netmon_network_info = proto_register_protocol ("Network Monitor Network Info", "NetMon Network Info", "netmon_network_info" );
2849
14
  proto_netmon_system_trace = proto_register_protocol ("Network Monitor System Trace", "NetMon System Trace", "netmon_system_trace" );
2850
14
  proto_netmon_system_config = proto_register_protocol ("Network Monitor System Config", "NetMon System Config", "netmon_system_config" );
2851
14
  proto_netmon_process = proto_register_protocol ("Network Monitor Process", "NetMon Process", "netmon_process" );
2852
2853
14
  provider_id_table = register_dissector_table("netmon.provider_id", "NetMon Provider IDs", proto_netmon_event, FT_GUID, BASE_HEX);
2854
2855
14
  proto_register_field_array(proto_netmon_header, hf_header, array_length(hf_header));
2856
14
  proto_register_field_array(proto_netmon_event, hf_event, array_length(hf_event));
2857
14
  proto_register_field_array(proto_netmon_filter, hf_filter, array_length(hf_filter));
2858
14
  proto_register_field_array(proto_netmon_network_info, hf_network_info, array_length(hf_network_info));
2859
14
  proto_register_field_array(proto_netmon_system_trace, hf_system_trace, array_length(hf_system_trace));
2860
14
  proto_register_field_array(proto_netmon_system_config, hf_system_config, array_length(hf_system_config));
2861
14
  proto_register_field_array(proto_netmon_process, hf_process, array_length(hf_process));
2862
14
  proto_register_subtree_array(ett, array_length(ett));
2863
2864
14
  expert_process = expert_register_protocol(proto_netmon_process);
2865
14
  expert_register_field_array(expert_process, ei_process, array_length(ei_process));
2866
14
}
2867
2868
void proto_reg_handoff_netmon(void)
2869
14
{
2870
14
  dissector_handle_t netmon_event_handle, netmon_filter_handle,
2871
14
            netmon_network_info_handle, netmon_header_handle,
2872
14
            system_trace_handle, system_config_handle, process_handle;
2873
2874
14
  static guid_key system_trace_guid = {{ 0x68fdd900, 0x4a3e, 0x11d1, { 0x84, 0xf4, 0x00, 0x00, 0xf8, 0x04, 0x64, 0xe3 }}, 0 };
2875
14
  static guid_key system_config_guid = {{ 0x01853a65, 0x418f, 0x4f36, { 0xae, 0xfc, 0xdc, 0x0f, 0x1d, 0x2f, 0xd2, 0x35 }}, 0 };
2876
14
  static guid_key process_guid = {{ 0x3d6fa8d0, 0xfe05, 0x11d0, { 0x9d, 0xda, 0x00, 0xc0, 0x4f, 0xd7, 0xba, 0x7c }}, 0 };
2877
2878
14
  netmon_event_handle = create_dissector_handle(dissect_netmon_event, proto_netmon_event);
2879
14
  netmon_filter_handle = create_dissector_handle(dissect_netmon_filter, proto_netmon_filter);
2880
14
  netmon_network_info_handle = create_dissector_handle(dissect_netmon_network_info, proto_netmon_network_info);
2881
14
  netmon_header_handle = create_dissector_handle(dissect_netmon_header, proto_netmon_header);
2882
14
  system_trace_handle = create_dissector_handle(dissect_netmon_system_trace, proto_netmon_system_trace);
2883
14
  system_config_handle = create_dissector_handle(dissect_netmon_system_config, proto_netmon_system_config);
2884
14
  process_handle = create_dissector_handle(dissect_netmon_process, proto_netmon_process);
2885
2886
14
  dissector_add_uint("wtap_encap", WTAP_ENCAP_NETMON_NET_NETEVENT, netmon_event_handle);
2887
14
  dissector_add_uint("wtap_encap", WTAP_ENCAP_NETMON_NET_FILTER, netmon_filter_handle);
2888
14
  dissector_add_uint("wtap_encap", WTAP_ENCAP_NETMON_NETWORK_INFO_EX, netmon_network_info_handle);
2889
14
  dissector_add_uint("wtap_encap", WTAP_ENCAP_NETMON_HEADER, netmon_header_handle);
2890
2891
14
  dissector_add_guid( "netmon.provider_id", &system_trace_guid, system_trace_handle);
2892
14
  dissector_add_guid( "netmon.provider_id", &system_config_guid, system_config_handle);
2893
14
  dissector_add_guid( "netmon.provider_id", &process_guid, process_handle);
2894
2895
14
  wtap_encap_table = find_dissector_table("wtap_encap");
2896
14
}
2897
2898
/*
2899
 * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
2900
 *
2901
 * Local variables:
2902
 * c-basic-offset: 8
2903
 * tab-width: 8
2904
 * indent-tabs-mode: t
2905
 * End:
2906
 *
2907
 * vi: set shiftwidth=8 tabstop=8 noexpandtab:
2908
 * :indentSize=8:tabSize=8:noTabs=false:
2909
 */