Trivial reformatting
[obnox/wireshark/wip.git] / tap-sipstat.c
index 4559f5a5b7e620f16581e9a3af1ec3f4ed94ab31..6d3c9a30cff2e9d10a6ceede4e19e2eddf2b5130 100644 (file)
@@ -46,7 +46,11 @@ typedef struct _sip_stats_t {
        char            *filter;
        guint32         packets;        /* number of sip packets, including continuations */
        guint32         resent_packets;
-       guint32         avrage_setup_time;
+       guint32         average_setup_time;
+       guint32         max_setup_time;
+       guint32         min_setup_time;
+       guint32         no_of_completed_calls;
+       guint64         total_setup_time;
        GHashTable      *hash_responses;
        GHashTable      *hash_requests;
 } sipstat_t;
@@ -79,6 +83,7 @@ static const value_string vals_status_code[] = {
 
     { 200, "OK"},
     { 202, "Accepted"},
+    { 204, "No Notification"},
     { 299, "Success - Others"},        /* used to keep track of other Success packets */
 
     { 300, "Multiple Choices"},
@@ -107,7 +112,16 @@ static const value_string vals_status_code[] = {
     { 421, "Extension Required"},
     { 422, "Session Timer Too Small"},
     { 423, "Interval Too Brief"},
+    { 428, "Use Identity Header"},
     { 429, "Provide Referrer Identity"},
+    { 430, "Flow Failed"},
+    { 433, "Anonymity Disallowed"},
+    { 436, "Bad Identity-Info"},
+    { 437, "Unsupported Certificate"},
+    { 438, "Invalid Identity Header"},
+    { 439, "First Hop Lacks Outbound Support"},
+    { 440, "Max-Breadth Exceeded"},
+    { 470, "Consent Needed"},
     { 480, "Temporarily Unavailable"},
     { 481, "Call/Transaction Does Not Exist"},
     { 482, "Loop Detected"},
@@ -215,7 +229,12 @@ sipstat_reset(void *psp  )
        if (sp) {
                sp->packets = 0;
                sp->resent_packets = 0;
-               sp->avrage_setup_time = 0;
+               sp->average_setup_time = 0;
+               sp->max_setup_time = 0;
+               sp->min_setup_time = 0;
+               sp->no_of_completed_calls = 0;
+               sp->total_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);
        }
@@ -232,13 +251,26 @@ sipstat_packet(void *psp, packet_info *pinfo _U_, epan_dissect_t *edt _U_, const
     /* Total number of packets, including continuation packets */
     sp->packets++;
 
-       /* Calculate avrage setup time */
+       /* Calculate average setup time */
        if (value->setup_time){
+               sp->no_of_completed_calls++;
                /* Check if it's the first value */
-               if ( sp->avrage_setup_time == 0 ){
-                       sp->avrage_setup_time = value->setup_time;
+               if ( sp->total_setup_time == 0 ){
+                       sp->average_setup_time = value->setup_time;
+                       sp->total_setup_time = value->setup_time;
+                       sp->max_setup_time = value->setup_time;
+                       sp->min_setup_time = value->setup_time;
+               }else{
+                       sp->total_setup_time = sp->total_setup_time + value->setup_time;
+                       if (sp->max_setup_time < value->setup_time){
+                               sp->max_setup_time = value->setup_time;
+                       }
+                       if (sp->min_setup_time > value->setup_time){
+                               sp->min_setup_time = value->setup_time;
+                       }
+                       /* Calculate average */
+                       sp->average_setup_time = (guint32)(sp->total_setup_time / sp->no_of_completed_calls); 
                }
-               sp->avrage_setup_time = (sp->avrage_setup_time +  value->setup_time)/2;
        }
     
     /* Update resent count if flag set */
@@ -356,7 +388,7 @@ sipstat_draw(void *psp  )
        printf("\n* List of SIP Request methods\n");
        g_hash_table_foreach( sp->hash_requests,  (GHFunc)sip_draw_hash_requests,
                "  %-15s : %5d Packets\n");
-       printf( "\n* Avrage setuptime %d ms\n", sp->avrage_setup_time);
+       printf( "\n* Average setup time %d ms\n Min %d ms\n Max %d ms\n", sp->average_setup_time, sp->min_setup_time, sp->max_setup_time);
        printf("===================================================================\n");
 }
 
@@ -386,6 +418,7 @@ sipstat_init(const char *optarg, void* userdata _U_)
                        "sip",
                        sp,
                        filter,
+                       0,
                        sipstat_reset,
                        sipstat_packet,
                        sipstat_draw);