ping: display real IPv6 response address. Hopefully closes 3745.
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 11 Sep 2011 18:27:28 +0000 (20:27 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 11 Sep 2011 18:27:28 +0000 (20:27 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/ping.c

index a1fd9dfb119d1882f6b653311993e78baa6dcb46..b8a438ba82440688e707a21dd19cb2e27875388b 100644 (file)
@@ -613,7 +613,7 @@ static void unpack4(char *buf, int sz, struct sockaddr_in *from)
        }
 }
 #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;
        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))
                        tp = (uint32_t *) &icmppkt->icmp6_data8[4];
                unpack_tail(sz, tp,
-                       inet_ntop(AF_INET6, &pingaddr.sin6.sin6_addr,
+                       inet_ntop(AF_INET6, &from->sin6_addr,
                                        buf, sizeof(buf)),
                        recv_seq, hoplimit);
        } 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));
                        }
                }
-               unpack6(G.rcv_packet, c, /*&from,*/ hoplimit);
+               unpack6(G.rcv_packet, c, &from, hoplimit);
                if (pingcount && nreceived >= pingcount)
                        break;
        }