Add 'fragment_table_destroy()'
svn path=/trunk/; revision=44459
This commit is contained in:
parent
16b161df6a
commit
38b39b6b77
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in New Issue