Call reassembly_table_destroy for some dissectors
authorPeter Wu <peter@lekensteyn.nl>
Sun, 28 Jun 2015 11:06:31 +0000 (13:06 +0200)
committerMichael Mann <mmann78@netscape.net>
Fri, 3 Jul 2015 23:34:28 +0000 (23:34 +0000)
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:
epan/dissectors/packet-bacapp.c
epan/dissectors/packet-batadv.c
epan/dissectors/packet-ber.c
epan/dissectors/packet-btobex.c
epan/dissectors/packet-capwap.c
epan/dissectors/packet-cell_broadcast.c
epan/dissectors/packet-clnp.c
epan/dissectors/packet-dcp-etsi.c
epan/dissectors/packet-dtn.c
epan/dissectors/packet-eap.c
epan/dissectors/packet-gsm_cbch.c
epan/dissectors/packet-gsm_sms_ud.c
epan/dissectors/packet-gssapi.c
epan/dissectors/packet-ieee80211.c
epan/dissectors/packet-ip.c
epan/dissectors/packet-ipv6.c
epan/dissectors/packet-isup.c
epan/dissectors/packet-lapdm.c
epan/dissectors/packet-lapsat.c
epan/dissectors/packet-ltp.c
epan/dissectors/packet-mbim.c
epan/dissectors/packet-mp2t.c
epan/dissectors/packet-mq.c
epan/dissectors/packet-mux27010.c
epan/dissectors/packet-ndmp.c
epan/dissectors/packet-netbios.c
epan/dissectors/packet-openvpn.c
epan/dissectors/packet-pop.c
epan/dissectors/packet-ppi.c
epan/dissectors/packet-q931.c
epan/dissectors/packet-reload.c
epan/dissectors/packet-rtp.c
epan/dissectors/packet-scsi.c
epan/dissectors/packet-selfm.c
epan/dissectors/packet-ses.c
epan/dissectors/packet-smb-direct.c
epan/dissectors/packet-smb-pipe.c
epan/dissectors/packet-smtp.c
epan/dissectors/packet-sna.c
epan/dissectors/packet-sndcp.c
epan/dissectors/packet-stt.c
epan/dissectors/packet-tds.c
epan/dissectors/packet-teamspeak2.c
epan/dissectors/packet-tipc.c
epan/dissectors/packet-usb-audio.c
epan/dissectors/packet-wai.c
epan/dissectors/packet-wtp.c
epan/dissectors/packet-x25.c
epan/dissectors/packet-zbee-aps.c

index b4bf08a62350f71e60dc90f90727d074408e287a..c9fe6a286c4d3af7c9ef592900b38e10359f0565 100644 (file)
@@ -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",
index d5bd8ab77df8e2d3cecb3733ac462b76860eaaba..e851a0d37921180105207e2d485ad30547261a30 100644 (file)
@@ -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)
index 4630da439c5fefa86542032bc3864225c1ce4565..eeff690f735c3551b5c97878a5ff833426f73d37 100644 (file)
@@ -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);
 }
index f8ea016a415b8b9f37f3057aafc04d361fe31d75..096a6d318dc526a78a568b0a02ea17beca1efb83 100644 (file)
@@ -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);
 
index 6b67dff9e71b1cea9dfe6c95d3c928dd674133ac..35eade06252da1f8d1b7f35dd577f35591464e31 100644 (file)
@@ -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);
 
index 408d0fec13fa2a65d9ca9c1a4d7fae7e020ce807..068c88b070eb5438f37a58e43473d9da8d761b33 100644 (file)
@@ -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);
index 910d1cc2887debd941a89d2b0a72c82767e43feb..ea55c31c2ad086db0746e16b0d76005ad8416d1c 100644 (file)
@@ -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();
 
index 3cc85a08df5fadc9f0574abbf0c4cd58b083b1a1..5e04c626c4ade0cc4c16c8a802d5cdaed51fa588 100644 (file)
@@ -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);
 
 }
 
index 98e1458fd81e529813377fa4356679e2eaf89c60..a04c6177c5b5b7e2238b57657da11d1822fa89ff 100644 (file)
@@ -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
index f2fc8d27b64c97417db1bcf33484ab4a618f2837..c959f1de423a139c35e28d3af73f3f0499e88bf1 100644 (file)
@@ -424,6 +424,12 @@ eap_tls_defragment_init(void)
                         &addresses_reassembly_table_functions);
 }
 
+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
index 4ba212926280fca566f103ec349599a0b71d9608..e84e23cc7813383525c10ac71d445e20ad5bab64 100644 (file)
@@ -123,6 +123,12 @@ cbch_defragment_init(void)
                           &addresses_reassembly_table_functions);
 }
 
+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)
 {
@@ -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));
index 139671f42f3e8483b51e9a7ad0abce6009340469..a621d91517181e8089b8ae5c3fb0a0ef9a7f56a1 100644 (file)
@@ -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
index 397229b539ce660c2a8bac6cf6acc6f7d05fd585..7f9842eb37584e6c8d8b9394e98bba19620173f2 100644 (file)
@@ -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
index 52ffcb6acc8659887ff97e0d6d3e7782bd87236e..cc8dc244985705a649c842db799d46f5d3d5edf4 100644 (file)
@@ -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);
 
index aeabdd7e18098c6f10ca1d7c01353ed98739ce77..1a804df2ad4867e8b94e52da4af8ba3f2b08118d 100644 (file)
@@ -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);
index b9c04a067dafccba0ab3710fb3144f01d47a6c98..7a8b902378abdcd6e924bd398ebd4a236f5b6064 100644 (file)
@@ -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);
index b0ebe7a6452db2ae7c506ccba73aa0d89e1f6176..032da5d7570213dcea334f4c4154fa86b846b3c2 100644 (file)
@@ -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 */
index 6496f03e4eb0cac13f0778fffce42517495d7706..9edb2d4c51af92d5e6e3c8915287a680b210ace7 100644 (file)
@@ -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
index 5939a0f1fa2f5bd780a8cfaaa9b3485c7acd86ad..784816fc2cd648ed2a816bf225745281a3e320b8 100644 (file)
@@ -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
index 6cc142da91f6221cf0e443ef49a2bfd338994150..7f911e4ad2298323f5335fa278804ff3ed08eb55 100644 (file)
@@ -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
index fb917d2575b6fe9b31fe42e88bc5d7b2c65c5cc1..713ab2895649967076a36df169fd12c1b763d37c 100644 (file)
@@ -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);
index 9f423418aab842d961754d14a480d6672ce8df68..13eac48c64ccf6ac5869c9d9c164cb94d47ae0a7 100644 (file)
@@ -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);
 }
 
 
index 74668ebc7d2d2ec7e37f4f095701dad43cf05dd5..1d843151ad0f8af573d011ab669c7a40114e7cb7 100644 (file)
@@ -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",
index baee4ae7e9dd2e14d2732e232cd066c76f840eb2..dc4850e5e44058e371c285ffefcad496fee1497a 100644 (file)
@@ -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*/
index 612ca9a7073a3b96c7b40749e77e94b88860cbeb..860670a45b7f2cc9f50882aa76269da8ad4a7241 100644 (file)
@@ -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
index b4f58d00016eac02bf50639bb4ac7005953fbecf..48c155c21433c265836aed988f040c258de99e06 100644 (file)
@@ -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
index e5d7228f3e0f0426ec0d32d0edac62fbde2f5ce5..ab1a260a51ebcafad327c11452c24432cd89000f 100644 (file)
@@ -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);
 
index 0da2760141de41f514db1578ee61efad214d2dde..c5ec313e53866d94f220096499dee40179c19cc1 100644 (file)
@@ -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);
index 910032b1b5558ce87a3c6c19bec6a455354ee7c4..cce7f2931bc7fc099c030aee11f847fb1b1c7b55 100644 (file)
@@ -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);
index 96024e62620ca078d93a1612b9544dbf5e8e7acf..6bbc054ed450ede6ab9b7ce36c04deed1849f3d8 100644 (file)
@@ -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);
index d20d77a382bf2e2d8b028bba6cf6ae88bc00e26c..6eea418413ccfec99fa18308f76f48b3790e141a 100644 (file)
@@ -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
index eedd95264b28670f641f6507d76a40e0b2bf38f8..907e08bfd29774fdb424a9bc99c4d8f5a3d6682d 100644 (file)
@@ -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);
 }
 
index 6bc5047910a158dd89e77dd373e08f4a006d1bfa..64477d15007d1a178d58306b0601e5cafa1c1ac3 100644 (file)
@@ -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);
 }
index 82d774839db558cf7abb9d0bc26e3122cfdaa58b..be715c154134dc30bd70379b5e672033b28aa45d 100644 (file)
@@ -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");
index b3bfc1b7e83d131e04f7a98444eb4c7e4ecbe455..d6e49b4fe472e1b6ecce66dfa2e34a19c01df382 100644 (file)
@@ -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);
 
index 4d11284777c29c52677b44c520acea03d4990b35..5a8a606f0c7bd5b00ab7ba3f04494ec93eab464e 100644 (file)
@@ -113,6 +113,12 @@ smb_direct_reassemble_init(void)
            &addresses_ports_reassembly_table_functions);
 }
 
+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
index bfb715949dc19f5c2c50721bc35812aba900269e..6bd7696fcf636b8342486253d35cfa20db18f6d2 100644 (file)
@@ -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
index 3ebbd7f8a66a37fe7e2982984e431b7884868786..b9f864354085ce1aaeb5bc5e01106fa539a7b039 100644 (file)
@@ -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);
index df6c55174621157f78d84dadb6fa7640844e804b..82bd620550988929069c9bf39bceb8fcd16bdf52 100644 (file)
@@ -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
index 20fc3bf6a97a7e345a630b565cffba693eadc893..a3fb567098e9ecd4fa11a7a1d3876e8b254ac990 100644 (file)
@@ -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.
index 93d76b906d5f499bbafc1e42ce428eb39e944df5..c6a9828874676e0f01a0cef3c2e6048ea894c46b 100644 (file)
@@ -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
index 47090753b70dd5af5b58197e710550899d90db82..65bdc30e073fddc6e0e4c1c49f2f9a3a15024515 100644 (file)
@@ -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.
index 44e7941f655ba41966dd6259b48ccee0e791a85d..4116ce906ec697f51c3ac659bbd812f1d4c71848 100644 (file)
@@ -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);
 }
 
 /*
index 19306adead76c61ae6d4b506c642d17374a3b679..a4e14ea46e9bcd89d95d63f072cfd84bb41d791f 100644 (file)
@@ -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);
index 37d669ae736ed28c36b8625cce3b2206785abb24..1827ccfc1b750215bb0e3d6da3f37b308e078570 100644 (file)
@@ -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);
 }
index d6d44a0b1c5c5ddfaa4753b24b6e96fe9da7e88f..8d68d55077c00b758e609c580f3beac75b4b5fc0 100644 (file)
@@ -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));
 
index f356b9bbee1af4ecd5fb3758d54b15e29af85675..caab6e33150019b8130e924c7e93a7c7c5381e2a 100644 (file)
@@ -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
index d9535981a38b8aeb3c0ee656fa32426f0e6135cb..fae4e85f28d5f51adb12bef9e022a10835e506c4 100644 (file)
@@ -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
index cabd99771c0e2ae79d4e20c8c818d330c44e2f6e..53f0fa9daefb4c9dddedc29d5068de34d7bc00a9 100644 (file)
@@ -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
  *