This commit is contained in:
17
statistics.c
17
statistics.c
@ -11,13 +11,14 @@
|
|||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <math.h>
|
||||||
|
|
||||||
#include "hping2.h"
|
#include "hping2.h"
|
||||||
#include "globals.h"
|
#include "globals.h"
|
||||||
|
|
||||||
void print_statistics(int signal_id)
|
void print_statistics(int signal_id)
|
||||||
{
|
{
|
||||||
unsigned int lossrate=0;
|
uint32_t lossrate=0;
|
||||||
uint32_t losspack=0;
|
uint32_t losspack=0;
|
||||||
#if (defined OSTYPE_LINUX) && (!defined FORCE_LIBPCAP)
|
#if (defined OSTYPE_LINUX) && (!defined FORCE_LIBPCAP)
|
||||||
close_sockpacket(sockpacket);
|
close_sockpacket(sockpacket);
|
||||||
@ -26,20 +27,20 @@ void print_statistics(int signal_id)
|
|||||||
#endif /* OSTYPE_LINUX && !FORCE_LIBPCAP */
|
#endif /* OSTYPE_LINUX && !FORCE_LIBPCAP */
|
||||||
|
|
||||||
if (recv_pkt > 0){
|
if (recv_pkt > 0){
|
||||||
losspack=(recv_pkt!=sent_pkt)?(recv_pkt/sent_pkt):0;
|
losspack=recv_pkt/sent_pkt;
|
||||||
lossrate = 100 - ((recv_pkt*100)/sent_pkt);
|
lossrate = 100 - ((recv_pkt*100)/sent_pkt);
|
||||||
}else{
|
}else{
|
||||||
losspack=!sent_pkt?0:sent_pkt;
|
losspack=sent_pkt<0?0:sent_pkt;
|
||||||
lossrate=!sent_pkt?0:100;
|
lossrate=sent_pkt<0?0:100;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("\n--- %s 统计 ---\n", targetname);
|
printf("\n--- %s 统计 ---\n", targetname);
|
||||||
printf("发送: %d|收到: %d|%d%% 丢包率|已丢弃 %d\n", sent_pkt, recv_pkt, lossrate,losspack);
|
printf("发送: %d|收到: %d|%d%% 丢包率|已丢弃 %d\n", sent_pkt, recv_pkt, abs(lossrate),losspack);
|
||||||
if (out_of_sequence_pkt)
|
if (out_of_sequence_pkt>0)
|
||||||
printf("已收到 %d 个乱序数据包\n",
|
printf("已收到 %d 个乱序数据包\n",
|
||||||
out_of_sequence_pkt);
|
out_of_sequence_pkt);
|
||||||
if(dup_count>0){
|
if(dup_count>0){
|
||||||
printf("重传了 %d 个数据包\n",dup_count);
|
printf("重复确认了 %d 个数据包\n",dup_count);
|
||||||
}
|
}
|
||||||
printf("==往返时间==\n最小:%.1f 毫秒\n平均: %.1f 毫秒\n最大:%.1f 毫秒\n",
|
printf("==往返时间==\n最小:%.1f 毫秒\n平均: %.1f 毫秒\n最大:%.1f 毫秒\n",
|
||||||
rtt_min, rtt_avg, rtt_max);
|
rtt_min, rtt_avg, rtt_max);
|
||||||
|
10
waitpacket.c
10
waitpacket.c
@ -220,7 +220,7 @@ log_ipv4(int status, int sequence)
|
|||||||
rel_id = relativize_id(sequence, &ip_id);
|
rel_id = relativize_id(sequence, &ip_id);
|
||||||
else
|
else
|
||||||
rel_id = 0;
|
rel_id = 0;
|
||||||
printf("len=%d ip=%s ttl=%d %sid%s%d ", ip_size, inet_ntoa(src),
|
printf("len=%d ttl=%d %sid%s%d ", ip_size,
|
||||||
ip->ttl,
|
ip->ttl,
|
||||||
(ntohs(ip->frag_off) ? "DF " : ""),
|
(ntohs(ip->frag_off) ? "DF " : ""),
|
||||||
(rel_id ? "=+" : "="), ip_id);
|
(rel_id ? "=+" : "="), ip_id);
|
||||||
@ -233,7 +233,7 @@ log_ipv6(int status, int sequence)
|
|||||||
{
|
{
|
||||||
char tmp[1024];
|
char tmp[1024];
|
||||||
|
|
||||||
printf("len=%d ip=%s ttl=%d ", ip_size, inet_ntop(opt_af, &src6, tmp, sizeof(tmp)),
|
printf("len=%d ttl=%d ", ip_size,
|
||||||
ip6->hoplimit);
|
ip6->hoplimit);
|
||||||
if (opt_verbose && !opt_quiet)
|
if (opt_verbose && !opt_quiet)
|
||||||
printf("tc=%x flowlabel=%u\n", (ip6->tc1 << 4) | ip6->tc2, (ip6->flowlabel1 << 16) | ip6->flowlabel2);
|
printf("tc=%x flowlabel=%u\n", (ip6->tc1 << 4) | ip6->tc2, (ip6->flowlabel1 << 16) | ip6->flowlabel2);
|
||||||
@ -243,7 +243,7 @@ static void
|
|||||||
log_ip(int status, int sequence)
|
log_ip(int status, int sequence)
|
||||||
{
|
{
|
||||||
if(status == S_RECV){
|
if(status == S_RECV){
|
||||||
printf("[重传]DUP! ");
|
printf("[重复]DUP! ");
|
||||||
dup_count++;
|
dup_count++;
|
||||||
}
|
}
|
||||||
if(ip->version == 4)
|
if(ip->version == 4)
|
||||||
@ -306,7 +306,7 @@ void log_traceroute(void *packet, int size, int icmp_code)
|
|||||||
log_icmp_timeexc(inet_ntop(opt_af, &src6, tmp, sizeof(tmp)), icmp_code);
|
log_icmp_timeexc(inet_ntop(opt_af, &src6, tmp, sizeof(tmp)), icmp_code);
|
||||||
}
|
}
|
||||||
if (retval != -1)
|
if (retval != -1)
|
||||||
printf(" hoprtt=%.1f 毫秒", rtt);
|
printf(" hoprtt=%.1f ms", rtt);
|
||||||
if (!opt_tr_keep_ttl)
|
if (!opt_tr_keep_ttl)
|
||||||
src_ttl++;
|
src_ttl++;
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
@ -340,7 +340,7 @@ int recv_icmp(void *packet, size_t size)
|
|||||||
status = rtt(&icmp_seq, 0, &ms_delay);
|
status = rtt(&icmp_seq, 0, &ms_delay);
|
||||||
log_ip(status, icmp_seq);
|
log_ip(status, icmp_seq);
|
||||||
|
|
||||||
printf("icmp_seq=%d 往返时间=%.2f 毫秒\n", icmp_seq, ms_delay);
|
printf("icmp_seq=%d rtt=%.2f ms\n", icmp_seq, ms_delay);
|
||||||
if (icmp->type == ICMP_TIMESTAMPREPLY) {
|
if (icmp->type == ICMP_TIMESTAMPREPLY) {
|
||||||
if ((size - ICMPHDR_SIZE) >= 12)
|
if ((size - ICMPHDR_SIZE) >= 12)
|
||||||
log_icmp_ts(packet+ICMPHDR_SIZE);
|
log_icmp_ts(packet+ICMPHDR_SIZE);
|
||||||
|
Reference in New Issue
Block a user