aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-06-20 16:31:53 +0000
committerEvan Huus <eapache@gmail.com>2013-06-20 16:31:53 +0000
commit5d53d63cd79f48f15c16f41efe74c2a91a0c5003 (patch)
tree8295b22f500dc1517a113f85a3053d4367c99915 /epan/dissectors
parent612d14c883ddc4aa46469c49183f53c99fdb634e (diff)
From Michal Labedzki via
https://bugs.wireshark.org/bugzilla/show_bug.cgi?id=8824 Convert bluetooth emem trees to wmem trees. Add modelines and fix indentation. Correct typo in wmem_tree.h that still referred to emem. svn path=/trunk/; revision=50076
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-bluetooth-hci.h10
-rw-r--r--epan/dissectors/packet-btavctp.c32
-rw-r--r--epan/dissectors/packet-btavdtp.c40
-rw-r--r--epan/dissectors/packet-btavrcp.c42
-rw-r--r--epan/dissectors/packet-bthci_acl.c28
-rw-r--r--epan/dissectors/packet-bthci_evt.c20
-rw-r--r--epan/dissectors/packet-bthfp.c18
-rw-r--r--epan/dissectors/packet-btl2cap.c53
-rw-r--r--epan/dissectors/packet-btobex.c28
-rw-r--r--epan/dissectors/packet-btrfcomm.c6
-rw-r--r--epan/dissectors/packet-btsdp.c43
-rw-r--r--epan/dissectors/packet-btsdp.h6
-rw-r--r--epan/dissectors/packet-hci_h1.c224
-rw-r--r--epan/dissectors/packet-hci_h4.c229
-rw-r--r--epan/dissectors/packet-hci_usb.c24
15 files changed, 411 insertions, 392 deletions
diff --git a/epan/dissectors/packet-bluetooth-hci.h b/epan/dissectors/packet-bluetooth-hci.h
index 44bc90b500..c1af4f42f2 100644
--- a/epan/dissectors/packet-bluetooth-hci.h
+++ b/epan/dissectors/packet-bluetooth-hci.h
@@ -24,6 +24,8 @@
#ifndef __PACKET_BLUETOOTH_HCI_H__
#define __PACKET_BLUETOOTH_HCI__H__
+#include <epan/wmem/wmem.h>
+
#define HCI_H4_TYPE_CMD 0x01
#define HCI_H4_TYPE_ACL 0x02
#define HCI_H4_TYPE_SCO 0x03
@@ -83,10 +85,10 @@ extern const value_string bthci_cmd_notification_types[];
typedef struct _hci_data_t {
guint32 interface_id;
guint32 adapter_id;
- emem_tree_t *chandle_to_bdaddr_table;
- emem_tree_t *bdaddr_to_name_table;
- emem_tree_t *localhost_bdaddr;
- emem_tree_t *localhost_name;
+ wmem_tree_t *chandle_to_bdaddr_table;
+ wmem_tree_t *bdaddr_to_name_table;
+ wmem_tree_t *localhost_bdaddr;
+ wmem_tree_t *localhost_name;
} hci_data_t;
typedef struct _remote_bdaddr_t {
diff --git a/epan/dissectors/packet-btavctp.c b/epan/dissectors/packet-btavctp.c
index cecb4712bc..bbe4422b17 100644
--- a/epan/dissectors/packet-btavctp.c
+++ b/epan/dissectors/packet-btavctp.c
@@ -69,10 +69,10 @@ typedef struct _fragments_t {
guint32 count;
guint32 number_of_packets;
guint32 pid;
- emem_tree_t *fragment;
+ wmem_tree_t *fragment;
} fragments_t;
-static emem_tree_t *reassembling = NULL;
+static wmem_tree_t *reassembling = NULL;
static fragments_t *fragments = NULL;
static const value_string packet_type_vals[] = {
@@ -189,7 +189,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else {
fragment_t *fragment;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -236,18 +236,18 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
fragments->pid = pid;
fragments->count = 1;
- fragments->fragment = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavctp fragments");
- se_tree_insert32(fragments->fragment, fragments->count, fragment);
+ fragments->fragment = wmem_tree_new(wmem_file_scope());
+ wmem_tree_insert32(fragments->fragment, fragments->count, fragment);
fragments->interface_id = interface_id;
fragments->adapter_id = adapter_id;
fragments->chandle = chandle;
fragments->psm = psm;
- se_tree_insert32_array(reassembling, key, fragments);
+ wmem_tree_insert32_array(reassembling, key, fragments);
} else {
- fragments = (fragments_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragments = (fragments_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (!(fragments && fragments->interface_id == interface_id &&
fragments->adapter_id == adapter_id &&
fragments->chandle == chandle &&
@@ -258,7 +258,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
call_dissector(data_handle, next_tvb, pinfo, tree);
} else if (packet_type == PACKET_TYPE_CONTINUE) {
- fragments = (fragments_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragments = (fragments_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (!(fragments && fragments->interface_id == interface_id &&
fragments->adapter_id == adapter_id &&
fragments->chandle == chandle &&
@@ -272,7 +272,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_memcpy(tvb, fragment->data, offset, fragment->length);
fragments->count++;
- se_tree_insert32(fragments->fragment, fragments->count, fragment);
+ wmem_tree_insert32(fragments->fragment, fragments->count, fragment);
fragments->interface_id = interface_id;
fragments->adapter_id = adapter_id;
@@ -298,7 +298,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[5].length = 0;
key[5].key = NULL;
- se_tree_insert32_array(reassembling, key, fragments);
+ wmem_tree_insert32_array(reassembling, key, fragments);
}
call_dissector(data_handle, next_tvb, pinfo, tree);
@@ -306,7 +306,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
} else if (packet_type == PACKET_TYPE_END) {
guint i_length = 0;
- fragments = (fragments_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragments = (fragments_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (!(fragments && fragments->interface_id == interface_id &&
fragments->adapter_id == adapter_id &&
fragments->chandle == chandle &&
@@ -320,7 +320,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
tvb_memcpy(tvb, fragment->data, offset, fragment->length);
fragments->count++;
- se_tree_insert32(fragments->fragment, fragments->count, fragment);
+ wmem_tree_insert32(fragments->fragment, fragments->count, fragment);
fragments->interface_id = interface_id;
fragments->adapter_id = adapter_id;
@@ -346,7 +346,7 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[5].length = 0;
key[5].key = NULL;
- se_tree_insert32_array(reassembling, key, fragments);
+ wmem_tree_insert32_array(reassembling, key, fragments);
}
length = 0;
@@ -358,14 +358,14 @@ dissect_btavctp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint8 *reassembled;
for (i_frame = 1; i_frame <= fragments->count; ++i_frame) {
- fragment = (fragment_t *)se_tree_lookup32_le(fragments->fragment, i_frame);
+ fragment = (fragment_t *)wmem_tree_lookup32_le(fragments->fragment, i_frame);
length += fragment->length;
}
reassembled = (guint8 *) wmem_alloc(wmem_file_scope(), length);
for (i_frame = 1; i_frame <= fragments->count; ++i_frame) {
- fragment = (fragment_t *)se_tree_lookup32_le(fragments->fragment, i_frame);
+ fragment = (fragment_t *)wmem_tree_lookup32_le(fragments->fragment, i_frame);
memcpy(reassembled + i_length,
fragment->data,
fragment->length);
@@ -436,7 +436,7 @@ proto_register_btavctp(void)
&ett_btavctp
};
- reassembling = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavctp reassembling");
+ reassembling = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
avctp_service_dissector_table = register_dissector_table("btavctp.service", "AVCTP Service", FT_UINT16, BASE_HEX);
diff --git a/epan/dissectors/packet-btavdtp.c b/epan/dissectors/packet-btavdtp.c
index aae85ae0a6..d76fdedc85 100644
--- a/epan/dissectors/packet-btavdtp.c
+++ b/epan/dissectors/packet-btavdtp.c
@@ -234,9 +234,9 @@ static dissector_handle_t bta2dp_handle;
static dissector_handle_t btvdp_handle;
static dissector_handle_t rtp_handle;
-static emem_tree_t *sep_list = NULL;
-static emem_tree_t *sep_open = NULL;
-static emem_tree_t *cid_to_type_table = NULL;
+static wmem_tree_t *sep_list = NULL;
+static wmem_tree_t *sep_open = NULL;
+static wmem_tree_t *cid_to_type_table = NULL;
/* A2DP declarations */
static int proto_bta2dp = -1;
@@ -414,7 +414,7 @@ static const char *
get_sep_type(guint32 frame_number, guint seid)
{
sep_entry_t *sep;
- emem_tree_key_t key[3];
+ wmem_tree_key_t key[3];
guint32 t_seid;
guint32 t_frame_number;
@@ -428,7 +428,7 @@ get_sep_type(guint32 frame_number, guint seid)
key[2].length = 0;
key[2].key = NULL;
- sep = (sep_entry_t *)se_tree_lookup32_array_le(sep_list, key);
+ sep = (sep_entry_t *)wmem_tree_lookup32_array_le(sep_list, key);
if (sep && sep->seid == seid) {
return val_to_str_const(sep->type, sep_type_vals, "unknown");
}
@@ -440,7 +440,7 @@ static const char *
get_sep_media_type(guint32 frame_number, guint seid)
{
sep_entry_t *sep;
- emem_tree_key_t key[3];
+ wmem_tree_key_t key[3];
guint32 t_seid;
guint32 t_frame_number;
@@ -454,7 +454,7 @@ get_sep_media_type(guint32 frame_number, guint seid)
key[2].length = 0;
key[2].key = NULL;
- sep = (sep_entry_t *)se_tree_lookup32_array_le(sep_list, key);
+ sep = (sep_entry_t *)wmem_tree_lookup32_array_le(sep_list, key);
if (sep && sep->seid == seid) {
return val_to_str_const(sep->media_type, media_type_vals, "unknown");
}
@@ -475,7 +475,7 @@ dissect_sep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
guint in_use;
guint items;
sep_entry_t *sep_data;
- emem_tree_key_t key[3];
+ wmem_tree_key_t key[3];
guint32 t_seid;
guint32 t_frame_number;
@@ -523,7 +523,7 @@ dissect_sep(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, gint offset)
sep_data->state = SEP_STATE_FREE;
}
- se_tree_insert32_array(sep_list, key, sep_data);
+ wmem_tree_insert32_array(sep_list, key, sep_data);
}
offset += 1;
@@ -932,7 +932,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
gint message_type = 0;
gint signal_id = 0;
guint delay;
- emem_tree_key_t key[4];
+ wmem_tree_key_t key[4];
guint32 t_type;
guint32 t_cid;
guint32 t_frame_number;
@@ -983,7 +983,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
/* It is AVDTP Signaling rsp side */
cid_type_data->type = STREAM_TYPE_SIGNAL;
} else {
- sep = (sep_entry_t *)se_tree_lookup32_le(sep_open, pinfo->fd->num);
+ sep = (sep_entry_t *)wmem_tree_lookup32_le(sep_open, pinfo->fd->num);
if (sep && sep->state == SEP_STATE_OPEN) {
sep->state = SEP_STATE_IN_USE;
@@ -1004,7 +1004,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[3].length = 0;
key[3].key = NULL;
- se_tree_insert32_array(cid_to_type_table, key, cid_type_data);
+ wmem_tree_insert32_array(cid_to_type_table, key, cid_type_data);
}
@@ -1022,7 +1022,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[3].length = 0;
key[3].key = NULL;
- cid_type_data = (cid_type_data_t *)se_tree_lookup32_array_le(cid_to_type_table, key);
+ cid_type_data = (cid_type_data_t *)wmem_tree_lookup32_array_le(cid_to_type_table, key);
if (cid_type_data && cid_type_data->type == STREAM_TYPE_MEDIA && cid_type_data->cid == l2cap_data->cid) {
/* AVDTP Media */
@@ -1137,7 +1137,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[2].length = 0;
key[2].key = NULL;
- sep = (sep_entry_t *)se_tree_lookup32_array_le(sep_list, key);
+ sep = (sep_entry_t *)wmem_tree_lookup32_array_le(sep_list, key);
if (sep && sep->seid == seid) {
sep->codec = codec;
}
@@ -1177,7 +1177,7 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[2].length = 0;
key[2].key = NULL;
- sep = (sep_entry_t *)se_tree_lookup32_array_le(sep_list, key);
+ sep = (sep_entry_t *)wmem_tree_lookup32_array_le(sep_list, key);
if (sep && sep->seid == seid) {
sep->codec = codec;
}
@@ -1205,12 +1205,12 @@ dissect_btavdtp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[2].length = 0;
key[2].key = NULL;
- sep = (sep_entry_t *)se_tree_lookup32_array_le(sep_list, key);
+ sep = (sep_entry_t *)wmem_tree_lookup32_array_le(sep_list, key);
if (sep && sep->seid == seid) {
sep->state = SEP_STATE_OPEN;
}
- se_tree_insert32(sep_open, pinfo->fd->num, sep);
+ wmem_tree_insert32(sep_open, pinfo->fd->num, sep);
break;
}
if (message_type == MESSAGE_TYPE_REJECT) {
@@ -1942,9 +1942,9 @@ proto_register_btavdtp(void)
"Force decoding as AVDTP Signaling",
&force_avdtp);
- sep_list = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavdtp sep list");
- sep_open = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavdtp open seps");
- cid_to_type_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavdtp cid to type");
+ sep_list = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ sep_open = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ cid_to_type_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* cid: type */
}
void
diff --git a/epan/dissectors/packet-btavrcp.c b/epan/dissectors/packet-btavrcp.c
index e6ddbc5954..ff163a890a 100644
--- a/epan/dissectors/packet-btavrcp.c
+++ b/epan/dissectors/packet-btavrcp.c
@@ -257,8 +257,8 @@ static gint ett_btavrcp_path = -1;
#define STATUS_OK 0x04
-static emem_tree_t *reassembling = NULL;
-static emem_tree_t *timing = NULL;
+static wmem_tree_t *reassembling = NULL;
+static wmem_tree_t *timing = NULL;
typedef struct _fragment {
guint start_frame_number;
@@ -270,7 +270,7 @@ typedef struct _fragment {
guint32 op;
guint state;
guint32 count;
- emem_tree_t *fragments;
+ wmem_tree_t *fragments;
} fragment_t;
typedef struct _data_fragment_t {
@@ -994,7 +994,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint packet_type;
guint parameter_length;
guint length;
- emem_tree_key_t key[7];
+ wmem_tree_key_t key[7];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1077,14 +1077,14 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
fragment->state = 0;
fragment->count = 1;
- fragment->fragments = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavctp fragments");
+ fragment->fragments = wmem_tree_new(wmem_file_scope());
data_fragment = wmem_new(wmem_file_scope(), data_fragment_t);
data_fragment->length = length;
data_fragment->data = (guint8 *) wmem_alloc(wmem_file_scope(), data_fragment->length);
tvb_memcpy(tvb, data_fragment->data, offset, data_fragment->length);
- se_tree_insert32(fragment->fragments, fragment->count, data_fragment);
+ wmem_tree_insert32(fragment->fragments, fragment->count, data_fragment);
key[0].length = 1;
key[0].key = &k_interface_id;
@@ -1107,7 +1107,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
fragment->psm = psm;
fragment->op = pdu_id | (company_id << 8);
- se_tree_insert32_array(reassembling, key, fragment);
+ wmem_tree_insert32_array(reassembling, key, fragment);
}
col_append_fstr(pinfo->cinfo, COL_INFO, " [start]");
@@ -1136,7 +1136,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragment = (fragment_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -1150,7 +1150,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
data_fragment->length = length;
data_fragment->data = (guint8 *) wmem_alloc(wmem_file_scope(), data_fragment->length);
tvb_memcpy(tvb, data_fragment->data, offset, data_fragment->length);
- se_tree_insert32(fragment->fragments, fragment->count, data_fragment);
+ wmem_tree_insert32(fragment->fragments, fragment->count, data_fragment);
}
}
@@ -1184,7 +1184,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragment = (fragment_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -1201,7 +1201,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
data_fragment->length = length;
data_fragment->data = (guint8 *) wmem_alloc(wmem_file_scope(), data_fragment->length);
tvb_memcpy(tvb, data_fragment->data, offset, data_fragment->length);
- se_tree_insert32(fragment->fragments, fragment->count, data_fragment);
+ wmem_tree_insert32(fragment->fragments, fragment->count, data_fragment);
}
/* reassembling*/
length = 0;
@@ -1210,14 +1210,14 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint8 *reassembled;
for (i_frame = 1; i_frame <= fragment->count; ++i_frame) {
- data_fragment = (data_fragment_t *)se_tree_lookup32_le(fragment->fragments, i_frame);
+ data_fragment = (data_fragment_t *)wmem_tree_lookup32_le(fragment->fragments, i_frame);
length += data_fragment->length;
}
reassembled = (guint8 *) wmem_alloc(wmem_file_scope(), length);
for (i_frame = 1; i_frame <= fragment->count; ++i_frame) {
- data_fragment = (data_fragment_t *)se_tree_lookup32_le(fragment->fragments, i_frame);
+ data_fragment = (data_fragment_t *)wmem_tree_lookup32_le(fragment->fragments, i_frame);
memcpy(reassembled + i_length,
data_fragment->data,
data_fragment->length);
@@ -1680,7 +1680,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragment = (fragment_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -1729,7 +1729,7 @@ dissect_vendor_dependant(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *)se_tree_lookup32_array_le(reassembling, key);
+ fragment = (fragment_t *)wmem_tree_lookup32_array_le(reassembling, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -2072,7 +2072,7 @@ dissect_btavrcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint max_response_time;
guint is_command;
timing_info_t *timing_info;
- emem_tree_key_t key[9];
+ wmem_tree_key_t key[9];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -2207,9 +2207,9 @@ dissect_btavrcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
timing_info->op_arg = op_arg;
timing_info->used = 0;
- se_tree_insert32_array(timing, key, timing_info);
+ wmem_tree_insert32_array(timing, key, timing_info);
} else {
- timing_info = (timing_info_t *)se_tree_lookup32_array_le(timing, key);
+ timing_info = (timing_info_t *)wmem_tree_lookup32_array_le(timing, key);
if (timing_info && timing_info->interface_id == interface_id &&
timing_info->adapter_id == adapter_id &&
timing_info->chandle == chandle &&
@@ -2254,7 +2254,7 @@ dissect_btavrcp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
- timing_info = (timing_info_t *)se_tree_lookup32_array_le(timing, key);
+ timing_info = (timing_info_t *)wmem_tree_lookup32_array_le(timing, key);
if (timing_info && timing_info->interface_id == interface_id &&
timing_info->adapter_id == adapter_id &&
timing_info->chandle == chandle &&
@@ -3080,8 +3080,8 @@ proto_register_btavrcp(void)
&ett_btavrcp_path,
};
- reassembling = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavrcp reassembling");
- timing = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btavrcp timing");
+ reassembling = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ timing = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
proto_btavrcp = proto_register_protocol("Bluetooth AVRCP Profile", "BT AVRCP", "btavrcp");
register_dissector("btavrcp", dissect_btavrcp, proto_btavrcp);
diff --git a/epan/dissectors/packet-bthci_acl.c b/epan/dissectors/packet-bthci_acl.c
index afc2104850..9a8195b18a 100644
--- a/epan/dissectors/packet-bthci_acl.c
+++ b/epan/dissectors/packet-bthci_acl.c
@@ -64,13 +64,13 @@ typedef struct _multi_fragment_pdu_t {
} multi_fragment_pdu_t;
typedef struct _chandle_data_t {
- emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
+ wmem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
guint32 interface_id;
guint32 adapter_id;
guint32 chandle;
} chandle_data_t;
-static emem_tree_t *chandle_tree = NULL;
+static wmem_tree_t *chandle_tree = NULL;
static const value_string pb_flag_vals[] = {
{ 0, "First Non-automatically Flushable Packet" },
@@ -105,7 +105,7 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
chandle_data_t *chandle_data;
void *pd_save;
hci_data_t *hci_data;
- emem_tree_key_t key[5];
+ wmem_tree_key_t key[5];
guint32 k_connection_handle;
guint32 k_frame_number;
guint32 k_interface_id;
@@ -175,7 +175,7 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[4].key = NULL;
/* remote bdaddr and name */
- remote_bdaddr = (remote_bdaddr_t *)se_tree_lookup32_array_le(hci_data->chandle_to_bdaddr_table, key);
+ remote_bdaddr = (remote_bdaddr_t *)wmem_tree_lookup32_array_le(hci_data->chandle_to_bdaddr_table, key);
if (remote_bdaddr && remote_bdaddr->interface_id == hci_data->interface_id &&
remote_bdaddr->adapter_id == hci_data->adapter_id &&
remote_bdaddr->chandle == (flags & 0x0fff)) {
@@ -208,7 +208,7 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[3].length = 0;
key[3].key = NULL;
- device_name = (device_name_t *)se_tree_lookup32_array_le(hci_data->bdaddr_to_name_table, key);
+ device_name = (device_name_t *)wmem_tree_lookup32_array_le(hci_data->bdaddr_to_name_table, key);
if (device_name && device_name->bd_addr_oui == bd_addr_oui && device_name->bd_addr_id == bd_addr_id)
remote_name = device_name->name;
else
@@ -256,14 +256,14 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[3].key = NULL;
- localhost_bdaddr_entry = (localhost_bdaddr_entry_t *)se_tree_lookup32_array_le(hci_data->localhost_bdaddr, key);
+ localhost_bdaddr_entry = (localhost_bdaddr_entry_t *)wmem_tree_lookup32_array_le(hci_data->localhost_bdaddr, key);
if (localhost_bdaddr_entry && localhost_bdaddr_entry->interface_id == hci_data->interface_id &&
localhost_bdaddr_entry->adapter_id == hci_data->adapter_id)
localhost_ether_addr = get_ether_name(localhost_bdaddr_entry->bd_addr);
else
localhost_ether_addr = "localhost";
- localhost_name_entry = (localhost_name_entry_t *)se_tree_lookup32_array_le(hci_data->localhost_name, key);
+ localhost_name_entry = (localhost_name_entry_t *)wmem_tree_lookup32_array_le(hci_data->localhost_name, key);
if (localhost_name_entry && localhost_name_entry->interface_id == hci_data->interface_id &&
localhost_name_entry->adapter_id == hci_data->adapter_id)
localhost_name = localhost_name_entry->name;
@@ -302,7 +302,7 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[4].length = 0;
key[4].key = NULL;
- chandle_data = (chandle_data_t *)se_tree_lookup32_array_le(chandle_tree, key);
+ chandle_data = (chandle_data_t *)wmem_tree_lookup32_array_le(chandle_tree, key);
if (!(chandle_data && chandle_data->interface_id == hci_data->interface_id &&
chandle_data->adapter_id == hci_data->adapter_id &&
chandle_data->chandle == (flags & 0x0fff))) {
@@ -323,12 +323,12 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[4].key = NULL;
chandle_data = (chandle_data_t *)se_alloc(sizeof(chandle_data_t));
- chandle_data->start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl fragment starts");
+ chandle_data->start_fragments = wmem_tree_new(wmem_file_scope());
chandle_data->interface_id = hci_data->interface_id;
chandle_data->adapter_id = hci_data->adapter_id;
chandle_data->chandle = flags & 0x0fff;
- se_tree_insert32_array(chandle_tree, key, chandle_data);
+ wmem_tree_insert32_array(chandle_tree, key, chandle_data);
}
length = tvb_get_letohs(tvb, offset);
@@ -378,10 +378,10 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
if (len <= mfp->tot_len) {
tvb_memcpy(tvb, (guint8 *) mfp->reassembled, offset, len);
mfp->cur_off = len;
- se_tree_insert32(chandle_data->start_fragments, pinfo->fd->num, mfp);
+ wmem_tree_insert32(chandle_data->start_fragments, pinfo->fd->num, mfp);
}
} else {
- mfp = (multi_fragment_pdu_t *)se_tree_lookup32(chandle_data->start_fragments, pinfo->fd->num);
+ mfp = (multi_fragment_pdu_t *)wmem_tree_lookup32(chandle_data->start_fragments, pinfo->fd->num);
}
if (mfp != NULL && mfp->last_frame) {
proto_item *item;
@@ -392,7 +392,7 @@ dissect_bthci_acl(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
if (pb_flag == 0x01) { /* continuation fragment */
- mfp = (multi_fragment_pdu_t *)se_tree_lookup32_le(chandle_data->start_fragments, pinfo->fd->num);
+ mfp = (multi_fragment_pdu_t *)wmem_tree_lookup32_le(chandle_data->start_fragments, pinfo->fd->num);
if (!pinfo->fd->flags.visited) {
len = tvb_length_remaining(tvb, offset);
if (mfp != NULL && !mfp->last_frame && (mfp->tot_len >= mfp->cur_off + len)) {
@@ -491,7 +491,7 @@ proto_register_bthci_acl(void)
"Whether the ACL dissector should reassemble fragmented PDUs",
&acl_reassembly);
- chandle_tree = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "bthci_acl chandles");
+ chandle_tree = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
}
diff --git a/epan/dissectors/packet-bthci_evt.c b/epan/dissectors/packet-bthci_evt.c
index e507559ee1..9f4e6c2398 100644
--- a/epan/dissectors/packet-bthci_evt.c
+++ b/epan/dissectors/packet-bthci_evt.c
@@ -967,7 +967,7 @@ dissect_bthci_evt_conn_complete(tvbuff_t *tvb, int offset, packet_info *pinfo, p
offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree, bd_addr);
if (!pinfo->fd->flags.visited && hci_data != NULL && status == 0x00) {
- emem_tree_key_t key[5];
+ wmem_tree_key_t key[5];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_connection_handle;
@@ -996,7 +996,7 @@ dissect_bthci_evt_conn_complete(tvbuff_t *tvb, int offset, packet_info *pinfo, p
remote_bdaddr->chandle = connection_handle;
memcpy(remote_bdaddr->bd_addr, bd_addr, 6);
- se_tree_insert32_array(hci_data->chandle_to_bdaddr_table, key, remote_bdaddr);
+ wmem_tree_insert32_array(hci_data->chandle_to_bdaddr_table, key, remote_bdaddr);
}
@@ -1213,7 +1213,7 @@ dissect_bthci_evt_remote_name_req_complete(tvbuff_t *tvb, int offset, packet_inf
proto_tree_add_item(tree, hf_bthci_evt_remote_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
if (!pinfo->fd->flags.visited && hci_data != NULL) {
- emem_tree_key_t key[4];
+ wmem_tree_key_t key[4];
guint32 k_bd_addr_oui;
guint32 k_bd_addr_id;
guint32 k_frame_number;
@@ -1240,7 +1240,7 @@ dissect_bthci_evt_remote_name_req_complete(tvbuff_t *tvb, int offset, packet_inf
device_name->bd_addr_id = bd_addr[3] << 16 | bd_addr[4] << 8 | bd_addr[5];
device_name->name = wmem_strdup(wmem_file_scope(), name);
- se_tree_insert32_array(hci_data->bdaddr_to_name_table, key, device_name);
+ wmem_tree_insert32_array(hci_data->bdaddr_to_name_table, key, device_name);
}
offset += 248;
@@ -1639,7 +1639,7 @@ dissect_bthci_evt_eir_ad_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
proto_tree_add_item(ti_eir_struct_subtree, hf_bthci_evt_device_name, tvb, offset+i+2, length-1, ENC_ASCII|ENC_NA);
proto_item_append_text(ti_eir_struct,": %s", tvb_format_text(tvb,offset+i+2,length-1));
if (!pinfo->fd->flags.visited && hci_data != NULL &&bd_addr) {
- emem_tree_key_t key[4];
+ wmem_tree_key_t key[4];
guint32 k_bd_addr_oui;
guint32 k_bd_addr_id;
guint32 k_frame_number;
@@ -1666,7 +1666,7 @@ dissect_bthci_evt_eir_ad_data(tvbuff_t *tvb, int offset, packet_info *pinfo,
device_name->bd_addr_id = bd_addr[3] << 16 | bd_addr[4] << 8 | bd_addr[5];
device_name->name = wmem_strdup(wmem_file_scope(), name);
- se_tree_insert32_array(hci_data->bdaddr_to_name_table, key, device_name);
+ wmem_tree_insert32_array(hci_data->bdaddr_to_name_table, key, device_name);
}
break;
case 0x0A: /* Tx Power Level */
@@ -2201,7 +2201,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
offset = dissect_bthci_evt_bd_addr(tvb, offset, pinfo, tree, bd_addr);
if (!pinfo->fd->flags.visited && hci_data != NULL && local_addr) {
- emem_tree_key_t key[4];
+ wmem_tree_key_t key[4];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_frame_number;
@@ -2224,7 +2224,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
localhost_bdaddr_entry->interface_id = k_interface_id;
localhost_bdaddr_entry->adapter_id = k_adapter_id;
memcpy(localhost_bdaddr_entry->bd_addr, bd_addr, 6);
- se_tree_insert32_array(hci_data->localhost_bdaddr, key, localhost_bdaddr_entry);
+ wmem_tree_insert32_array(hci_data->localhost_bdaddr, key, localhost_bdaddr_entry);
}
break;
@@ -2399,7 +2399,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
proto_tree_add_item(tree, hf_bthci_evt_device_name, tvb, offset, 248, ENC_ASCII|ENC_NA);
if (!pinfo->fd->flags.visited && hci_data != NULL) {
- emem_tree_key_t key[4];
+ wmem_tree_key_t key[4];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_frame_number;
@@ -2426,7 +2426,7 @@ dissect_bthci_evt_command_complete(tvbuff_t *tvb, int offset, packet_info *pinfo
localhost_name_entry->adapter_id = k_adapter_id;
localhost_name_entry->name = wmem_strdup(wmem_file_scope(), name);
- se_tree_insert32_array(hci_data->localhost_name, key, localhost_name_entry);
+ wmem_tree_insert32_array(hci_data->localhost_name, key, localhost_name_entry);
}
offset += 248;
diff --git a/epan/dissectors/packet-bthfp.c b/epan/dissectors/packet-bthfp.c
index 35087be5b1..a5cd715976 100644
--- a/epan/dissectors/packet-bthfp.c
+++ b/epan/dissectors/packet-bthfp.c
@@ -120,8 +120,8 @@ static gint ett_bthfp_command = -1;
static gint ett_bthfp_brsf_hf = -1;
static gint ett_bthfp_brsf_ag = -1;
-static emem_tree_t *fragments = NULL;
-static emem_tree_t *sdp_service_infos = NULL;
+static wmem_tree_t *fragments = NULL;
+static wmem_tree_t *sdp_service_infos = NULL;
#define ROLE_UNKNOWN 0
#define ROLE_AG 1
@@ -1133,7 +1133,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
proto_item *pitem;
gint offset = 0;
guint32 role = ROLE_UNKNOWN;
- emem_tree_key_t key[10];
+ wmem_tree_key_t key[10];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1233,7 +1233,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[9].length = 0;
key[9].key = NULL;
- service_info = (service_info_t *) se_tree_lookup32_array_le(sdp_service_infos, key);
+ service_info = (service_info_t *) wmem_tree_lookup32_array_le(sdp_service_infos, key);
if (service_info && service_info->interface_id == rfcomm_data->interface_id &&
service_info->adapter_id == rfcomm_data->adapter_id &&
service_info->sdp_psm == SDP_PSM_DEFAULT &&
@@ -1288,7 +1288,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[6].length = 0;
key[6].key = NULL;
- previous_fragment = (fragment_t *) se_tree_lookup32_array_le(fragments, key);
+ previous_fragment = (fragment_t *) wmem_tree_lookup32_array_le(fragments, key);
if (!(previous_fragment && previous_fragment->interface_id == interface_id &&
previous_fragment->adapter_id == adapter_id &&
previous_fragment->chandle == chandle &&
@@ -1333,7 +1333,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
fragment->previous_fragment = previous_fragment;
tvb_memcpy(tvb, fragment->data, offset, fragment->length);
- se_tree_insert32_array(fragments, key, fragment);
+ wmem_tree_insert32_array(fragments, key, fragment);
/* Detect reassemble end character: \r for HS or \n for AG */
length = tvb_length(tvb);
@@ -1378,7 +1378,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *) se_tree_lookup32_array_le(fragments, key);
+ fragment = (fragment_t *) wmem_tree_lookup32_array_le(fragments, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -1444,7 +1444,7 @@ dissect_bthfp(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[6].length = 0;
key[6].key = NULL;
- fragment = (fragment_t *) se_tree_lookup32_array_le(fragments, key);
+ fragment = (fragment_t *) wmem_tree_lookup32_array_le(fragments, key);
if (fragment && fragment->interface_id == interface_id &&
fragment->adapter_id == adapter_id &&
fragment->chandle == chandle &&
@@ -2002,7 +2002,7 @@ proto_register_bthfp(void)
&ett_bthfp_command
};
- fragments = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "bthfp fragments");
+ fragments = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
proto_bthfp = proto_register_protocol("Bluetooth HFP Profile", "BT HFP", "bthfp");
register_dissector("bthfp", dissect_bthfp, proto_bthfp);
diff --git a/epan/dissectors/packet-btl2cap.c b/epan/dissectors/packet-btl2cap.c
index 6cedf829ec..0892f0ddc7 100644
--- a/epan/dissectors/packet-btl2cap.c
+++ b/epan/dissectors/packet-btl2cap.c
@@ -143,13 +143,13 @@ static dissector_table_t l2cap_service_dissector_table;
* The same table is used both for SCID and DCID.
* For received CIDs we 'or' the cid with 0x80000000 in this table
*/
-static emem_tree_t *cid_to_psm_table = NULL;
-static emem_tree_t *sdp_service_infos = NULL;
+static wmem_tree_t *cid_to_psm_table = NULL;
+static wmem_tree_t *sdp_service_infos = NULL;
typedef struct _config_data_t {
guint8 mode;
guint8 txwindow;
- emem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
+ wmem_tree_t *start_fragments; /* indexed by pinfo->fd->num */
} config_data_t;
typedef struct _sdu_reassembly_t
@@ -370,7 +370,7 @@ void proto_reg_handoff_btl2cap(void);
static guint16
get_service_uuid(packet_info *pinfo, guint16 psm, gboolean is_local_psm)
{
- emem_tree_key_t key[10];
+ wmem_tree_key_t key[10];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_sdp_psm;
@@ -432,7 +432,10 @@ get_service_uuid(packet_info *pinfo, guint16 psm, gboolean is_local_psm)
key[9].length = 0;
key[9].key = NULL;
- service_info = (service_info_t *) se_tree_lookup32_array_le(sdp_service_infos, key);
+ if (sdp_service_infos)
+ service_info = (service_info_t *) wmem_tree_lookup32_array_le(sdp_service_infos, key);
+ else
+ service_info = NULL;
if (service_info && service_info->interface_id == interface_id &&
service_info->adapter_id == adapter_id &&
service_info->sdp_psm == SDP_PSM_DEFAULT &&
@@ -522,7 +525,7 @@ dissect_connrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
}
if (!pinfo->fd->flags.visited) {
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -553,10 +556,10 @@ dissect_connrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
psm_data->local_service = (pinfo->p2p_dir == P2P_DIR_RECV) ? TRUE : FALSE;
psm_data->in.mode = 0;
psm_data->in.txwindow = 0;
- psm_data->in.start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
+ psm_data->in.start_fragments = wmem_tree_new(wmem_file_scope());
psm_data->out.mode = 0;
psm_data->out.txwindow = 0;
- psm_data->out.start_fragments = se_tree_create_non_persistent(EMEM_TREE_TYPE_RED_BLACK, "bthci_l2cap fragment starts");
+ psm_data->out.start_fragments = wmem_tree_new(wmem_file_scope());
psm_data->interface_id = k_interface_id;
psm_data->adapter_id = k_adapter_id;
psm_data->chandle = k_chandle;
@@ -575,7 +578,7 @@ dissect_connrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *t
key[5].length = 0;
key[5].key = NULL;
- se_tree_insert32_array(cid_to_psm_table, key, psm_data);
+ wmem_tree_insert32_array(cid_to_psm_table, key, psm_data);
}
return offset;
}
@@ -755,7 +758,7 @@ dissect_configrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
if (tvb_reported_length_remaining(tvb, offset) > 0) {
psm_data_t *psm_data;
config_data_t *config_data;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -791,7 +794,7 @@ dissect_configrequest(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -945,7 +948,7 @@ dissect_configresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
if (tvb_reported_length_remaining(tvb, offset) > 0) {
psm_data_t *psm_data;
config_data_t *config_data;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -981,7 +984,7 @@ dissect_configresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -1030,7 +1033,7 @@ dissect_connresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
if (pinfo->fd->flags.visited == 0) {
psm_data_t *psm_data;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1066,7 +1069,7 @@ dissect_connresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -1095,7 +1098,7 @@ dissect_connresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, proto_tree *
psm_data->dcid = cid;
- se_tree_insert32_array(cid_to_psm_table, key, psm_data);
+ wmem_tree_insert32_array(cid_to_psm_table, key, psm_data);
}
}
@@ -1220,7 +1223,7 @@ dissect_disconnrequestresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
if (!pinfo->fd->flags.visited) {
psm_data_t *psm_data;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1258,7 +1261,7 @@ dissect_disconnrequestresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -1286,7 +1289,7 @@ dissect_disconnrequestresponse(tvbuff_t *tvb, int offset, packet_info *pinfo, pr
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -1421,9 +1424,9 @@ dissect_i_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
mfp->reassembled = (guint8 *) wmem_alloc(wmem_file_scope(), sdulen);
tvb_memcpy(tvb, mfp->reassembled, offset, sdulen);
mfp->cur_off = sdulen;
- se_tree_insert32(config_data->start_fragments, pinfo->fd->num, mfp);
+ wmem_tree_insert32(config_data->start_fragments, pinfo->fd->num, mfp);
} else {
- mfp = (sdu_reassembly_t *)se_tree_lookup32(config_data->start_fragments, pinfo->fd->num);
+ mfp = (sdu_reassembly_t *)wmem_tree_lookup32(config_data->start_fragments, pinfo->fd->num);
}
if (mfp != NULL && mfp->last_frame) {
proto_item *item;
@@ -1440,7 +1443,7 @@ dissect_i_frame(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, proto_tree
length -= 4; /*Control, FCS*/
}
if (segment == 0x02 || segment == 0x03) {
- mfp = (sdu_reassembly_t *)se_tree_lookup32_le(config_data->start_fragments, pinfo->fd->num);
+ mfp = (sdu_reassembly_t *)wmem_tree_lookup32_le(config_data->start_fragments, pinfo->fd->num);
if (!pinfo->fd->flags.visited) {
if (mfp != NULL && !mfp->last_frame && (mfp->tot_len>=mfp->cur_off + length)) {
tvb_memcpy(tvb, mfp->reassembled + mfp->cur_off, offset, length);
@@ -1782,7 +1785,7 @@ dissect_btl2cap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
}
}
else /* if (cid >= BTL2CAP_FIXED_CID_MAX) */ { /* Connection oriented channel */
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1817,7 +1820,7 @@ dissect_btl2cap(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[5].length = 0;
key[5].key = NULL;
- psm_data = (psm_data_t *)se_tree_lookup32_array_le(cid_to_psm_table, key);
+ psm_data = (psm_data_t *)wmem_tree_lookup32_array_le(cid_to_psm_table, key);
if (psm_data && psm_data->interface_id == interface_id &&
psm_data->adapter_id == adapter_id &&
psm_data->chandle == chandle &&
@@ -2330,7 +2333,7 @@ proto_register_btl2cap(void)
proto_register_field_array(proto_btl2cap, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- cid_to_psm_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "btl2cap scid to psm");
+ cid_to_psm_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* scid: psm */
}
diff --git a/epan/dissectors/packet-btobex.c b/epan/dissectors/packet-btobex.c
index 4aef1fc47b..3726241b70 100644
--- a/epan/dissectors/packet-btobex.c
+++ b/epan/dissectors/packet-btobex.c
@@ -214,9 +214,9 @@ static gint ett_btobex_hdrs = -1;
static gint ett_btobex_hdr = -1;
static gint ett_btobex_application_parameters = -1;
-static emem_tree_t *obex_profile = NULL;
-static emem_tree_t *obex_last_opcode = NULL;
-static emem_tree_t *obex_over_l2cap = NULL;
+static wmem_tree_t *obex_profile = NULL;
+static wmem_tree_t *obex_last_opcode = NULL;
+static wmem_tree_t *obex_over_l2cap = NULL;
static dissector_handle_t xml_handle;
@@ -1156,7 +1156,7 @@ dissect_headers(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo,
guint32 adapter_id;
guint32 chandle;
guint32 channel;
- emem_tree_key_t key[6];
+ wmem_tree_key_t key[6];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_frame_number;
@@ -1207,7 +1207,7 @@ dissect_headers(proto_tree *tree, tvbuff_t *tvb, int offset, packet_info *pinfo,
obex_profile_data->channel = channel;
obex_profile_data->profile = target_to_profile[i];
- se_tree_insert32_array(obex_profile, key, obex_profile_data);
+ wmem_tree_insert32_array(obex_profile, key, obex_profile_data);
}
}
}
@@ -1262,7 +1262,7 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
guint32 adapter_id;
guint32 chandle;
guint32 channel;
- emem_tree_key_t key[7];
+ wmem_tree_key_t key[7];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_frame_number;
@@ -1274,9 +1274,9 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
save_fragmented = pinfo->fragmented;
if (!pinfo->fd->flags.visited && pinfo->layer_names && !g_strrstr(pinfo->layer_names->str, "btrfcomm")) {
- se_tree_insert32(obex_over_l2cap, pinfo->fd->num, (void *) TRUE);
+ wmem_tree_insert32(obex_over_l2cap, pinfo->fd->num, (void *) TRUE);
} else {
- is_obex_over_l2cap = se_tree_lookup32(obex_over_l2cap, pinfo->fd->num) ? TRUE : FALSE;
+ is_obex_over_l2cap = wmem_tree_lookup32(obex_over_l2cap, pinfo->fd->num) ? TRUE : FALSE;
}
if (is_obex_over_l2cap) {
@@ -1316,7 +1316,7 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[5].length = 0;
key[5].key = NULL;
- obex_profile_data = (obex_profile_data_t *)se_tree_lookup32_array_le(obex_profile, key);
+ obex_profile_data = (obex_profile_data_t *)wmem_tree_lookup32_array_le(obex_profile, key);
if (obex_profile_data && obex_profile_data->interface_id == interface_id &&
obex_profile_data->adapter_id == adapter_id &&
obex_profile_data->chandle == chandle &&
@@ -1460,7 +1460,7 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
obex_last_opcode_data->direction = pinfo->p2p_dir;
obex_last_opcode_data->code = code;
- se_tree_insert32_array(obex_last_opcode, key, obex_last_opcode_data);
+ wmem_tree_insert32_array(obex_last_opcode, key, obex_last_opcode_data);
}
} else {
proto_tree_add_item(st, hf_response_code, next_tvb, offset, 1, ENC_BIG_ENDIAN);
@@ -1546,7 +1546,7 @@ dissect_btobex(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[6].length = 0;
key[6].key = NULL;
- obex_last_opcode_data = (obex_last_opcode_data_t *)se_tree_lookup32_array_le(obex_last_opcode, key);
+ obex_last_opcode_data = (obex_last_opcode_data_t *)wmem_tree_lookup32_array_le(obex_last_opcode, key);
if (obex_last_opcode_data && obex_last_opcode_data->interface_id == interface_id &&
obex_last_opcode_data->adapter_id == adapter_id &&
obex_last_opcode_data->chandle == chandle &&
@@ -2286,9 +2286,9 @@ proto_register_btobex(void)
&ett_btobex_application_parameters
};
- obex_profile = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "obex_profile");
- obex_last_opcode = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "obex_last_opcode");
- obex_over_l2cap = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "obex_over_l2cap");
+ obex_profile = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ obex_last_opcode = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ obex_over_l2cap = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
proto_btobex = proto_register_protocol("Bluetooth OBEX Protocol", "BT OBEX", "btobex");
diff --git a/epan/dissectors/packet-btrfcomm.c b/epan/dissectors/packet-btrfcomm.c
index a8e2b0e659..cfd65ea0af 100644
--- a/epan/dissectors/packet-btrfcomm.c
+++ b/epan/dissectors/packet-btrfcomm.c
@@ -108,7 +108,7 @@ static gint ett_btdun = -1;
static gint ett_btspp = -1;
static gint ett_btgnss = -1;
-static emem_tree_t *sdp_service_infos = NULL;
+static wmem_tree_t *sdp_service_infos = NULL;
static dissector_table_t rfcomm_service_dissector_table;
static dissector_table_t rfcomm_channel_dissector_table;
@@ -572,7 +572,7 @@ dissect_btrfcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
offset = dissect_btrfcomm_payload_length(tvb, offset, rfcomm_tree, &frame_len);
if (dlci && (frame_len || (frame_type == 0xef) || (frame_type == 0x2f))) {
- emem_tree_key_t key[10];
+ wmem_tree_key_t key[10];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_sdp_psm;
@@ -619,7 +619,7 @@ dissect_btrfcomm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
key[9].length = 0;
key[9].key = NULL;
- service_info = (service_info_t *) se_tree_lookup32_array_le(sdp_service_infos, key);
+ service_info = (service_info_t *) wmem_tree_lookup32_array_le(sdp_service_infos, key);
if (service_info && service_info->interface_id == l2cap_data->interface_id &&
service_info->adapter_id == l2cap_data->adapter_id &&
service_info->sdp_psm == SDP_PSM_DEFAULT &&
diff --git a/epan/dissectors/packet-btsdp.c b/epan/dissectors/packet-btsdp.c
index 0ba3af5664..642861e6eb 100644
--- a/epan/dissectors/packet-btsdp.c
+++ b/epan/dissectors/packet-btsdp.c
@@ -306,9 +306,9 @@ static gint ett_btsdp_protocol = -1;
static gint btsdp_tap = -1;
-static emem_tree_t *tid_requests = NULL;
-static emem_tree_t *continuation_states = NULL;
-static emem_tree_t *service_infos = NULL;
+static wmem_tree_t *tid_requests = NULL;
+static wmem_tree_t *continuation_states = NULL;
+static wmem_tree_t *service_infos = NULL;
static sdp_package_t sdp_package;
@@ -900,7 +900,7 @@ void proto_reg_handoff_btsdp(void);
static void
save_channel(packet_info *pinfo, guint32 protocol, guint32 channel, gint protocol_order, service_info_t *parent_service_info)
{
- emem_tree_key_t key[10];
+ wmem_tree_key_t key[10];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_sdp_psm;
@@ -961,7 +961,7 @@ save_channel(packet_info *pinfo, guint32 protocol, guint32 channel, gint protoco
key[9].length = 0;
key[9].key = NULL;
- se_tree_insert32_array(service_infos, key, service_info);
+ wmem_tree_insert32_array(service_infos, key, service_info);
}
static gint
@@ -1099,7 +1099,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
btl2cap_data_t *l2cap_data;
tid_request_t *tid_request;
continuation_state_data_t *continuation_state_data;
- emem_tree_key_t key[12];
+ wmem_tree_key_t key[12];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_chandle;
@@ -1174,9 +1174,9 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
tid_request->continuation_state = NULL;
tid_request->continuation_state_length = 0;
- se_tree_insert32_array(tid_requests, key, tid_request);
+ wmem_tree_insert32_array(tid_requests, key, tid_request);
} else {
- tid_request = (tid_request_t *) se_tree_lookup32_array_le(tid_requests, key);
+ tid_request = (tid_request_t *) wmem_tree_lookup32_array_le(tid_requests, key);
if (tid_request && tid_request->interface_id == interface_id &&
tid_request->adapter_id == adapter_id &&
tid_request->chandle == chandle &&
@@ -1226,7 +1226,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
key[11].length = 0;
key[11].key = NULL;
- continuation_state_data = (continuation_state_data_t *) se_tree_lookup32_array_le(continuation_states, key);
+ continuation_state_data = (continuation_state_data_t *) wmem_tree_lookup32_array_le(continuation_states, key);
if (continuation_state_data && continuation_state_data->interface_id == interface_id &&
continuation_state_data->adapter_id == adapter_id &&
continuation_state_data->chandle == chandle &&
@@ -1276,7 +1276,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
/* full reassemble */
if (!is_request) {
- tid_request = (tid_request_t *) se_tree_lookup32_array_le(tid_requests, key);
+ tid_request = (tid_request_t *) wmem_tree_lookup32_array_le(tid_requests, key);
if (tid_request && tid_request->interface_id == interface_id &&
tid_request->adapter_id == adapter_id &&
tid_request->chandle == chandle &&
@@ -1321,9 +1321,9 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
tid_request->continuation_state = continuation_state;
tid_request->continuation_state_length = continuation_state_length;
- se_tree_insert32_array(tid_requests, key, tid_request);
+ wmem_tree_insert32_array(tid_requests, key, tid_request);
} else {
- tid_request = (tid_request_t *) se_tree_lookup32_array_le(tid_requests, key);
+ tid_request = (tid_request_t *) wmem_tree_lookup32_array_le(tid_requests, key);
if (tid_request && tid_request->interface_id == interface_id &&
tid_request->adapter_id == adapter_id &&
tid_request->chandle == chandle &&
@@ -1375,7 +1375,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
key[11].length = 0;
key[11].key = NULL;
- continuation_state_data = (continuation_state_data_t *) se_tree_lookup32_array_le(continuation_states, key);
+ continuation_state_data = (continuation_state_data_t *) wmem_tree_lookup32_array_le(continuation_states, key);
if (continuation_state_data && continuation_state_data->interface_id == interface_id &&
continuation_state_data->adapter_id == adapter_id &&
continuation_state_data->chandle == chandle &&
@@ -1454,7 +1454,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
continuation_state_data->data = tid_request->data;
continuation_state_data->data_length = tid_request->data_length;
- se_tree_insert32_array(continuation_states, key, continuation_state_data);
+ wmem_tree_insert32_array(continuation_states, key, continuation_state_data);
}
}
@@ -1483,7 +1483,7 @@ reassemble_continuation_state(tvbuff_t *tvb, packet_info *pinfo,
/* partial reassemble */
if (!is_request) {
- tid_request = (tid_request_t *) se_tree_lookup32_array_le(tid_requests, key);
+ tid_request = (tid_request_t *) wmem_tree_lookup32_array_le(tid_requests, key);
if (tid_request && tid_request->interface_id == interface_id &&
tid_request->adapter_id == adapter_id &&
tid_request->chandle == chandle &&
@@ -3428,7 +3428,7 @@ dissect_sdp_service_attribute_list(proto_tree *tree, tvbuff_t *tvb, gint offset,
gint new_offset;
guint16 service_uuid = 0;
gint service_offset;
- emem_tree_key_t key[10];
+ wmem_tree_key_t key[10];
guint32 k_interface_id;
guint32 k_adapter_id;
guint32 k_sdp_psm;
@@ -3538,7 +3538,7 @@ dissect_sdp_service_attribute_list(proto_tree *tree, tvbuff_t *tvb, gint offset,
key[9].length = 0;
key[9].key = NULL;
- se_tree_insert32_array(service_infos, key, service_info);
+ wmem_tree_insert32_array(service_infos, key, service_info);
}
proto_item_set_len(list_item, offset - start_offset);
@@ -5162,13 +5162,10 @@ proto_register_btsdp(void)
proto_register_field_array(proto_btsdp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
- tid_requests = se_tree_create(EMEM_TREE_TYPE_RED_BLACK,
- "btsdp reassembling by tid");
- continuation_states = se_tree_create(EMEM_TREE_TYPE_RED_BLACK,
- "btsdp reassembling by continuation state");
+ tid_requests = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
+ continuation_states = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
- service_infos = se_tree_create(EMEM_TREE_TYPE_RED_BLACK,
- "btsdp service infos");
+ service_infos = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
sdp_package.service_infos = service_infos;
btsdp_tap = register_tap("btsdp");
diff --git a/epan/dissectors/packet-btsdp.h b/epan/dissectors/packet-btsdp.h
index a8a54b40a3..d9d7780ad4 100644
--- a/epan/dissectors/packet-btsdp.h
+++ b/epan/dissectors/packet-btsdp.h
@@ -24,6 +24,8 @@
#ifndef __PACKET_BTSDP_H__
#define __PACKET_BTSDP_H__
+#include <epan/wmem/wmem.h>
+
/*
* Based on value provided by Bluetooth SIG:
* https://www.bluetooth.org/Technical/AssignedNumbers/service_discovery.htm
@@ -132,7 +134,7 @@
#define BTSDP_GENERIC_NETWORKING_SERVICE_UUID 0x1201
#define BTSDP_GENERIC_FILE_TRANSFER_SERVICE_UUID 0x1202
-#define BTSDP_GENERIC_AUDIO_SERVICE_UUID 0x1203
+#define BTSDP_GENERIC_AUDIO_SERVICE_UUID e 0x1203
#define BTSDP_GENERIC_TELEPHONY_SERVICE_UUID 0x1204
#define BTSDP_ESDP_UPNP_SERVICE_SERVICE_UUID 0x1205
@@ -195,7 +197,7 @@ typedef struct _service_info_t {
extern value_string_ext vs_service_classes_ext;
typedef struct _sdp_package_t {
- emem_tree_t *service_infos;
+ wmem_tree_t *service_infos;
} sdp_package_t;
#endif
diff --git a/epan/dissectors/packet-hci_h1.c b/epan/dissectors/packet-hci_h1.c
index cd61094f04..49a25816ae 100644
--- a/epan/dissectors/packet-hci_h1.c
+++ b/epan/dissectors/packet-hci_h1.c
@@ -30,7 +30,7 @@
#include "packet-bluetooth-hci.h"
static int proto_hci_h1 = -1;
-/* static int hf_hci_h1_type = -1; */
+
static int hf_hci_h1_direction = -1;
static gint ett_hci_h1 = -1;
@@ -38,23 +38,23 @@ static gint ett_hci_h1 = -1;
static dissector_table_t hci_h1_table;
static dissector_handle_t data_handle;
-static emem_tree_t *chandle_to_bdaddr_table = NULL;
-static emem_tree_t *bdaddr_to_name_table = NULL;
-static emem_tree_t *localhost_name = NULL;
-static emem_tree_t *localhost_bdaddr = NULL;
+static wmem_tree_t *chandle_to_bdaddr_table = NULL;
+static wmem_tree_t *bdaddr_to_name_table = NULL;
+static wmem_tree_t *localhost_name = NULL;
+static wmem_tree_t *localhost_bdaddr = NULL;
static const value_string hci_h1_type_vals[] = {
- {BTHCI_CHANNEL_COMMAND, "HCI Command"},
- {BTHCI_CHANNEL_ACL, "ACL Data"},
- {BTHCI_CHANNEL_SCO, "SCO Data"},
- {BTHCI_CHANNEL_EVENT, "HCI Event"},
- {0, NULL }
+ {BTHCI_CHANNEL_COMMAND, "HCI Command"},
+ {BTHCI_CHANNEL_ACL, "ACL Data"},
+ {BTHCI_CHANNEL_SCO, "SCO Data"},
+ {BTHCI_CHANNEL_EVENT, "HCI Event"},
+ {0, NULL }
};
static const value_string hci_h1_direction_vals[] = {
- {-1, "Unknown"},
- {0, "Sent"},
- {1, "Rcvd"},
- {0, NULL}
+ {-1, "Unknown"},
+ {0, "Sent"},
+ {1, "Rcvd"},
+ {0, NULL}
};
void proto_register_hci_h1(void);
@@ -63,119 +63,123 @@ void proto_reg_handoff_hci_h1(void);
static void
dissect_hci_h1(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 type;
- tvbuff_t *next_tvb;
- proto_item *ti = NULL;
- proto_tree *hci_h1_tree = NULL;
- void *pd_save;
- hci_data_t *hci_data;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI");
-
- col_clear(pinfo->cinfo, COL_INFO);
-
- type = pinfo->pseudo_header->bthci.channel;
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_hci_h1, tvb, 0, 0, ENC_NA);
- hci_h1_tree = proto_item_add_subtree(ti, ett_hci_h1);
-
- if(pinfo->p2p_dir == P2P_DIR_SENT ||
- pinfo->p2p_dir == P2P_DIR_RECV)
- proto_item_append_text(hci_h1_tree, " %s %s",
- val_to_str(pinfo->p2p_dir,
- hci_h1_direction_vals, "Unknown: %d"),
- val_to_str(type,
- hci_h1_type_vals,
- "Unknown 0x%02x"));
- else
- proto_item_append_text(hci_h1_tree, " %s",
- val_to_str(type,
- hci_h1_type_vals,
- "Unknown 0x%02x"));
- }
-
- if(pinfo->p2p_dir == P2P_DIR_SENT ||
- pinfo->p2p_dir == P2P_DIR_RECV)
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
- val_to_str(pinfo->p2p_dir,
- hci_h1_direction_vals, "Unknown: %d"),
- val_to_str(type, hci_h1_type_vals,
- "Unknown 0x%02x"));
- else
- col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
- val_to_str(type, hci_h1_type_vals,
- "Unknown 0x%02x"));
-
- pd_save = pinfo->private_data;
- hci_data = wmem_new(wmem_packet_scope(),hci_data_t);
- hci_data->interface_id = HCI_INTERFACE_H4;
- hci_data->adapter_id = HCI_ADAPTER_DEFAULT;
- hci_data->chandle_to_bdaddr_table = chandle_to_bdaddr_table;
- hci_data->bdaddr_to_name_table = bdaddr_to_name_table;
- hci_data->localhost_bdaddr = localhost_bdaddr;
- hci_data->localhost_name = localhost_name;
- pinfo->private_data = hci_data;
-
- ti = proto_tree_add_int(hci_h1_tree, hf_hci_h1_direction, tvb, 0, 0, pinfo->p2p_dir);
- PROTO_ITEM_SET_GENERATED(ti);
-
- next_tvb = tvb_new_subset_remaining(tvb, 0);
- if (!dissector_try_uint(hci_h1_table, type, next_tvb, pinfo, tree)) {
- call_dissector(data_handle, next_tvb, pinfo, tree);
- }
-
- pinfo->private_data = pd_save;
+ guint8 type;
+ tvbuff_t *next_tvb;
+ proto_item *ti = NULL;
+ proto_tree *hci_h1_tree = NULL;
+ void *pd_save;
+ hci_data_t *hci_data;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI");
+
+ col_clear(pinfo->cinfo, COL_INFO);
+
+ type = pinfo->pseudo_header->bthci.channel;
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_hci_h1, tvb, 0, 0, ENC_NA);
+ hci_h1_tree = proto_item_add_subtree(ti, ett_hci_h1);
+
+ if(pinfo->p2p_dir == P2P_DIR_SENT ||
+ pinfo->p2p_dir == P2P_DIR_RECV)
+ proto_item_append_text(hci_h1_tree, " %s %s",
+ val_to_str(pinfo->p2p_dir,
+ hci_h1_direction_vals, "Unknown: %d"),
+ val_to_str(type,
+ hci_h1_type_vals,
+ "Unknown 0x%02x"));
+ else
+ proto_item_append_text(hci_h1_tree, " %s",
+ val_to_str(type,
+ hci_h1_type_vals,
+ "Unknown 0x%02x"));
+ }
+
+ if(pinfo->p2p_dir == P2P_DIR_SENT ||
+ pinfo->p2p_dir == P2P_DIR_RECV)
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s %s",
+ val_to_str(pinfo->p2p_dir,
+ hci_h1_direction_vals, "Unknown: %d"),
+ val_to_str(type, hci_h1_type_vals,
+ "Unknown 0x%02x"));
+ else
+ col_add_fstr(pinfo->cinfo, COL_INFO, "%s",
+ val_to_str(type, hci_h1_type_vals,
+ "Unknown 0x%02x"));
+
+ pd_save = pinfo->private_data;
+ hci_data = wmem_new(wmem_packet_scope(),hci_data_t);
+ hci_data->interface_id = HCI_INTERFACE_H4;
+ hci_data->adapter_id = HCI_ADAPTER_DEFAULT;
+ hci_data->chandle_to_bdaddr_table = chandle_to_bdaddr_table;
+ hci_data->bdaddr_to_name_table = bdaddr_to_name_table;
+ hci_data->localhost_bdaddr = localhost_bdaddr;
+ hci_data->localhost_name = localhost_name;
+ pinfo->private_data = hci_data;
+
+ ti = proto_tree_add_int(hci_h1_tree, hf_hci_h1_direction, tvb, 0, 0, pinfo->p2p_dir);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ next_tvb = tvb_new_subset_remaining(tvb, 0);
+ if (!dissector_try_uint(hci_h1_table, type, next_tvb, pinfo, tree)) {
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
+
+ pinfo->private_data = pd_save;
}
void
proto_register_hci_h1(void)
{
- static hf_register_info hf[] = {
-#if 0
- { &hf_hci_h1_type,
- { "HCI Packet Type", "hci_h1.type",
- FT_UINT8, BASE_HEX, VALS(hci_h1_type_vals), 0x0,
- NULL, HFILL }},
-#endif
-
- { &hf_hci_h1_direction,
- { "Direction", "hci_h1.direction",
- FT_INT8, BASE_DEC, VALS(hci_h1_direction_vals), 0x0,
- "HCI Packet Direction Sent/Rcvd/Unknown", HFILL }},
+ static hf_register_info hf[] = {
+ { &hf_hci_h1_direction,
+ { "Direction", "hci_h1.direction",
+ FT_INT8, BASE_DEC, VALS(hci_h1_direction_vals), 0x0,
+ "HCI Packet Direction Sent/Rcvd/Unknown", HFILL }
+ }
+ };
- };
+ static gint *ett[] = {
+ &ett_hci_h1,
+ };
- static gint *ett[] = {
- &ett_hci_h1,
- };
+ proto_hci_h1 = proto_register_protocol("Bluetooth HCI H1",
+ "HCI_H1", "hci_h1");
- proto_hci_h1 = proto_register_protocol("Bluetooth HCI H1",
- "HCI_H1", "hci_h1");
+ register_dissector("hci_h1", dissect_hci_h1, proto_hci_h1);
- register_dissector("hci_h1", dissect_hci_h1, proto_hci_h1);
+ proto_register_field_array(proto_hci_h1, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
- proto_register_field_array(proto_hci_h1, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
+ hci_h1_table = register_dissector_table("hci_h1.type",
+ "HCI h1 pdu type", FT_UINT8, BASE_HEX);
- hci_h1_table = register_dissector_table("hci_h1.type",
- "HCI h1 pdu type", FT_UINT8, BASE_HEX);
-
- chandle_to_bdaddr_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adapter/chandle to bdaddr");
- bdaddr_to_name_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci bdaddr to name");
- localhost_bdaddr = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adaper/frame to bdaddr");
- localhost_name = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adaper/frame to name");
+ chandle_to_bdaddr_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adapter, chandle: bdaddr */
+ bdaddr_to_name_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* bdaddr: name */
+ localhost_bdaddr = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: bdaddr */
+ localhost_name = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: name */
}
void
proto_reg_handoff_hci_h1(void)
{
- dissector_handle_t hci_h1_handle;
+ dissector_handle_t hci_h1_handle;
- data_handle = find_dissector("data");
- hci_h1_handle = find_dissector("hci_h1");
- dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_HCI, hci_h1_handle);
+ data_handle = find_dissector("data");
+ hci_h1_handle = find_dissector("hci_h1");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_HCI, hci_h1_handle);
}
-
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-hci_h4.c b/epan/dissectors/packet-hci_h4.c
index 748504d199..125174f4cb 100644
--- a/epan/dissectors/packet-hci_h4.c
+++ b/epan/dissectors/packet-hci_h4.c
@@ -44,23 +44,23 @@ static gint ett_hci_h4 = -1;
static dissector_table_t hci_h4_table;
static dissector_handle_t data_handle;
-static emem_tree_t *chandle_to_bdaddr_table = NULL;
-static emem_tree_t *bdaddr_to_name_table = NULL;
-static emem_tree_t *localhost_name = NULL;
-static emem_tree_t *localhost_bdaddr = NULL;
+static wmem_tree_t *chandle_to_bdaddr_table = NULL;
+static wmem_tree_t *bdaddr_to_name_table = NULL;
+static wmem_tree_t *localhost_name = NULL;
+static wmem_tree_t *localhost_bdaddr = NULL;
static const value_string hci_h4_type_vals[] = {
- {HCI_H4_TYPE_CMD, "HCI Command"},
- {HCI_H4_TYPE_ACL, "ACL Data"},
- {HCI_H4_TYPE_SCO, "SCO Data"},
- {HCI_H4_TYPE_EVT, "HCI Event"},
- {0, NULL }
+ {HCI_H4_TYPE_CMD, "HCI Command"},
+ {HCI_H4_TYPE_ACL, "ACL Data"},
+ {HCI_H4_TYPE_SCO, "SCO Data"},
+ {HCI_H4_TYPE_EVT, "HCI Event"},
+ {0, NULL }
};
static const value_string hci_h4_direction_vals[] = {
- {P2P_DIR_SENT, "Sent"},
- {P2P_DIR_RECV, "Rcvd"},
- {P2P_DIR_UNKNOWN, "Unspecified"},
- {0, NULL}
+ {P2P_DIR_SENT, "Sent"},
+ {P2P_DIR_RECV, "Rcvd"},
+ {P2P_DIR_UNKNOWN, "Unspecified"},
+ {0, NULL}
};
void proto_register_hci_h4(void);
@@ -69,113 +69,124 @@ void proto_reg_handoff_hci_h4(void);
static void
dissect_hci_h4(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
{
- guint8 type;
- tvbuff_t *next_tvb;
- proto_item *ti = NULL;
- proto_tree *hci_h4_tree = NULL;
- void *pd_save;
- hci_data_t *hci_data;
-
- col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI H4");
- switch (pinfo->p2p_dir) {
-
- case P2P_DIR_SENT:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Sent ");
- break;
-
- case P2P_DIR_RECV:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Rcvd ");
- break;
-
- case P2P_DIR_UNKNOWN:
- break;
-
- default:
- col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
- pinfo->p2p_dir);
- break;
- }
-
- type = tvb_get_guint8(tvb, 0);
-
- if (tree) {
- ti = proto_tree_add_item(tree, proto_hci_h4, tvb, 0, 1, ENC_NA);
- hci_h4_tree = proto_item_add_subtree(ti, ett_hci_h4);
- }
-
- pd_save = pinfo->private_data;
- hci_data = (hci_data_t *) wmem_new(wmem_packet_scope(), hci_data_t);
- hci_data->interface_id = HCI_INTERFACE_H4;
- hci_data->adapter_id = HCI_ADAPTER_DEFAULT;
- hci_data->chandle_to_bdaddr_table = chandle_to_bdaddr_table;
- hci_data->bdaddr_to_name_table = bdaddr_to_name_table;
- hci_data->localhost_bdaddr = localhost_bdaddr;
- hci_data->localhost_name = localhost_name;
- pinfo->private_data = hci_data;
-
- ti = proto_tree_add_uint(hci_h4_tree, hf_hci_h4_direction, tvb, 0, 0, pinfo->p2p_dir);
- PROTO_ITEM_SET_GENERATED(ti);
-
- proto_tree_add_item(hci_h4_tree, hf_hci_h4_type,
- tvb, 0, 1, ENC_LITTLE_ENDIAN);
- col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
- val_to_str(type, hci_h4_type_vals, "Unknown HCI packet type 0x%02x"));
-
- next_tvb = tvb_new_subset_remaining(tvb, 1);
- if (!dissector_try_uint(hci_h4_table, type, next_tvb, pinfo, tree)) {
- call_dissector(data_handle, next_tvb, pinfo, tree);
- }
-
- pinfo->private_data = pd_save;
+ guint8 type;
+ tvbuff_t *next_tvb;
+ proto_item *ti = NULL;
+ proto_tree *hci_h4_tree = NULL;
+ void *pd_save;
+ hci_data_t *hci_data;
+
+ col_set_str(pinfo->cinfo, COL_PROTOCOL, "HCI H4");
+ switch (pinfo->p2p_dir) {
+
+ case P2P_DIR_SENT:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Sent ");
+ break;
+
+ case P2P_DIR_RECV:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Rcvd ");
+ break;
+
+ case P2P_DIR_UNKNOWN:
+ break;
+
+ default:
+ col_add_fstr(pinfo->cinfo, COL_INFO, "Unknown direction %d ",
+ pinfo->p2p_dir);
+ break;
+ }
+
+ type = tvb_get_guint8(tvb, 0);
+
+ if (tree) {
+ ti = proto_tree_add_item(tree, proto_hci_h4, tvb, 0, 1, ENC_NA);
+ hci_h4_tree = proto_item_add_subtree(ti, ett_hci_h4);
+ }
+
+ pd_save = pinfo->private_data;
+ hci_data = (hci_data_t *) wmem_new(wmem_packet_scope(), hci_data_t);
+ hci_data->interface_id = HCI_INTERFACE_H4;
+ hci_data->adapter_id = HCI_ADAPTER_DEFAULT;
+ hci_data->chandle_to_bdaddr_table = chandle_to_bdaddr_table;
+ hci_data->bdaddr_to_name_table = bdaddr_to_name_table;
+ hci_data->localhost_bdaddr = localhost_bdaddr;
+ hci_data->localhost_name = localhost_name;
+ pinfo->private_data = hci_data;
+
+ ti = proto_tree_add_uint(hci_h4_tree, hf_hci_h4_direction, tvb, 0, 0, pinfo->p2p_dir);
+ PROTO_ITEM_SET_GENERATED(ti);
+
+ proto_tree_add_item(hci_h4_tree, hf_hci_h4_type,
+ tvb, 0, 1, ENC_LITTLE_ENDIAN);
+ col_append_fstr(pinfo->cinfo, COL_INFO, "%s",
+ val_to_str(type, hci_h4_type_vals, "Unknown HCI packet type 0x%02x"));
+
+ next_tvb = tvb_new_subset_remaining(tvb, 1);
+ if (!dissector_try_uint(hci_h4_table, type, next_tvb, pinfo, tree)) {
+ call_dissector(data_handle, next_tvb, pinfo, tree);
+ }
+
+ pinfo->private_data = pd_save;
}
void
proto_register_hci_h4(void)
{
- static hf_register_info hf[] = {
- { &hf_hci_h4_type,
- { "HCI Packet Type", "hci_h4.type",
- FT_UINT8, BASE_HEX, VALS(hci_h4_type_vals), 0x0,
- NULL, HFILL }},
-
- { &hf_hci_h4_direction,
- { "Direction", "hci_h4.direction",
- FT_UINT8, BASE_HEX, VALS(hci_h4_direction_vals), 0x0,
- "HCI Packet Direction Sent/Rcvd", HFILL }},
-
- };
-
- static gint *ett[] = {
- &ett_hci_h4,
- };
-
- proto_hci_h4 = proto_register_protocol("Bluetooth HCI H4",
- "HCI_H4", "hci_h4");
-
- register_dissector("hci_h4", dissect_hci_h4, proto_hci_h4);
-
- proto_register_field_array(proto_hci_h4, hf, array_length(hf));
- proto_register_subtree_array(ett, array_length(ett));
-
- hci_h4_table = register_dissector_table("hci_h4.type",
- "HCI H4 pdu type", FT_UINT8, BASE_HEX);
-
- chandle_to_bdaddr_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adapter/chandle to bdaddr");
- bdaddr_to_name_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci bdaddr to name");
- localhost_bdaddr = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adaper/frame to bdaddr");
- localhost_name = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci adaper/frame to name");
+ static hf_register_info hf[] = {
+ { &hf_hci_h4_type,
+ { "HCI Packet Type", "hci_h4.type",
+ FT_UINT8, BASE_HEX, VALS(hci_h4_type_vals), 0x0,
+ NULL, HFILL }
+ },
+ { &hf_hci_h4_direction,
+ { "Direction", "hci_h4.direction",
+ FT_UINT8, BASE_HEX, VALS(hci_h4_direction_vals), 0x0,
+ "HCI Packet Direction Sent/Rcvd", HFILL }
+ }
+ };
+
+ static gint *ett[] = {
+ &ett_hci_h4,
+ };
+
+ proto_hci_h4 = proto_register_protocol("Bluetooth HCI H4",
+ "HCI_H4", "hci_h4");
+
+ register_dissector("hci_h4", dissect_hci_h4, proto_hci_h4);
+
+ proto_register_field_array(proto_hci_h4, hf, array_length(hf));
+ proto_register_subtree_array(ett, array_length(ett));
+
+ hci_h4_table = register_dissector_table("hci_h4.type",
+ "HCI H4 pdu type", FT_UINT8, BASE_HEX);
+
+ chandle_to_bdaddr_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adapter, chandle: bdaddr */
+ bdaddr_to_name_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* bdaddr: name */
+ localhost_bdaddr = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: bdaddr */
+ localhost_name = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: name */
}
void
proto_reg_handoff_hci_h4(void)
{
- dissector_handle_t hci_h4_handle;
+ dissector_handle_t hci_h4_handle;
- data_handle = find_dissector("data");
- hci_h4_handle = find_dissector("hci_h4");
- dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_H4, hci_h4_handle);
- dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR, hci_h4_handle);
+ data_handle = find_dissector("data");
+ hci_h4_handle = find_dissector("hci_h4");
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_H4, hci_h4_handle);
+ dissector_add_uint("wtap_encap", WTAP_ENCAP_BLUETOOTH_H4_WITH_PHDR, hci_h4_handle);
}
-
+/*
+ * Editor modelines - http://www.wireshark.org/tools/modelines.html
+ *
+ * Local variables:
+ * c-basic-offset: 4
+ * tab-width: 8
+ * indent-tabs-mode: nil
+ * End:
+ *
+ * vi: set shiftwidth=4 tabstop=8 expandtab:
+ * :indentSize=4:tabSize=8:noTabs=true:
+ */
diff --git a/epan/dissectors/packet-hci_usb.c b/epan/dissectors/packet-hci_usb.c
index 2080df97cd..859c55f801 100644
--- a/epan/dissectors/packet-hci_usb.c
+++ b/epan/dissectors/packet-hci_usb.c
@@ -52,11 +52,11 @@ static int hf_msg_fragment_count = -1;
static int hf_msg_reassembled_in = -1;
static int hf_msg_reassembled_length = -1;
-static emem_tree_t *chandle_to_bdaddr_table = NULL;
-static emem_tree_t *bdaddr_to_name_table = NULL;
-static emem_tree_t *localhost_name = NULL;
-static emem_tree_t *localhost_bdaddr = NULL;
-static emem_tree_t *fragment_info_table = NULL;
+static wmem_tree_t *chandle_to_bdaddr_table = NULL;
+static wmem_tree_t *bdaddr_to_name_table = NULL;
+static wmem_tree_t *localhost_name = NULL;
+static wmem_tree_t *localhost_bdaddr = NULL;
+static wmem_tree_t *fragment_info_table = NULL;
static reassembly_table hci_usb_reassembly_table;
@@ -154,13 +154,13 @@ dissect_hci_usb(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *data
if (!pinfo->fd->flags.visited && usb_data->endpoint <= 0x02) {
fragment_info_t *fragment_info;
- fragment_info = (fragment_info_t *) se_tree_lookup32(fragment_info_table, session_id);
+ fragment_info = (fragment_info_t *) wmem_tree_lookup32(fragment_info_table, session_id);
if (fragment_info == NULL) {
fragment_info = (fragment_info_t *) wmem_new(wmem_file_scope(), fragment_info_t);
fragment_info->fragment_id = 0;
fragment_info->remaining_length = 0;
- se_tree_insert32(fragment_info_table, session_id, fragment_info);
+ wmem_tree_insert32(fragment_info_table, session_id, fragment_info);
}
if (fragment_info->fragment_id == 0) {
@@ -298,12 +298,12 @@ proto_register_hci_usb(void)
reassembly_table_init(&hci_usb_reassembly_table,
&addresses_reassembly_table_functions);
- fragment_info_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci_usb fragment_info");
+ fragment_info_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope());
- chandle_to_bdaddr_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci_usb adapter/chandle to bdaddr");
- bdaddr_to_name_table = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci_usb bdaddr to name");
- localhost_bdaddr = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci_usb adaper/frame to bdaddr");
- localhost_name = se_tree_create(EMEM_TREE_TYPE_RED_BLACK, "hci_usb adaper/frame to name");
+ chandle_to_bdaddr_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adapter, chandle: bdaddr */
+ bdaddr_to_name_table = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* bdaddr: name */
+ localhost_bdaddr = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: bdaddr */
+ localhost_name = wmem_tree_new_autoreset(wmem_epan_scope(), wmem_file_scope()); /* adaper, frame: name */
proto_hci_usb = proto_register_protocol("Bluetooth HCI USB Transport", "HCI_USB", "hci_usb");
proto_register_field_array(proto_hci_usb, hf, array_length(hf));