aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2011-09-11 20:27:28 +0200
committerDenys Vlasenko <vda.linux@googlemail.com>2011-09-11 20:27:28 +0200
commit5126cf9a15f9e5c3986be0fc2743b63adcc6b1fb (patch)
tree4c1cffbbc5c0a142f6823d042f7efa0a14022eab
parent46aa5e0859646a1e8f96282b0ab2c362c7565a85 (diff)
downloadbusybox-w32-5126cf9a15f9e5c3986be0fc2743b63adcc6b1fb.tar.gz
busybox-w32-5126cf9a15f9e5c3986be0fc2743b63adcc6b1fb.tar.bz2
busybox-w32-5126cf9a15f9e5c3986be0fc2743b63adcc6b1fb.zip
ping: display real IPv6 response address. Hopefully closes 3745.
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--networking/ping.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/networking/ping.c b/networking/ping.c
index a1fd9dfb1..b8a438ba8 100644
--- a/networking/ping.c
+++ b/networking/ping.c
@@ -613,7 +613,7 @@ static void unpack4(char *buf, int sz, struct sockaddr_in *from)
613 } 613 }
614} 614}
615#if ENABLE_PING6 615#if ENABLE_PING6
616static void unpack6(char *packet, int sz, /*struct sockaddr_in6 *from,*/ int hoplimit) 616static void unpack6(char *packet, int sz, struct sockaddr_in6 *from, int hoplimit)
617{ 617{
618 struct icmp6_hdr *icmppkt; 618 struct icmp6_hdr *icmppkt;
619 char buf[INET6_ADDRSTRLEN]; 619 char buf[INET6_ADDRSTRLEN];
@@ -633,7 +633,7 @@ static void unpack6(char *packet, int sz, /*struct sockaddr_in6 *from,*/ int hop
633 if (sz >= sizeof(struct icmp6_hdr) + sizeof(uint32_t)) 633 if (sz >= sizeof(struct icmp6_hdr) + sizeof(uint32_t))
634 tp = (uint32_t *) &icmppkt->icmp6_data8[4]; 634 tp = (uint32_t *) &icmppkt->icmp6_data8[4];
635 unpack_tail(sz, tp, 635 unpack_tail(sz, tp,
636 inet_ntop(AF_INET6, &pingaddr.sin6.sin6_addr, 636 inet_ntop(AF_INET6, &from->sin6_addr,
637 buf, sizeof(buf)), 637 buf, sizeof(buf)),
638 recv_seq, hoplimit); 638 recv_seq, hoplimit);
639 } else if (icmppkt->icmp6_type != ICMP6_ECHO_REQUEST) { 639 } else if (icmppkt->icmp6_type != ICMP6_ECHO_REQUEST) {
@@ -783,7 +783,7 @@ static void ping6(len_and_sockaddr *lsa)
783 move_from_unaligned_int(hoplimit, CMSG_DATA(mp)); 783 move_from_unaligned_int(hoplimit, CMSG_DATA(mp));
784 } 784 }
785 } 785 }
786 unpack6(G.rcv_packet, c, /*&from,*/ hoplimit); 786 unpack6(G.rcv_packet, c, &from, hoplimit);
787 if (pingcount && nreceived >= pingcount) 787 if (pingcount && nreceived >= pingcount)
788 break; 788 break;
789 } 789 }