diff options
author | Dario Lombardo <lomato@gmail.com> | 2017-01-20 17:02:52 +0100 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2017-01-21 00:28:28 +0000 |
commit | 317649f94984cf3d17f2a57badebb78d7703cdb5 (patch) | |
tree | 6a2c029b05e75c0934ccea4b1fc2d6bae0b3b2b6 /epan | |
parent | d020990f0356f4793e00209ae99e9f2dd7b843c9 (diff) |
reassemble: add cleanup routine.
Change-Id: I948d342a29aacc2212076359e5b073113c50c5de
Reviewed-on: https://code.wireshark.org/review/19697
Reviewed-by: Michael Mann <mmann78@netscape.net>
Diffstat (limited to 'epan')
-rw-r--r-- | epan/epan.c | 2 | ||||
-rw-r--r-- | epan/reassemble.c | 17 | ||||
-rw-r--r-- | epan/reassemble.h | 5 |
3 files changed, 24 insertions, 0 deletions
diff --git a/epan/epan.c b/epan/epan.c index 10dba580f7..d667bba165 100644 --- a/epan/epan.c +++ b/epan/epan.c @@ -62,6 +62,7 @@ #include "decode_as.h" #include "dissector_filters.h" #include "conversation_table.h" +#include "reassemble.h" #ifdef HAVE_LUA #include <lua.h> @@ -213,6 +214,7 @@ epan_cleanup(void) decode_clear_all(); conversation_table_cleanup(); conversation_filters_cleanup(); + reassembly_table_cleanup(); packet_cleanup(); expert_cleanup(); capture_dissector_cleanup(); diff --git a/epan/reassemble.c b/epan/reassemble.c index d28f7f1293..b1363d8314 100644 --- a/epan/reassemble.c +++ b/epan/reassemble.c @@ -41,6 +41,8 @@ typedef struct _fragment_addresses_key { guint32 id; } fragment_addresses_key; +GList* reassembly_table_list = NULL; + static guint fragment_addresses_hash(gconstpointer k) { @@ -463,6 +465,8 @@ reassembly_table_init(reassembly_table *table, table->reassembled_table = g_hash_table_new_full(reassembled_hash, reassembled_equal, reassembled_key_free, NULL); } + + reassembly_table_list = g_list_append(reassembly_table_list, table); } /* @@ -2786,6 +2790,19 @@ show_fragment_seq_tree(fragment_head *fd_head, const fragment_items *fit, return show_fragment_errs_in_col(fd_head, fit, pinfo); } +void +reassembly_table_free(gpointer p, gpointer user_data _U_) +{ + reassembly_table_destroy((reassembly_table*)p); +} + +void +reassembly_table_cleanup(void) +{ + g_list_foreach(reassembly_table_list, reassembly_table_free, NULL); + g_list_free(reassembly_table_list); +} + /* * Editor modelines - http://www.wireshark.org/tools/modelines.html * diff --git a/epan/reassemble.h b/epan/reassemble.h index a99cff7bd9..4b5bcffe64 100644 --- a/epan/reassemble.h +++ b/epan/reassemble.h @@ -455,4 +455,9 @@ WS_DLL_PUBLIC gboolean show_fragment_seq_tree(fragment_head *ipfd_head, const fragment_items *fit, proto_tree *tree, packet_info *pinfo, tvbuff_t *tvb, proto_item **fi); +/* Cleanup internal structures + */ +extern void +reassembly_table_cleanup(void); + #endif |