ping: display real IPv6 response address. Hopefully closes 3745.

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
Denys Vlasenko 2011-09-11 20:27:28 +02:00
parent 46aa5e0859
commit 5126cf9a15

View File

@ -613,7 +613,7 @@ static void unpack4(char *buf, int sz, struct sockaddr_in *from)
} }
} }
#if ENABLE_PING6 #if ENABLE_PING6
static void unpack6(char *packet, int sz, /*struct sockaddr_in6 *from,*/ int hoplimit) static void unpack6(char *packet, int sz, struct sockaddr_in6 *from, int hoplimit)
{ {
struct icmp6_hdr *icmppkt; struct icmp6_hdr *icmppkt;
char buf[INET6_ADDRSTRLEN]; char buf[INET6_ADDRSTRLEN];
@ -633,7 +633,7 @@ static void unpack6(char *packet, int sz, /*struct sockaddr_in6 *from,*/ int hop
if (sz >= sizeof(struct icmp6_hdr) + sizeof(uint32_t)) if (sz >= sizeof(struct icmp6_hdr) + sizeof(uint32_t))
tp = (uint32_t *) &icmppkt->icmp6_data8[4]; tp = (uint32_t *) &icmppkt->icmp6_data8[4];
unpack_tail(sz, tp, unpack_tail(sz, tp,
inet_ntop(AF_INET6, &pingaddr.sin6.sin6_addr, inet_ntop(AF_INET6, &from->sin6_addr,
buf, sizeof(buf)), buf, sizeof(buf)),
recv_seq, hoplimit); recv_seq, hoplimit);
} else if (icmppkt->icmp6_type != ICMP6_ECHO_REQUEST) { } else if (icmppkt->icmp6_type != ICMP6_ECHO_REQUEST) {
@ -783,7 +783,7 @@ static void ping6(len_and_sockaddr *lsa)
move_from_unaligned_int(hoplimit, CMSG_DATA(mp)); move_from_unaligned_int(hoplimit, CMSG_DATA(mp));
} }
} }
unpack6(G.rcv_packet, c, /*&from,*/ hoplimit); unpack6(G.rcv_packet, c, &from, hoplimit);
if (pingcount && nreceived >= pingcount) if (pingcount && nreceived >= pingcount)
break; break;
} }