You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

34 lines
1.0 KiB

Subject: Add RTT handling for ICMP destination unreachable packets.
Author: Baruch Even <baruch@debian.org>
Bug-Debian: http://bugs.debian.org/248273
Last-Update: 2009-09-04
--- a/waitpacket.c
+++ b/waitpacket.c
@@ -229,6 +229,7 @@ int recv_icmp(void *packet, size_t size)
{
struct myicmphdr icmp;
struct myiphdr quoted_ip;
+ struct myudphdr quoted_udp;
/* Check if the packet can contain the ICMP header */
if (size < ICMPHDR_SIZE) {
@@ -286,6 +287,18 @@ int recv_icmp(void *packet, size_t size)
case 3:
if (!opt_quiet)
log_icmp_unreach(inet_ntoa(src), icmp.code);
+ if (quoted_ip.protocol == IPPROTO_UDP)
+ {
+ int sequence = 0, status;
+ float ms_delay = 0.0;
+ unsigned short port;
+
+ /* Get RTT for UDP packet */
+ memcpy(&quoted_udp, packet+ICMPHDR_SIZE+(quoted_ip.ihl<<2), sizeof(quoted_udp));
+ port = ntohs(quoted_udp.uh_sport);
+ status = rtt(&sequence, port, &ms_delay);
+ printf("status=%d port=%d seq=%d\n", status, port, sequence);
+ }
return 1;
case 11:
if (opt_traceroute)