Add 'fragment_table_destroy()'

svn path=/trunk/; revision=44459
This commit is contained in:
Bill Meier 2012-08-12 20:53:17 +00:00
parent 16b161df6a
commit 38b39b6b77
2 changed files with 32 additions and 3 deletions

View File

@ -32,8 +32,6 @@
#include <epan/reassemble.h>
#include <epan/emem.h>
#include <epan/dissectors/packet-dcerpc.h>
typedef struct _fragment_key {
@ -324,6 +322,32 @@ fragment_table_init(GHashTable **fragment_table)
}
}
/*
* Destroy a fragment table.
*/
void
frgment_table_destroy(GHashTable **fragment_table)
{
if (*fragment_table != NULL) {
/*
* The fragment hash table exists.
*
* Remove all entries and free fragment data for each entry.
*
* The keys are freed by calling fragment_free_key()
* and the values are freed in free_all_fragments().
*
* free_all_fragments()
* will free the address data associated with the key
*/
g_hash_table_foreach_remove(*fragment_table,
free_all_fragments, NULL);
g_hash_table_destroy(*fragment_table);
*fragment_table = NULL;
}
}
void
dcerpc_fragment_table_init(GHashTable **fragment_table)
{

View File

@ -103,9 +103,14 @@ typedef struct _fragment_data {
typedef void *(*fragment_key_copier)(const void *key);
/*
* Initialize a fragment table.
* Initialize/destroy a fragment table.
*
* init: If table doesn't exist: create table;
* else: just remove any entries;
* destroy: remove entries and destroy table;
*/
extern void fragment_table_init(GHashTable **fragment_table);
extern void fragment_table_destroy(GHashTable **fragment_table);
extern void dcerpc_fragment_table_init(GHashTable **fragment_table);
/*