+void clearQueue(){
+ struct request *cur;
+ struct request *tmp;
+
+ cur=queue.head;
+ while(cur!=NULL){
+ tmp=cur;
+ cur=cur->next;
+ free(tmp);
+ }
+ queue.head=NULL;
+ queue.tail=NULL;
+ return;
+}
+
+void sigHandler(){
+ char pbuf[1000];
+ int diff;
+ double ploss;
+
+ /*Print Stats*/
+ if(ip_type==AF_INET){
+ dbgprintf(0,"-----------%s PING STATISTICS-----------\n",
+ inet_ntop(ip_type, (void*)&dest_addr.ipv4->sin_addr, pbuf, 1000));
+ }else if(ip_type==AF_INET6){
+ dbgprintf(0,"-----------%s PING STATISTICS-----------\n",
+ inet_ntop(ip_type, (void*)&dest_addr.ipv6->sin6_addr, pbuf, 1000));
+ }
+ diff=(ping_stats.stop.tv_usec + 1000000*ping_stats.stop.tv_sec) -
+ (ping_stats.start.tv_usec + 1000000*ping_stats.start.tv_sec);
+ diff=diff/1000.0;
+ ploss=(1.0*(ping_stats.requests_sent-ping_stats.replies_received)/ping_stats.requests_sent*1.0)*100;
+ dbgprintf(0,"%i packets transmitted, %i received, %i errors, %.2f%% loss, time %ims\n",
+ ping_stats.requests_sent,ping_stats.replies_received,ping_stats.errors,
+ ploss,diff);
+ dbgprintf(0,"rtt min/avg/max = %.1f/%.1f/%.1f ms\n",
+ ping_stats.rtt_min,ping_stats.rtt_avg,ping_stats.rtt_max);
+
+
+ /*Exit Quickly*/
+ count=0;
+}
+