aboutsummaryrefslogtreecommitdiffstats
path: root/gtk/sip_stat.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/sip_stat.c')
-rw-r--r--gtk/sip_stat.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/gtk/sip_stat.c b/gtk/sip_stat.c
index 056f09d2dc..aa28c60fc5 100644
--- a/gtk/sip_stat.c
+++ b/gtk/sip_stat.c
@@ -56,8 +56,10 @@ typedef struct _sip_stats_t {
GHashTable *hash_requests;
guint32 packets; /* number of sip packets, including continuations */
guint32 resent_packets;
+ guint32 avrage_setup_time;
GtkWidget *packets_label;
GtkWidget *resent_label;
+ GtkWidget *avrage_setup_time_label;
GtkWidget *request_box; /* container for INVITE, ... */
@@ -338,6 +340,7 @@ sipstat_reset(void *psp)
{
sp->packets = 0;
sp->resent_packets = 0;
+ sp->avrage_setup_time = 0;
g_hash_table_foreach(sp->hash_responses, (GHFunc)sip_reset_hash_responses, NULL);
g_hash_table_foreach(sp->hash_requests, (GHFunc)sip_reset_hash_requests, NULL);
}
@@ -359,6 +362,14 @@ sipstat_packet(void *psp, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const
sp->resent_packets++;
}
+ /* Calculate avrage setup time */
+ if (value->setup_time){
+ /* Check if it's the first value */
+ if ( sp->avrage_setup_time == 0 ){
+ sp->avrage_setup_time = value->setup_time;
+ }
+ sp->avrage_setup_time = (sp->avrage_setup_time + value->setup_time)/2;
+ }
/* Looking at both requests and responses */
if (value->response_code != 0)
@@ -471,7 +482,12 @@ sipstat_draw(void *psp)
g_hash_table_foreach(sp->hash_responses, (GHFunc)sip_draw_hash_responses, NULL);
g_hash_table_foreach(sp->hash_requests, (GHFunc)sip_draw_hash_requests, NULL);
- gtk_widget_show_all(sp->win);
+ /* Set resend count label */
+ g_snprintf(string_buff, sizeof(string_buff),
+ "(Avrage setup time %d ms)", sp->avrage_setup_time);
+ gtk_label_set(GTK_LABEL(sp->avrage_setup_time_label), string_buff);
+
+ gtk_widget_show_all(sp->win);
}
@@ -619,6 +635,11 @@ gtk_sipstat_init(const char *optarg, void *userdata _U_)
sp->request_box = gtk_vbox_new(FALSE, 10);
gtk_container_add(GTK_CONTAINER(request_fr), sp->request_box);
+ sp->avrage_setup_time = 0;
+ sp->avrage_setup_time_label = gtk_label_new("(Not calculated)");
+ gtk_container_add(GTK_CONTAINER(main_vb), sp->avrage_setup_time_label);
+ gtk_widget_show(sp->avrage_setup_time_label);
+
/* Register this tap listener now */
error_string = register_tap_listener("sip",