diff options
-rw-r--r-- | ui/gtk/flow_graph.c | 9 | ||||
-rw-r--r-- | ui/gtk/lbm_uimflow_dlg.c | 24 | ||||
-rw-r--r-- | ui/tap-sequence-analysis.c | 33 | ||||
-rw-r--r-- | ui/tap-sequence-analysis.h | 10 | ||||
-rw-r--r-- | ui/voip_calls.c | 30 |
5 files changed, 48 insertions, 58 deletions
diff --git a/ui/gtk/flow_graph.c b/ui/gtk/flow_graph.c index 66a6ac5601..c974ef5752 100644 --- a/ui/gtk/flow_graph.c +++ b/ui/gtk/flow_graph.c @@ -64,10 +64,9 @@ static GtkWidget *net_src_dst_rb; /****************************************************************************/ static void flow_graph_data_init(void) { - graph_analysis = (seq_analysis_info_t *)g_malloc0(sizeof(seq_analysis_info_t)); + graph_analysis = sequence_analysis_info_new(); graph_analysis->type = SEQ_ANALYSIS_ANY; graph_analysis->all_packets = TRUE; - graph_analysis->items = g_queue_new(); } @@ -77,13 +76,11 @@ flow_graph_data_init(void) { static void flow_graph_on_destroy(GObject *object _U_, gpointer user_data _U_) { - /* Clean up memory used by tap */ - sequence_analysis_list_free(graph_analysis); - g_assert(graph_analysis != NULL); g_assert(graph_analysis_data != NULL); - g_free(graph_analysis); + /* Clean up memory used by tap */ + sequence_analysis_info_free(graph_analysis); graph_analysis = NULL; g_free(graph_analysis_data); diff --git a/ui/gtk/lbm_uimflow_dlg.c b/ui/gtk/lbm_uimflow_dlg.c index d766d0f7e4..a2f17ec722 100644 --- a/ui/gtk/lbm_uimflow_dlg.c +++ b/ui/gtk/lbm_uimflow_dlg.c @@ -60,14 +60,10 @@ static lbm_uimflow_dialog_t dialog_data = { FALSE, -1, NULL, NULL, NULL, select_ static void lbmc_uim_flow_graph_data_init(void) { - dialog_data.graph_analysis = (seq_analysis_info_t *)g_malloc0(sizeof(seq_analysis_info_t)); + dialog_data.graph_analysis = sequence_analysis_info_new(); dialog_data.graph_analysis->type = SEQ_ANALYSIS_ANY; dialog_data.graph_analysis->all_packets = TRUE; dialog_data.graph_analysis->any_addr = TRUE; - dialog_data.graph_analysis->nconv = 0; - dialog_data.graph_analysis->items = g_queue_new(); - dialog_data.graph_analysis->ht = NULL; - dialog_data.graph_analysis->num_nodes = 0; } static void lbmc_uim_flow_toggle_select_all_cb(GtkWidget * widget _U_, gpointer user_data _U_) @@ -90,24 +86,10 @@ static void lbmc_uim_flow_toggle_select_displayed_cb(GtkWidget * widget _U_, gpo static void lbmc_uim_flow_tap_reset(void * tap_data _U_) { - seq_analysis_item_t * graph_item; - GList * list; - if (dialog_data.graph_analysis != NULL) { /* free the graph data items */ - list = g_queue_peek_nth_link(dialog_data.graph_analysis->items, 0); - while (list) - { - graph_item = (seq_analysis_item_t *)list->data; - g_free(graph_item->frame_label); - g_free(graph_item->time_str); - g_free(graph_item->comment); - g_free(list->data); - list = g_list_next(list); - } - g_queue_clear(dialog_data.graph_analysis->items); - dialog_data.graph_analysis->nconv = 0; + sequence_analysis_list_free(dialog_data.graph_analysis); } } @@ -310,7 +292,7 @@ static void lbmc_uim_flow_graph_on_destroy_cb(GtkWidget * widget _U_, gpointer u g_assert(dialog_data.graph_analysis != NULL); g_assert(dialog_data.graph_analysis_data != NULL); - g_free(dialog_data.graph_analysis); + sequence_analysis_info_free(dialog_data.graph_analysis); dialog_data.graph_analysis = NULL; g_free(dialog_data.graph_analysis_data); diff --git a/ui/tap-sequence-analysis.c b/ui/tap-sequence-analysis.c index b207492f8a..abaf6f19b1 100644 --- a/ui/tap-sequence-analysis.c +++ b/ui/tap-sequence-analysis.c @@ -48,6 +48,27 @@ #define CONV_TIME_HEADER_LENGTH 16 #define TIME_HEADER_LENGTH 10 +seq_analysis_info_t * +sequence_analysis_info_new(void) +{ + seq_analysis_info_t *sainfo = g_new0(seq_analysis_info_t, 1); + sainfo->items = g_queue_new(); + sainfo->ht= g_hash_table_new(g_int_hash, g_int_equal); + return sainfo; +} + +void sequence_analysis_info_free(seq_analysis_info_t *sainfo) +{ + if (!sainfo) return; + + sequence_analysis_list_free(sainfo); + + g_queue_free(sainfo->items); + g_hash_table_destroy(sainfo->ht); + + g_free(sainfo); +} + /****************************************************************************/ /* whenever a frame packet is seen by the tap listener */ /* Add a new frame into the graph */ @@ -246,13 +267,15 @@ sequence_analysis_list_get(capture_file *cf, seq_analysis_info_t *sainfo) g_queue_foreach(sainfo->items, sequence_analysis_item_set_timestamp, cf->epan); } - static void sequence_analysis_item_free(gpointer data) { seq_analysis_item_t *seq_item = (seq_analysis_item_t *)data; g_free(seq_item->frame_label); g_free(seq_item->time_str); g_free(seq_item->comment); + g_free((void *)seq_item->src_addr.data); + g_free((void *)seq_item->dst_addr.data); + g_free(data); } void @@ -263,8 +286,10 @@ sequence_analysis_list_free(seq_analysis_info_t *sainfo) if (!sainfo) return; /* free the graph data items */ + #if GLIB_CHECK_VERSION (2, 32, 0) g_queue_free_full(sainfo->items, sequence_analysis_item_free); + sainfo->items = g_queue_new(); #else { GList *list = g_queue_peek_nth_link(sainfo->items, 0); @@ -273,12 +298,14 @@ sequence_analysis_list_free(seq_analysis_info_t *sainfo) sequence_analysis_item_free(list->data); list = g_list_next(list); } - g_queue_free(sainfo->items); + g_queue_clear(sainfo->items); } #endif + if (NULL != sainfo->ht) { + g_hash_table_remove_all(sainfo->ht); + } sainfo->nconv = 0; - sainfo->items = g_queue_new(); for (i=0; i<MAX_NUM_NODES; i++) { sainfo->nodes[i].type = AT_NONE; diff --git a/ui/tap-sequence-analysis.h b/ui/tap-sequence-analysis.h index 1fedf838af..b8262f7d5b 100644 --- a/ui/tap-sequence-analysis.h +++ b/ui/tap-sequence-analysis.h @@ -77,6 +77,16 @@ typedef struct _seq_analysis_info { guint32 num_nodes; /**< actual number of nodes */ } seq_analysis_info_t; +/** Create and initialize a seq_analysis_info_t struct + * @return A pointer to a newly allocated seq_analysis_info_t struct. + */ +seq_analysis_info_t *sequence_analysis_info_new(void); + +/** Free a seq_analysis_info_t struct. + * @param sainfo A pointer to the seq_analysis_info_t struct to be freed. + */ +void sequence_analysis_info_free(seq_analysis_info_t * sainfo); + /** Fill in the segment list for sequence analysis * * @param cf Capture file to scan diff --git a/ui/voip_calls.c b/ui/voip_calls.c index ac46d404e5..5e42156025 100644 --- a/ui/voip_calls.c +++ b/ui/voip_calls.c @@ -267,8 +267,6 @@ void voip_calls_remove_all_tap_listeners(voip_calls_tapinfo_t *tap_id_base) } } -static void graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo); - /****************************************************************************/ /* when there is a [re]reading of packet's */ void @@ -276,7 +274,6 @@ voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo) { voip_calls_info_t *callsinfo; voip_rtp_stream_info_t *strinfo; - seq_analysis_item_t *graph_item; GList *list = NULL; /* free the data items first */ @@ -304,25 +301,10 @@ voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo) /* free the graph data items first */ if(NULL == tapinfo->graph_analysis) { - graph_analysis_data_init(tapinfo); + tapinfo->graph_analysis = sequence_analysis_info_new(); } - if (NULL != tapinfo->graph_analysis->ht) { - g_hash_table_remove_all(tapinfo->graph_analysis->ht); - } - list = g_queue_peek_nth_link(tapinfo->graph_analysis->items, 0); - while (list) - { - graph_item = (seq_analysis_item_t *)list->data; - g_free(graph_item->frame_label); - g_free(graph_item->comment); - g_free((void *)graph_item->src_addr.data); - g_free((void *)graph_item->dst_addr.data); - g_free(graph_item->time_str); - g_free(list->data); - list = g_list_next(list); - } - g_queue_clear(tapinfo->graph_analysis->items); + sequence_analysis_list_free(tapinfo->graph_analysis); /* free the strinfo data items first */ list = g_list_first(tapinfo->rtp_stream_list); @@ -345,14 +327,6 @@ voip_calls_reset_all_taps(voip_calls_tapinfo_t *tapinfo) } /****************************************************************************/ -void -graph_analysis_data_init(voip_calls_tapinfo_t *tapinfo) { - tapinfo->graph_analysis = (seq_analysis_info_t *) g_new0(seq_analysis_info_t, 1); - tapinfo->graph_analysis->items = g_queue_new(); - tapinfo->graph_analysis->ht= g_hash_table_new(g_int_hash, g_int_equal); -} - -/****************************************************************************/ /* Add a new item into the graph */ static void add_to_graph(voip_calls_tapinfo_t *tapinfo, packet_info *pinfo, epan_dissect_t *edt, const gchar *frame_label, const gchar *comment, guint16 call_num, address *src_addr, address *dst_addr, guint16 line_style) |