diff options
author | Evan Huus <eapache@gmail.com> | 2013-06-20 16:31:53 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-06-20 16:31:53 +0000 |
commit | 5d53d63cd79f48f15c16f41efe74c2a91a0c5003 (patch) | |
tree | 8295b22f500dc1517a113f85a3053d4367c99915 /epan | |
parent | 612d14c883ddc4aa46469c49183f53c99fdb634e (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')
-rw-r--r-- | epan/dissectors/packet-bluetooth-hci.h | 10 | ||||
-rw-r--r-- | epan/dissectors/packet-btavctp.c | 32 | ||||
-rw-r--r-- | epan/dissectors/packet-btavdtp.c | 40 | ||||
-rw-r--r-- | epan/dissectors/packet-btavrcp.c | 42 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_acl.c | 28 | ||||
-rw-r--r-- | epan/dissectors/packet-bthci_evt.c | 20 | ||||
-rw-r--r-- | epan/dissectors/packet-bthfp.c | 18 | ||||
-rw-r--r-- | epan/dissectors/packet-btl2cap.c | 53 | ||||
-rw-r--r-- | epan/dissectors/packet-btobex.c | 28 | ||||
-rw-r--r-- | epan/dissectors/packet-btrfcomm.c | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-btsdp.c | 43 | ||||
-rw-r--r-- | epan/dissectors/packet-btsdp.h | 6 | ||||
-rw-r--r-- | epan/dissectors/packet-hci_h1.c | 224 | ||||
-rw-r--r-- | epan/dissectors/packet-hci_h4.c | 229 | ||||
-rw-r--r-- | epan/dissectors/packet-hci_usb.c | 24 | ||||
-rw-r--r-- | epan/wmem/wmem_tree.h | 2 |
16 files changed, 412 insertions, 393 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)); diff --git a/epan/wmem/wmem_tree.h b/epan/wmem/wmem_tree.h index da060f25e9..90a4d987ac 100644 --- a/epan/wmem/wmem_tree.h +++ b/epan/wmem/wmem_tree.h @@ -119,7 +119,7 @@ typedef struct _wmem_tree_key_t { * The NFS dissector handles this by providing a guint32 containing the length * as the very first item in this vector : * - * emem_tree_key_t fhkey[3]; + * wmem_tree_key_t fhkey[3]; * * fhlen=nns->fh_length; * fhkey[0].length=1; |