summaryrefslogtreecommitdiff
path: root/ui/tap-sequence-analysis.c
diff options
context:
space:
mode:
authorGerald Combs <gerald@wireshark.org>2014-11-18 16:21:42 -0800
committerGerald Combs <gerald@wireshark.org>2014-12-09 21:25:33 +0000
commit4921e559906aee70c4665f1c739057e227787e01 (patch)
tree4465cb9e9de152bfb57f00852e437994e2d85cd9 /ui/tap-sequence-analysis.c
parent3147087de323c0294b51006f97b641fc408f1b06 (diff)
downloadwireshark-4921e559906aee70c4665f1c739057e227787e01.tar.gz
Qt: Initial VoIP Calls dialog.
Add Telephony menu items for VoIP Calls and SIP Flows. Put VoIP Calls at the top, since that seems to be the primary item. Add configure-time checks for QtMultimediaWidgets in anticipation of adding a VoIP playback dialog. Add an icon for the playback button. (Yes, I've been avoiding GNOME-level gratuitous icons so far but this is one of the rare occiasions where it makes sense.) Add a help link define for the VoIP calls dialog. Change-Id: I5d0799685c598ad9af76fe9667f8ea7d14b66050 Reviewed-on: https://code.wireshark.org/review/5674 Petri-Dish: Gerald Combs <gerald@wireshark.org> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Gerald Combs <gerald@wireshark.org>
Diffstat (limited to 'ui/tap-sequence-analysis.c')
-rw-r--r--ui/tap-sequence-analysis.c33
1 files changed, 28 insertions, 5 deletions
diff --git a/ui/tap-sequence-analysis.c b/ui/tap-sequence-analysis.c
index abaf6f19b1..a30ee53eda 100644
--- a/ui/tap-sequence-analysis.c
+++ b/ui/tap-sequence-analysis.c
@@ -256,8 +256,6 @@ sequence_analysis_list_get(capture_file *cf, seq_analysis_info_t *sainfo)
case SEQ_ANALYSIS_VOIP:
default:
return;
- break;
-
}
cf_retap_packets(cf);
@@ -278,6 +276,31 @@ static void sequence_analysis_item_free(gpointer data)
g_free(data);
}
+
+/* compare two list entries by packet no */
+static gint
+sequence_analysis_sort_compare(gconstpointer a, gconstpointer b, gpointer user_data _U_)
+{
+ const seq_analysis_item_t *entry_a = (const seq_analysis_item_t *)a;
+ const seq_analysis_item_t *entry_b = (const seq_analysis_item_t *)b;
+
+ if(entry_a->fd->num < entry_b->fd->num)
+ return -1;
+
+ if(entry_a->fd->num > entry_b->fd->num)
+ return 1;
+
+ return 0;
+}
+
+
+void
+sequence_analysis_list_sort(seq_analysis_info_t *sainfo)
+{
+ if (!sainfo) return;
+ g_queue_sort(sainfo->items, sequence_analysis_sort_compare, NULL);
+}
+
void
sequence_analysis_list_free(seq_analysis_info_t *sainfo)
{
@@ -380,7 +403,7 @@ static void overwrite (GString *gstr, char *text_to_insert, guint32 p1, guint32
* and Return -2 if the array is full
*/
/****************************************************************************/
-static gint add_or_get_node(seq_analysis_info_t *sainfo, address *node) {
+static guint add_or_get_node(seq_analysis_info_t *sainfo, address *node) {
guint i;
if (node->type == AT_NONE) return NODE_OVERFLOW;
@@ -409,8 +432,8 @@ static void sequence_analysis_get_nodes_item_proc(gpointer data, gpointer user_d
struct sainfo_counter *sc = (struct sainfo_counter *)user_data;
if (gai->display) {
(sc->num_items)++;
- gai->src_node = (guint16)add_or_get_node(sc->sainfo, &(gai->src_addr));
- gai->dst_node = (guint16)add_or_get_node(sc->sainfo, &(gai->dst_addr));
+ gai->src_node = add_or_get_node(sc->sainfo, &(gai->src_addr));
+ gai->dst_node = add_or_get_node(sc->sainfo, &(gai->dst_addr));
}
}