aboutsummaryrefslogtreecommitdiffstats
path: root/epan/dissectors
diff options
context:
space:
mode:
authorPeter Wu <peter@lekensteyn.nl>2015-06-28 13:06:31 +0200
committerMichael Mann <mmann78@netscape.net>2015-07-03 23:34:28 +0000
commit80f7ee063d371f0de989d51d40c6b4fabfbfb430 (patch)
tree9d69b4eb9445f73f88535f36be2374f528012b2d /epan/dissectors
parent750babc53acae3399f31d2160d6d719c51c8f222 (diff)
Call reassembly_table_destroy for some dissectors
This patch adds reassembly_table_destroy calls as cleanup function for dissectors which have a simple init routine that just calls reassembly_table_init (comments are ignored). The changes were automatically generated using https://git.lekensteyn.nl/peter/wireshark-notes/diff/one-off/cleanup-rewrite.py?id=4cc0aec05dc67a51926a045e1955b7a956757b5e (with the if and assignment parsers disabled). The only difference from the autogenerated output is that the XXX comments from the init routines in smb-pipe and tds dissectors are kept. Change-Id: I64aedf7189877247282b30b0e0f83757be6199e7 Reviewed-on: https://code.wireshark.org/review/9222 Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan/dissectors')
-rw-r--r--epan/dissectors/packet-bacapp.c7
-rw-r--r--epan/dissectors/packet-batadv.c6
-rw-r--r--epan/dissectors/packet-ber.c5
-rw-r--r--epan/dissectors/packet-btobex.c7
-rw-r--r--epan/dissectors/packet-capwap.c6
-rw-r--r--epan/dissectors/packet-cell_broadcast.c6
-rw-r--r--epan/dissectors/packet-clnp.c7
-rw-r--r--epan/dissectors/packet-dcp-etsi.c7
-rw-r--r--epan/dissectors/packet-dtn.c6
-rw-r--r--epan/dissectors/packet-eap.c7
-rw-r--r--epan/dissectors/packet-gsm_cbch.c7
-rw-r--r--epan/dissectors/packet-gsm_sms_ud.c7
-rw-r--r--epan/dissectors/packet-gssapi.c7
-rw-r--r--epan/dissectors/packet-ieee80211.c7
-rw-r--r--epan/dissectors/packet-ip.c7
-rw-r--r--epan/dissectors/packet-ipv6.c7
-rw-r--r--epan/dissectors/packet-isup.c7
-rw-r--r--epan/dissectors/packet-lapdm.c7
-rw-r--r--epan/dissectors/packet-lapsat.c7
-rw-r--r--epan/dissectors/packet-ltp.c6
-rw-r--r--epan/dissectors/packet-mbim.c7
-rw-r--r--epan/dissectors/packet-mp2t.c6
-rw-r--r--epan/dissectors/packet-mq.c6
-rw-r--r--epan/dissectors/packet-mux27010.c10
-rw-r--r--epan/dissectors/packet-ndmp.c7
-rw-r--r--epan/dissectors/packet-netbios.c10
-rw-r--r--epan/dissectors/packet-openvpn.c7
-rw-r--r--epan/dissectors/packet-pop.c6
-rw-r--r--epan/dissectors/packet-ppi.c7
-rw-r--r--epan/dissectors/packet-q931.c7
-rw-r--r--epan/dissectors/packet-reload.c7
-rw-r--r--epan/dissectors/packet-rtp.c7
-rw-r--r--epan/dissectors/packet-scsi.c7
-rw-r--r--epan/dissectors/packet-selfm.c8
-rw-r--r--epan/dissectors/packet-ses.c6
-rw-r--r--epan/dissectors/packet-smb-direct.c7
-rw-r--r--epan/dissectors/packet-smb-pipe.c7
-rw-r--r--epan/dissectors/packet-smtp.c7
-rw-r--r--epan/dissectors/packet-sna.c7
-rw-r--r--epan/dissectors/packet-sndcp.c7
-rw-r--r--epan/dissectors/packet-stt.c7
-rw-r--r--epan/dissectors/packet-tds.c7
-rw-r--r--epan/dissectors/packet-teamspeak2.c6
-rw-r--r--epan/dissectors/packet-tipc.c7
-rw-r--r--epan/dissectors/packet-usb-audio.c7
-rw-r--r--epan/dissectors/packet-wai.c6
-rw-r--r--epan/dissectors/packet-wtp.c7
-rw-r--r--epan/dissectors/packet-x25.c7
-rw-r--r--epan/dissectors/packet-zbee-aps.c7
49 files changed, 329 insertions, 8 deletions
diff --git a/epan/dissectors/packet-bacapp.c b/epan/dissectors/packet-bacapp.c
index b4bf08a623..c9fe6a286c 100644
--- a/epan/dissectors/packet-bacapp.c
+++ b/epan/dissectors/packet-bacapp.c
@@ -11076,6 +11076,12 @@ bacapp_init_routine(void)
&addresses_reassembly_table_functions);
}
+static void
+bacapp_cleanup_routine(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void
proto_register_bacapp(void)
{
@@ -11294,6 +11300,7 @@ proto_register_bacapp(void)
expert_register_field_array(expert_bacapp, ei, array_length(ei));
register_dissector("bacapp", dissect_bacapp, proto_bacapp);
register_init_routine(&bacapp_init_routine);
+ register_cleanup_routine(&bacapp_cleanup_routine);
bacapp_dissector_table = register_dissector_table("bacapp.vendor_identifier",
"BACapp Vendor Identifier",
diff --git a/epan/dissectors/packet-batadv.c b/epan/dissectors/packet-batadv.c
index d5bd8ab77d..e851a0d379 100644
--- a/epan/dissectors/packet-batadv.c
+++ b/epan/dissectors/packet-batadv.c
@@ -4195,6 +4195,11 @@ static void batadv_init_routine(void)
&addresses_reassembly_table_functions);
}
+static void batadv_cleanup_routine(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void proto_register_batadv(void)
{
module_t *batadv_module;
@@ -5031,6 +5036,7 @@ void proto_register_batadv(void)
expert_register_field_array(expert_batadv, ei, array_length(ei));
register_init_routine(&batadv_init_routine);
+ register_cleanup_routine(&batadv_cleanup_routine);
}
void proto_reg_handoff_batadv(void)
diff --git a/epan/dissectors/packet-ber.c b/epan/dissectors/packet-ber.c
index 4630da439c..eeff690f73 100644
--- a/epan/dissectors/packet-ber.c
+++ b/epan/dissectors/packet-ber.c
@@ -1435,6 +1435,10 @@ static void ber_defragment_init(void) {
&addresses_reassembly_table_functions);
}
+static void ber_defragment_cleanup(void) {
+ reassembly_table_destroy(&octet_segment_reassembly_table);
+}
+
static int
reassemble_octet_string(asn1_ctx_t *actx, proto_tree *tree, gint hf_id, tvbuff_t *tvb, int offset, guint32 con_len, gboolean ind, tvbuff_t **out_tvb)
{
@@ -4517,6 +4521,7 @@ proto_register_ber(void)
register_ber_syntax_dissector("ASN.1", proto_ber, dissect_ber_syntax);
register_init_routine(ber_defragment_init);
+ register_cleanup_routine(ber_defragment_cleanup);
register_decode_as(&ber_da);
}
diff --git a/epan/dissectors/packet-btobex.c b/epan/dissectors/packet-btobex.c
index f8ea016a41..096a6d318d 100644
--- a/epan/dissectors/packet-btobex.c
+++ b/epan/dissectors/packet-btobex.c
@@ -1138,6 +1138,12 @@ defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+defragment_cleanup(void)
+{
+ reassembly_table_destroy(&btobex_reassembly_table);
+}
+
static int
is_ascii_str(const guint8 *str, int length)
{
@@ -3927,6 +3933,7 @@ proto_register_btobex(void)
expert_register_field_array(expert_btobex, ei, array_length(ei));
register_init_routine(&defragment_init);
+ register_cleanup_routine(&defragment_cleanup);
register_decode_as(&btobex_profile_da);
diff --git a/epan/dissectors/packet-capwap.c b/epan/dissectors/packet-capwap.c
index 6b67dff9e7..35eade0625 100644
--- a/epan/dissectors/packet-capwap.c
+++ b/epan/dissectors/packet-capwap.c
@@ -1261,6 +1261,11 @@ static void capwap_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void capwap_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&capwap_reassembly_table);
+}
+
static void
dissect_capwap_data_message_bindings_ieee80211(tvbuff_t *tvb, proto_tree *data_message_binding_tree, guint offset, packet_info *pinfo)
{
@@ -5759,6 +5764,7 @@ proto_register_capwap_control(void)
expert_register_field_array(expert_capwap, ei, array_length(ei));
register_init_routine(&capwap_reassemble_init);
+ register_cleanup_routine(&capwap_reassemble_cleanup);
capwap_module = prefs_register_protocol(proto_capwap_control, proto_reg_handoff_capwap);
diff --git a/epan/dissectors/packet-cell_broadcast.c b/epan/dissectors/packet-cell_broadcast.c
index 408d0fec13..068c88b070 100644
--- a/epan/dissectors/packet-cell_broadcast.c
+++ b/epan/dissectors/packet-cell_broadcast.c
@@ -167,6 +167,11 @@ static void gsm_cbs_message_reassembly_init(void)
&addresses_reassembly_table_functions);
}
+static void gsm_cbs_message_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&gsm_cbs_reassembly_table);
+}
+
guint dissect_cbs_serial_number(tvbuff_t *tvb, proto_tree *tree, guint offset)
{
guint16 serial_number = tvb_get_ntohs(tvb, offset) ;
@@ -566,6 +571,7 @@ proto_register_cbs(void)
proto_register_field_array(proto_cell_broadcast, hf_cbs, array_length(hf_cbs));
register_init_routine(gsm_cbs_message_reassembly_init);
+ register_cleanup_routine(gsm_cbs_message_reassembly_cleanup);
/* subdissector code */
register_dissector("gsm_cbs", dissect_gsm_cell_broadcast, proto_cell_broadcast);
diff --git a/epan/dissectors/packet-clnp.c b/epan/dissectors/packet-clnp.c
index 910d1cc288..ea55c31c2a 100644
--- a/epan/dissectors/packet-clnp.c
+++ b/epan/dissectors/packet-clnp.c
@@ -606,6 +606,12 @@ clnp_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+clnp_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&clnp_reassembly_table);
+}
+
void
proto_register_clnp(void)
{
@@ -734,6 +740,7 @@ proto_register_clnp(void)
register_dissector("clnp", dissect_clnp, proto_clnp);
clnp_heur_subdissector_list = register_heur_dissector_list("clnp");
register_init_routine(clnp_reassemble_init);
+ register_cleanup_routine(clnp_reassemble_cleanup);
register_osi_address_type();
diff --git a/epan/dissectors/packet-dcp-etsi.c b/epan/dissectors/packet-dcp-etsi.c
index 3cc85a08df..5e04c626c4 100644
--- a/epan/dissectors/packet-dcp-etsi.c
+++ b/epan/dissectors/packet-dcp-etsi.c
@@ -136,6 +136,12 @@ dcp_init_protocol(void)
&addresses_reassembly_table_functions);
}
+static void
+dcp_cleanup_protocol(void)
+{
+ reassembly_table_destroy(&dcp_reassembly_table);
+}
+
/** Dissect a DCP packet. Details follow
* here.
@@ -897,6 +903,7 @@ proto_register_dcp_etsi (void)
"DCP-TPL Protocol Type & Revision", FT_STRING, BASE_NONE);
register_init_routine(dcp_init_protocol);
+ register_cleanup_routine(dcp_cleanup_protocol);
}
diff --git a/epan/dissectors/packet-dtn.c b/epan/dissectors/packet-dtn.c
index 98e1458fd8..a04c6177c5 100644
--- a/epan/dissectors/packet-dtn.c
+++ b/epan/dissectors/packet-dtn.c
@@ -2087,6 +2087,11 @@ bundle_defragment_init(void) {
&addresses_reassembly_table_functions);
}
+static void
+bundle_defragment_cleanup(void) {
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
void proto_reg_handoff_bundle(void);
void proto_register_bundle(void);
@@ -2756,6 +2761,7 @@ proto_register_bundle(void)
expert_register_field_array(expert_tcpcl, ei_tcpcl, array_length(ei_tcpcl));
register_init_routine(bundle_defragment_init);
+ register_cleanup_routine(bundle_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-eap.c b/epan/dissectors/packet-eap.c
index f2fc8d27b6..c959f1de42 100644
--- a/epan/dissectors/packet-eap.c
+++ b/epan/dissectors/packet-eap.c
@@ -425,6 +425,12 @@ eap_tls_defragment_init(void)
}
static void
+eap_tls_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&eap_tls_reassembly_table);
+}
+
+static void
dissect_eap_mschapv2(proto_tree *eap_tree, tvbuff_t *tvb, packet_info *pinfo, int offset,
gint size)
{
@@ -1541,6 +1547,7 @@ proto_register_eap(void)
eap_handle = new_register_dissector("eap", dissect_eap, proto_eap);
register_init_routine(eap_tls_defragment_init);
+ register_cleanup_routine(eap_tls_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-gsm_cbch.c b/epan/dissectors/packet-gsm_cbch.c
index 4ba2129262..e84e23cc78 100644
--- a/epan/dissectors/packet-gsm_cbch.c
+++ b/epan/dissectors/packet-gsm_cbch.c
@@ -124,6 +124,12 @@ cbch_defragment_init(void)
}
static void
+cbch_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&cbch_block_reassembly_table);
+}
+
+static void
dissect_schedule_message(tvbuff_t *tvb, packet_info *pinfo, proto_tree *top_tree)
{
guint len, offset = 0;
@@ -609,6 +615,7 @@ proto_register_gsm_cbch(void)
/* subdissector code */
register_dissector("gsm_cbch", dissect_cbch, proto_cbch);
register_init_routine(cbch_defragment_init);
+ register_cleanup_routine(cbch_defragment_cleanup);
/* subtree array */
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-gsm_sms_ud.c b/epan/dissectors/packet-gsm_sms_ud.c
index 139671f42f..a621d91517 100644
--- a/epan/dissectors/packet-gsm_sms_ud.c
+++ b/epan/dissectors/packet-gsm_sms_ud.c
@@ -149,6 +149,12 @@ gsm_sms_ud_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+gsm_sms_ud_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&sm_reassembly_table);
+}
+
/*
* Value-arrays for field-contents
*/
@@ -652,6 +658,7 @@ proto_register_gsm_sms_ud(void)
/* GSM SMS UD dissector initialization routines */
register_init_routine(gsm_sms_ud_defragment_init);
+ register_cleanup_routine(gsm_sms_ud_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-gssapi.c b/epan/dissectors/packet-gssapi.c
index 397229b539..7f9842eb37 100644
--- a/epan/dissectors/packet-gssapi.c
+++ b/epan/dissectors/packet-gssapi.c
@@ -109,6 +109,12 @@ gssapi_reassembly_init(void)
&addresses_reassembly_table_functions);
}
+static void
+gssapi_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&gssapi_reassembly_table);
+}
+
/*
* Subdissectors
*/
@@ -609,6 +615,7 @@ proto_register_gssapi(void)
gssapi_oids = g_hash_table_new(gssapi_oid_hash, gssapi_oid_equal);
register_init_routine(gssapi_reassembly_init);
+ register_cleanup_routine(gssapi_reassembly_cleanup);
}
static int
diff --git a/epan/dissectors/packet-ieee80211.c b/epan/dissectors/packet-ieee80211.c
index 52ffcb6acc..cc8dc24498 100644
--- a/epan/dissectors/packet-ieee80211.c
+++ b/epan/dissectors/packet-ieee80211.c
@@ -18387,6 +18387,12 @@ wlan_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+wlan_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&wlan_reassembly_table);
+}
+
/* ------------- */
static guint
retransmit_hash(gconstpointer k)
@@ -27020,6 +27026,7 @@ proto_register_ieee80211 (void)
register_dissector("wlan_bsfc", dissect_ieee80211_bsfc, proto_wlan);
register_init_routine(wlan_defragment_init);
+ register_cleanup_routine(wlan_defragment_cleanup);
register_init_routine(wlan_retransmit_init);
register_init_routine(ieee80211_gas_reassembly_init);
diff --git a/epan/dissectors/packet-ip.c b/epan/dissectors/packet-ip.c
index aeabdd7e18..1a804df2ad 100644
--- a/epan/dissectors/packet-ip.c
+++ b/epan/dissectors/packet-ip.c
@@ -565,6 +565,12 @@ ip_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+ip_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&ip_reassembly_table);
+}
+
void
capture_ip(const guchar *pd, int offset, int len, packet_counts *ld) {
if (!BYTES_ARE_IN_FRAME(offset, len, IPH_MIN_LEN)) {
@@ -3100,6 +3106,7 @@ proto_register_ip(void)
register_dissector("ip", dissect_ip, proto_ip);
register_init_routine(ip_defragment_init);
+ register_cleanup_routine(ip_defragment_cleanup);
ip_tap = register_tap("ip");
register_decode_as(&ip_da);
diff --git a/epan/dissectors/packet-ipv6.c b/epan/dissectors/packet-ipv6.c
index b9c04a067d..7a8b902378 100644
--- a/epan/dissectors/packet-ipv6.c
+++ b/epan/dissectors/packet-ipv6.c
@@ -757,6 +757,12 @@ ipv6_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+ipv6_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&ipv6_reassembly_table);
+}
+
enum {
IPv6_RT_HEADER_SOURCE_ROUTING=0,
IPv6_RT_HEADER_NIMROD,
@@ -3093,6 +3099,7 @@ proto_register_ipv6(void)
register_dissector("ipv6", dissect_ipv6, proto_ipv6);
register_init_routine(ipv6_reassemble_init);
+ register_cleanup_routine(ipv6_reassemble_cleanup);
ipv6_tap = register_tap("ipv6");
register_decode_as(&ipv6_da);
diff --git a/epan/dissectors/packet-isup.c b/epan/dissectors/packet-isup.c
index b0ebe7a645..032da5d757 100644
--- a/epan/dissectors/packet-isup.c
+++ b/epan/dissectors/packet-isup.c
@@ -3171,6 +3171,12 @@ isup_apm_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+isup_apm_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&isup_apm_msg_reassembly_table);
+}
+
/* Info for the tap that must be passed between procedures */
static gchar *tap_called_number = NULL;
static gchar *tap_calling_number = NULL;
@@ -12449,6 +12455,7 @@ proto_register_bicc(void)
proto_register_subtree_array(ett, array_length(ett));
register_init_routine(isup_apm_defragment_init);
+ register_cleanup_routine(isup_apm_defragment_cleanup);
}
/* Register isup with the sub-laying MTP L3 dissector */
diff --git a/epan/dissectors/packet-lapdm.c b/epan/dissectors/packet-lapdm.c
index 6496f03e4e..9edb2d4c51 100644
--- a/epan/dissectors/packet-lapdm.c
+++ b/epan/dissectors/packet-lapdm.c
@@ -209,6 +209,12 @@ lapdm_defragment_init (void)
&addresses_reassembly_table_functions);
}
+static void
+lapdm_defragment_cleanup (void)
+{
+ reassembly_table_destroy(&lapdm_reassembly_table);
+}
+
static void
dissect_lapdm(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
@@ -493,6 +499,7 @@ proto_register_lapdm(void)
"Whether the dissector should defragment LAPDm messages spanning multiple packets.",
&reassemble_lapdm);
register_init_routine (lapdm_defragment_init);
+ register_cleanup_routine (lapdm_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-lapsat.c b/epan/dissectors/packet-lapsat.c
index 5939a0f1fa..784816fc2c 100644
--- a/epan/dissectors/packet-lapsat.c
+++ b/epan/dissectors/packet-lapsat.c
@@ -253,6 +253,12 @@ lapsat_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+lapsat_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&lapsat_reassembly_table);
+}
+
/*
* Main dissection functions
@@ -761,6 +767,7 @@ proto_register_lapsat(void)
lapsat_sapi_dissector_table = register_dissector_table("lapsat.sapi", "LAPSat SAPI", FT_UINT8, BASE_DEC);
register_init_routine (lapsat_defragment_init);
+ register_cleanup_routine (lapsat_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-ltp.c b/epan/dissectors/packet-ltp.c
index 6cc142da91..7f911e4ad2 100644
--- a/epan/dissectors/packet-ltp.c
+++ b/epan/dissectors/packet-ltp.c
@@ -772,6 +772,11 @@ ltp_defragment_init(void) {
&addresses_reassembly_table_functions);
}
+static void
+ltp_defragment_cleanup(void) {
+ reassembly_table_destroy(&ltp_reassembly_table);
+}
+
/* Register the protocol with Wireshark */
void
proto_register_ltp(void)
@@ -976,6 +981,7 @@ proto_register_ltp(void)
"The UDP or DCCP port to accept LTP Connections",
10, &ltp_port);
register_init_routine(ltp_defragment_init);
+ register_cleanup_routine(ltp_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-mbim.c b/epan/dissectors/packet-mbim.c
index fb917d2575..713ab28956 100644
--- a/epan/dissectors/packet-mbim.c
+++ b/epan/dissectors/packet-mbim.c
@@ -5101,6 +5101,12 @@ mbim_reassembly_init(void)
&addresses_reassembly_table_functions);
}
+static void
+mbim_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&mbim_reassembly_table);
+}
+
static guint
mbim_uuid_hash(gconstpointer key)
{
@@ -7989,6 +7995,7 @@ proto_register_mbim(void)
expert_register_field_array(expert_mbim, ei, array_length(ei));
register_init_routine(mbim_reassembly_init);
+ register_cleanup_routine(mbim_reassembly_cleanup);
new_register_dissector("mbim.control", dissect_mbim_control, proto_mbim);
new_register_dissector("mbim.descriptor", dissect_mbim_descriptor, proto_mbim);
diff --git a/epan/dissectors/packet-mp2t.c b/epan/dissectors/packet-mp2t.c
index 9f423418aa..13eac48c64 100644
--- a/epan/dissectors/packet-mp2t.c
+++ b/epan/dissectors/packet-mp2t.c
@@ -1242,6 +1242,11 @@ mp2t_init(void) {
&addresses_reassembly_table_functions);
}
+static void
+mp2t_cleanup(void) {
+ reassembly_table_destroy(&mp2t_reassembly_table);
+}
+
void
proto_register_mp2t(void)
{
@@ -1525,6 +1530,7 @@ proto_register_mp2t(void)
heur_subdissector_list = register_heur_dissector_list("mp2t.pid");
/* Register init of processing of fragmented DEPI packets */
register_init_routine(mp2t_init);
+ register_cleanup_routine(mp2t_cleanup);
}
diff --git a/epan/dissectors/packet-mq.c b/epan/dissectors/packet-mq.c
index 74668ebc7d..1d843151ad 100644
--- a/epan/dissectors/packet-mq.c
+++ b/epan/dissectors/packet-mq.c
@@ -4090,6 +4090,11 @@ static void mq_init(void)
&addresses_reassembly_table_functions);
}
+static void mq_cleanup(void)
+{
+ reassembly_table_destroy(&mq_reassembly_table);
+}
+
void proto_register_mq(void)
{
static hf_register_info hf[] =
@@ -4754,6 +4759,7 @@ void proto_register_mq(void)
mq_heur_subdissector_list = register_heur_dissector_list("mq");
register_init_routine(mq_init);
+ register_cleanup_routine(mq_cleanup);
mq_module = prefs_register_protocol(proto_mq, NULL);
prefs_register_bool_preference(mq_module, "desegment",
diff --git a/epan/dissectors/packet-mux27010.c b/epan/dissectors/packet-mux27010.c
index baee4ae7e9..dc4850e5e4 100644
--- a/epan/dissectors/packet-mux27010.c
+++ b/epan/dissectors/packet-mux27010.c
@@ -1002,13 +1002,16 @@ dissect_mux27010(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
mux27010_init(void)
{
- /*
- * Initialize the fragment and reassembly tables.
- */
reassembly_table_init(&msg_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+mux27010_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/*Register the protocol*/
void
proto_register_mux27010 (void)
@@ -1426,6 +1429,7 @@ proto_register_mux27010 (void)
expert_register_field_array(expert_mux27010, ei, array_length(ei));
register_init_routine(mux27010_init);
+ register_cleanup_routine(mux27010_cleanup);
}
/*Initialize dissector*/
diff --git a/epan/dissectors/packet-ndmp.c b/epan/dissectors/packet-ndmp.c
index 612ca9a707..860670a45b 100644
--- a/epan/dissectors/packet-ndmp.c
+++ b/epan/dissectors/packet-ndmp.c
@@ -3419,6 +3419,12 @@ ndmp_init(void)
&addresses_reassembly_table_functions);
}
+static void
+ndmp_cleanup(void)
+{
+ reassembly_table_destroy(&ndmp_reassembly_table);
+}
+
void
proto_register_ndmp(void)
@@ -4250,6 +4256,7 @@ proto_register_ndmp(void)
"Whether the dissector should defragment NDMP messages spanning multiple packets.",
&ndmp_defragment);
register_init_routine(ndmp_init);
+ register_cleanup_routine(ndmp_cleanup);
}
void
diff --git a/epan/dissectors/packet-netbios.c b/epan/dissectors/packet-netbios.c
index b4f58d0001..48c155c214 100644
--- a/epan/dissectors/packet-netbios.c
+++ b/epan/dissectors/packet-netbios.c
@@ -1242,13 +1242,16 @@ dissect_netbios(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
netbios_init(void)
{
- /*
- * Initialize the reassembly table.
- */
reassembly_table_init(&netbios_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+netbios_cleanup(void)
+{
+ reassembly_table_destroy(&netbios_reassembly_table);
+}
+
void
proto_register_netbios(void)
{
@@ -1472,6 +1475,7 @@ proto_register_netbios(void)
&netbios_defragment);
register_init_routine(netbios_init);
+ register_cleanup_routine(netbios_cleanup);
}
void
diff --git a/epan/dissectors/packet-openvpn.c b/epan/dissectors/packet-openvpn.c
index e5d7228f3e..ab1a260a51 100644
--- a/epan/dissectors/packet-openvpn.c
+++ b/epan/dissectors/packet-openvpn.c
@@ -154,6 +154,12 @@ openvpn_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+openvpn_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/* we check the leading 4 byte of a suspected hmac for 0x00 bytes,
if more than 1 byte out of the 4 provided contains 0x00, the
hmac is considered not valid, which suggests that no tls auth is used.
@@ -608,6 +614,7 @@ proto_register_openvpn(void)
openvpn_tcp_handle = new_register_dissector("openvpn.tcp", dissect_openvpn_tcp, proto_openvpn);
register_init_routine(&openvpn_reassemble_init);
+ register_cleanup_routine(&openvpn_reassemble_cleanup);
openvpn_module = prefs_register_protocol(proto_openvpn, proto_reg_handoff_openvpn);
diff --git a/epan/dissectors/packet-pop.c b/epan/dissectors/packet-pop.c
index 0da2760141..c5ec313e53 100644
--- a/epan/dissectors/packet-pop.c
+++ b/epan/dissectors/packet-pop.c
@@ -367,6 +367,11 @@ static void pop_data_reassemble_init (void)
&addresses_ports_reassembly_table_functions);
}
+static void pop_data_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&pop_data_reassembly_table);
+}
+
void
proto_register_pop(void)
{
@@ -445,6 +450,7 @@ proto_register_pop(void)
proto_register_field_array(proto_pop, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_init_routine (&pop_data_reassemble_init);
+ register_cleanup_routine (&pop_data_reassemble_cleanup);
/* Preferences */
pop_module = prefs_register_protocol(proto_pop, NULL);
diff --git a/epan/dissectors/packet-ppi.c b/epan/dissectors/packet-ppi.c
index 910032b1b5..cce7f2931b 100644
--- a/epan/dissectors/packet-ppi.c
+++ b/epan/dissectors/packet-ppi.c
@@ -1159,6 +1159,12 @@ ampdu_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+ampdu_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&ampdu_reassembly_table);
+}
+
void
proto_register_ppi(void)
{
@@ -1501,6 +1507,7 @@ proto_register_ppi(void)
ppi_handle = register_dissector("ppi", dissect_ppi, proto_ppi);
register_init_routine(ampdu_reassemble_init);
+ register_cleanup_routine(ampdu_reassemble_cleanup);
/* Configuration options */
ppi_module = prefs_register_protocol(proto_ppi, NULL);
diff --git a/epan/dissectors/packet-q931.c b/epan/dissectors/packet-q931.c
index 96024e6262..6bbc054ed4 100644
--- a/epan/dissectors/packet-q931.c
+++ b/epan/dissectors/packet-q931.c
@@ -3189,11 +3189,15 @@ dissect_q931_ie_cs7(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree)
static void
q931_init(void) {
- /* Initialize the fragment and reassembly tables */
reassembly_table_init(&q931_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+q931_cleanup(void) {
+ reassembly_table_destroy(&q931_reassembly_table);
+}
+
void
proto_register_q931(void)
{
@@ -3860,6 +3864,7 @@ proto_register_q931(void)
expert_q931 = expert_register_protocol(proto_q931);
expert_register_field_array(expert_q931, ei, array_length(ei));
register_init_routine(q931_init);
+ register_cleanup_routine(q931_cleanup);
q931_handle = register_dissector("q931", dissect_q931, proto_q931);
q931_tpkt_handle = register_dissector("q931.tpkt", dissect_q931_tpkt, proto_q931);
diff --git a/epan/dissectors/packet-reload.c b/epan/dissectors/packet-reload.c
index d20d77a382..6eea418413 100644
--- a/epan/dissectors/packet-reload.c
+++ b/epan/dissectors/packet-reload.c
@@ -1035,6 +1035,12 @@ reload_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+reload_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&reload_reassembly_table);
+}
+
static guint
get_reload_message_length(packet_info *pinfo _U_, tvbuff_t *tvb, int offset)
@@ -5931,6 +5937,7 @@ proto_register_reload(void)
"topology plugin", "topology plugin defined in the overlay", &reload_topology_plugin);
register_init_routine(reload_defragment_init);
+ register_cleanup_routine(reload_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-rtp.c b/epan/dissectors/packet-rtp.c
index eedd95264b..907e08bfd2 100644
--- a/epan/dissectors/packet-rtp.c
+++ b/epan/dissectors/packet-rtp.c
@@ -915,6 +915,12 @@ rtp_fragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+rtp_fragment_cleanup(void)
+{
+ reassembly_table_destroy(&rtp_reassembly_table);
+}
+
/* A single hash table to hold pointers to all the rtp_dyn_payload_t's we create/destroy.
This is necessary because we need to g_hash_table_destroy() them, either individually or
all at once at the end of the wmem file scope. Since rtp_dyn_payload_free() removes them
@@ -3719,6 +3725,7 @@ proto_register_rtp(void)
&rtp_rfc2198_pt);
register_init_routine(rtp_fragment_init);
+ register_cleanup_routine(rtp_fragment_cleanup);
register_init_routine(rtp_dyn_payloads_init);
}
diff --git a/epan/dissectors/packet-scsi.c b/epan/dissectors/packet-scsi.c
index 6bc5047910..64477d1500 100644
--- a/epan/dissectors/packet-scsi.c
+++ b/epan/dissectors/packet-scsi.c
@@ -794,6 +794,12 @@ scsi_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+scsi_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&scsi_reassembly_table);
+}
+
static const fragment_items scsi_frag_items = {
&ett_scsi_fragment,
&ett_scsi_fragments,
@@ -7673,6 +7679,7 @@ proto_register_scsi(void)
"Whether fragmented SCSI DATA IN/OUT transfers should be reassembled",
&scsi_defragment);
register_init_routine(scsi_defragment_init);
+ register_cleanup_routine(scsi_defragment_cleanup);
register_srt_table(proto_scsi, NULL, 1, scsistat_packet, scsistat_init, scsistat_param);
}
diff --git a/epan/dissectors/packet-selfm.c b/epan/dissectors/packet-selfm.c
index 82d774839d..be715c1541 100644
--- a/epan/dissectors/packet-selfm.c
+++ b/epan/dissectors/packet-selfm.c
@@ -2635,11 +2635,16 @@ dissect_selfm_simple(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree, void *
static void
selfm_init(void)
{
-
reassembly_table_init(&selfm_reassembly_table,
&addresses_reassembly_table_functions);
}
+static void
+selfm_cleanup(void)
+{
+ reassembly_table_destroy(&selfm_reassembly_table);
+}
+
/******************************************************************************************************/
/* Register the protocol with Wireshark */
/******************************************************************************************************/
@@ -2983,6 +2988,7 @@ proto_register_selfm(void)
/* Register protocol init routine */
register_init_routine(&selfm_init);
+ register_cleanup_routine(&selfm_cleanup);
/* Register the protocol name and description */
proto_selfm = proto_register_protocol("SEL Protocol", "SEL Protocol", "selfm");
diff --git a/epan/dissectors/packet-ses.c b/epan/dissectors/packet-ses.c
index b3bfc1b7e8..d6e49b4fe4 100644
--- a/epan/dissectors/packet-ses.c
+++ b/epan/dissectors/packet-ses.c
@@ -1088,6 +1088,11 @@ static void ses_reassemble_init (void)
&addresses_reassembly_table_functions);
}
+static void ses_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&ses_reassembly_table);
+}
+
static gboolean
dissect_ses_heur(tvbuff_t *tvb, packet_info *pinfo, proto_tree *parent_tree, void *data _U_)
{
@@ -1882,6 +1887,7 @@ proto_register_ses(void)
expert_register_field_array(expert_ses, ei, array_length(ei));
register_init_routine (&ses_reassemble_init);
+ register_cleanup_routine (&ses_reassemble_cleanup);
ses_module = prefs_register_protocol(proto_ses, NULL);
diff --git a/epan/dissectors/packet-smb-direct.c b/epan/dissectors/packet-smb-direct.c
index 4d11284777..5a8a606f0c 100644
--- a/epan/dissectors/packet-smb-direct.c
+++ b/epan/dissectors/packet-smb-direct.c
@@ -114,6 +114,12 @@ smb_direct_reassemble_init(void)
}
static void
+smb_direct_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&smb_direct_reassembly_table);
+}
+
+static void
dissect_smb_direct_payload(tvbuff_t *tvb, packet_info *pinfo,
proto_tree *tree, guint32 remaining_length)
{
@@ -687,6 +693,7 @@ void proto_register_smb_direct(void)
"Whether the SMB Direct dissector should reassemble fragmented payloads",
&smb_direct_reassemble);
register_init_routine(smb_direct_reassemble_init);
+ register_cleanup_routine(smb_direct_reassemble_cleanup);
}
void
diff --git a/epan/dissectors/packet-smb-pipe.c b/epan/dissectors/packet-smb-pipe.c
index bfb715949d..6bd7696fcf 100644
--- a/epan/dissectors/packet-smb-pipe.c
+++ b/epan/dissectors/packet-smb-pipe.c
@@ -3252,6 +3252,12 @@ smb_dcerpc_reassembly_init(void)
&addresses_reassembly_table_functions);
}
+static void
+smb_dcerpc_reassembly_cleanup(void)
+{
+ reassembly_table_destroy(&dcerpc_reassembly_table);
+}
+
gboolean
dissect_pipe_dcerpc(tvbuff_t *d_tvb, packet_info *pinfo, proto_tree *parent_tree,
proto_tree *tree, guint32 fid)
@@ -3440,6 +3446,7 @@ proto_register_pipe_dcerpc(void)
{
smb_transact_heur_subdissector_list = register_heur_dissector_list("smb_transact");
register_init_routine(smb_dcerpc_reassembly_init);
+ register_cleanup_routine(smb_dcerpc_reassembly_cleanup);
}
#define CALL_NAMED_PIPE 0x54
diff --git a/epan/dissectors/packet-smtp.c b/epan/dissectors/packet-smtp.c
index 3ebbd7f8a6..b9f8643540 100644
--- a/epan/dissectors/packet-smtp.c
+++ b/epan/dissectors/packet-smtp.c
@@ -1146,6 +1146,12 @@ smtp_data_reassemble_init (void)
&addresses_ports_reassembly_table_functions);
}
+static void
+smtp_data_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&smtp_data_reassembly_table);
+}
+
/* Register all the bits needed by the filtering engine */
@@ -1258,6 +1264,7 @@ proto_register_smtp(void)
proto_register_field_array(proto_smtp, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
register_init_routine (&smtp_data_reassemble_init);
+ register_cleanup_routine (&smtp_data_reassemble_cleanup);
/* Allow dissector to find be found by name. */
register_dissector("smtp", dissect_smtp, proto_smtp);
diff --git a/epan/dissectors/packet-sna.c b/epan/dissectors/packet-sna.c
index df6c551746..82bd620550 100644
--- a/epan/dissectors/packet-sna.c
+++ b/epan/dissectors/packet-sna.c
@@ -2511,6 +2511,12 @@ sna_init(void)
&addresses_reassembly_table_functions);
}
+static void
+sna_cleanup(void)
+{
+ reassembly_table_destroy(&sna_reassembly_table);
+}
+
void
proto_register_sna(void)
@@ -3492,6 +3498,7 @@ proto_register_sna(void)
&sna_defragment);
register_init_routine(sna_init);
+ register_cleanup_routine(sna_cleanup);
}
void
diff --git a/epan/dissectors/packet-sndcp.c b/epan/dissectors/packet-sndcp.c
index 20fc3bf6a9..a3fb567098 100644
--- a/epan/dissectors/packet-sndcp.c
+++ b/epan/dissectors/packet-sndcp.c
@@ -109,6 +109,12 @@ sndcp_defragment_init(void)
reassembly_table_init(&npdu_reassembly_table, &addresses_reassembly_table_functions);
}
+static void
+sndcp_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&npdu_reassembly_table);
+}
+
/* value strings
*/
static const value_string nsapi_t[] = {
@@ -555,6 +561,7 @@ proto_register_sndcp(void)
proto_register_subtree_array(ett, array_length(ett));
register_dissector("sndcp", dissect_sndcp, proto_sndcp);
register_init_routine(sndcp_defragment_init);
+ register_cleanup_routine(sndcp_defragment_cleanup);
}
/* If this dissector uses sub-dissector registration add a registration routine.
diff --git a/epan/dissectors/packet-stt.c b/epan/dissectors/packet-stt.c
index 93d76b906d..c6a9828874 100644
--- a/epan/dissectors/packet-stt.c
+++ b/epan/dissectors/packet-stt.c
@@ -179,6 +179,12 @@ stt_segment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+stt_segment_cleanup(void)
+{
+ reassembly_table_destroy(&stt_reassembly_table);
+}
+
static tvbuff_t *
handle_segment(tvbuff_t *tvb, packet_info *pinfo, proto_tree *tree,
guint32 pkt_id, guint16 pkt_len, guint16 seg_off)
@@ -975,6 +981,7 @@ proto_register_stt(void)
&pref_check_checksum);
register_init_routine(stt_segment_init);
+ register_cleanup_routine(stt_segment_cleanup);
}
void
diff --git a/epan/dissectors/packet-tds.c b/epan/dissectors/packet-tds.c
index 47090753b7..65bdc30e07 100644
--- a/epan/dissectors/packet-tds.c
+++ b/epan/dissectors/packet-tds.c
@@ -2676,6 +2676,12 @@ tds_init(void)
&addresses_ports_reassembly_table_functions);
}
+static void
+tds_cleanup(void)
+{
+ reassembly_table_destroy(&tds_reassembly_table);
+}
+
/* Register the protocol with Wireshark */
/* this format is required because a script is used to build the C function
@@ -3250,6 +3256,7 @@ proto_register_tds(void)
&tds_tcp_ports, 0xFFFF);
register_init_routine(tds_init);
+ register_cleanup_routine(tds_cleanup);
}
/* If this dissector uses sub-dissector registration add a registration routine.
diff --git a/epan/dissectors/packet-teamspeak2.c b/epan/dissectors/packet-teamspeak2.c
index 44e7941f65..4116ce906e 100644
--- a/epan/dissectors/packet-teamspeak2.c
+++ b/epan/dissectors/packet-teamspeak2.c
@@ -845,6 +845,11 @@ static void ts2_init(void)
&addresses_reassembly_table_functions);
}
+static void ts2_cleanup(void)
+{
+ reassembly_table_destroy(&msg_reassembly_table);
+}
+
/*
* proto_register_ts2()
* */
@@ -1216,6 +1221,7 @@ void proto_register_ts2(void)
proto_register_subtree_array(ett, array_length(ett));
register_init_routine(ts2_init);
+ register_cleanup_routine(ts2_cleanup);
}
/*
diff --git a/epan/dissectors/packet-tipc.c b/epan/dissectors/packet-tipc.c
index 19306adead..a4e14ea46e 100644
--- a/epan/dissectors/packet-tipc.c
+++ b/epan/dissectors/packet-tipc.c
@@ -577,6 +577,12 @@ tipc_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+tipc_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&tipc_msg_reassembly_table);
+}
+
static gchar*
tipc_addr_value_to_buf(guint tipc_address, gchar *buf, int buf_len)
{
@@ -2958,6 +2964,7 @@ proto_register_tipc(void)
new_register_dissector("tipc", dissect_tipc, proto_tipc);
register_init_routine(tipc_defragment_init);
+ register_cleanup_routine(tipc_defragment_cleanup);
/* Register configuration options */
tipc_module = prefs_register_protocol(proto_tipc, proto_reg_handoff_tipc);
diff --git a/epan/dissectors/packet-usb-audio.c b/epan/dissectors/packet-usb-audio.c
index 37d669ae73..1827ccfc1b 100644
--- a/epan/dissectors/packet-usb-audio.c
+++ b/epan/dissectors/packet-usb-audio.c
@@ -529,6 +529,12 @@ midi_data_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+midi_data_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&midi_data_reassembly_table);
+}
+
void
proto_register_usb_audio(void)
{
@@ -630,6 +636,7 @@ proto_register_usb_audio(void)
expert_usb_audio = expert_register_protocol(proto_usb_audio);
expert_register_field_array(expert_usb_audio, ei, array_length(ei));
register_init_routine(&midi_data_reassemble_init);
+ register_cleanup_routine(&midi_data_reassemble_cleanup);
new_register_dissector("usbaudio", dissect_usb_audio_bulk, proto_usb_audio);
}
diff --git a/epan/dissectors/packet-wai.c b/epan/dissectors/packet-wai.c
index d6d44a0b1c..8d68d55077 100644
--- a/epan/dissectors/packet-wai.c
+++ b/epan/dissectors/packet-wai.c
@@ -973,6 +973,11 @@ static void wai_reassemble_init (void)
&addresses_reassembly_table_functions);
}
+static void wai_reassemble_cleanup (void)
+{
+ reassembly_table_destroy(&wai_reassembly_table);
+}
+
void
proto_register_wai(void)
{
@@ -1364,6 +1369,7 @@ proto_register_wai(void)
proto_wai = proto_register_protocol("WAI Protocol", "WAI", "wai");
register_init_routine(&wai_reassemble_init);
+ register_cleanup_routine(&wai_reassemble_cleanup);
proto_register_field_array(proto_wai, hf, array_length(hf));
proto_register_subtree_array(ett, array_length(ett));
diff --git a/epan/dissectors/packet-wtp.c b/epan/dissectors/packet-wtp.c
index f356b9bbee..caab6e3315 100644
--- a/epan/dissectors/packet-wtp.c
+++ b/epan/dissectors/packet-wtp.c
@@ -234,6 +234,12 @@ wtp_defragment_init(void)
&addresses_reassembly_table_functions);
}
+static void
+wtp_defragment_cleanup(void)
+{
+ reassembly_table_destroy(&wtp_reassembly_table);
+}
+
/*
* Extract some bitfields
*/
@@ -1055,6 +1061,7 @@ proto_register_wtp(void)
register_dissector("wtp-wtls", dissect_wtp_fromwtls, proto_wtp);
register_dissector("wtp-udp", dissect_wtp_fromudp, proto_wtp);
register_init_routine(wtp_defragment_init);
+ register_cleanup_routine(wtp_defragment_cleanup);
}
void
diff --git a/epan/dissectors/packet-x25.c b/epan/dissectors/packet-x25.c
index d9535981a3..fae4e85f28 100644
--- a/epan/dissectors/packet-x25.c
+++ b/epan/dissectors/packet-x25.c
@@ -2035,6 +2035,12 @@ x25_reassemble_init(void)
&addresses_reassembly_table_functions);
}
+static void
+x25_reassemble_cleanup(void)
+{
+ reassembly_table_destroy(&x25_reassembly_table);
+}
+
void
proto_register_x25(void)
{
@@ -2388,6 +2394,7 @@ proto_register_x25(void)
"Reassemble fragmented X.25 packets",
&reassemble_x25);
register_init_routine(&x25_reassemble_init);
+ register_cleanup_routine(&x25_reassemble_cleanup);
}
void
diff --git a/epan/dissectors/packet-zbee-aps.c b/epan/dissectors/packet-zbee-aps.c
index cabd99771c..53f0fa9dae 100644
--- a/epan/dissectors/packet-zbee-aps.c
+++ b/epan/dissectors/packet-zbee-aps.c
@@ -61,6 +61,7 @@ static guint dissect_zbee_t2 (tvbuff_t *tvb, proto_tree *tree,
static guint zbee_apf_transaction_len (tvbuff_t *tvb, guint offset, guint8 type);
static void proto_init_zbee_aps(void);
+static void proto_cleanup_zbee_aps(void);
void proto_reg_handoff_zbee_aps(void);
void proto_register_zbee_aps(void);
@@ -2127,6 +2128,7 @@ void proto_register_zbee_aps(void)
/* Register the init routine. */
register_init_routine(proto_init_zbee_aps);
+ register_cleanup_routine(proto_cleanup_zbee_aps);
/* Register the ZigBee Application Framework protocol with Wireshark. */
proto_zbee_apf = proto_register_protocol("ZigBee Application Framework", "ZigBee APF", "zbee_apf");
@@ -2172,6 +2174,11 @@ static void proto_init_zbee_aps(void)
&addresses_reassembly_table_functions);
} /* proto_init_zbee_aps */
+static void proto_cleanup_zbee_aps(void)
+{
+ reassembly_table_destroy(&zbee_aps_reassembly_table);
+}
+
/*
* Editor modelines - http://www.wireshark.org/tools/modelines.html
*