- 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("ed_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)
|