diff options
author | Peter Wu <peter@lekensteyn.nl> | 2015-06-28 13:06:31 +0200 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2015-07-03 23:34:28 +0000 |
commit | 80f7ee063d371f0de989d51d40c6b4fabfbfb430 (patch) | |
tree | 9d69b4eb9445f73f88535f36be2374f528012b2d | |
parent | 750babc53acae3399f31d2160d6d719c51c8f222 (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>
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(<p_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, <p_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(&du_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 * |