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;
{ 200, "OK"},
{ 202, "Accepted"},
+ { 204, "No Notification"},
{ 299, "Success - Others"}, /* used to keep track of other Success packets */
{ 300, "Multiple Choices"},
{ 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"},
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);
}
/* 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 */
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");
}
"sip",
sp,
filter,
+ 0,
sipstat_reset,
sipstat_packet,
sipstat_draw);