summaryrefslogtreecommitdiff
path: root/ping6_common.c
diff options
context:
space:
mode:
authorPetr Vorel <pvorel@suse.cz>2017-09-14 15:04:48 +0200
committerPetr Vorel <pvorel@suse.cz>2017-10-30 13:00:41 +0100
commitdb77fb5b910f3865c158e761392bf7fc97c66ffa (patch)
tree98f0ab8aa8af02299563465ce7bbdadb83010645 /ping6_common.c
parent98dbf8e5909b81a5121e6d2a4cab6266d7a715e7 (diff)
downloadiputils-db77fb5b910f3865c158e761392bf7fc97c66ffa.tar.gz
Revert "correctly initialize first hop"
This reverts commit e25568f5e580d5631f533ae8474bcca40a011690. as it breaks ping to local IPv6 interfaces: $ ip addr |grep 'inet6' inet6 fe80::fc54:ff:fe2d:cc21/64 scope link $ ./ping -6 fe80::fc54:ff:fe2d:cc21 connect: Invalid argument Fixes #99 (regression in #57).
Diffstat (limited to 'ping6_common.c')
-rw-r--r--ping6_common.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/ping6_common.c b/ping6_common.c
index d9f5e69..c0b8396 100644
--- a/ping6_common.c
+++ b/ping6_common.c
@@ -775,7 +775,11 @@ int ping6_run(int argc, char **argv, struct addrinfo *ai, struct socket_st *sock
}
disable_capability_raw();
}
- firsthop.sin6_family = AF_INET6;
+
+ if (!IN6_IS_ADDR_LINKLOCAL(&firsthop.sin6_addr) &&
+ !IN6_IS_ADDR_MC_LINKLOCAL(&firsthop.sin6_addr))
+ firsthop.sin6_family = AF_INET6;
+
firsthop.sin6_port = htons(1025);
if (connect(probe_fd, (struct sockaddr*)&firsthop, sizeof(firsthop)) == -1) {
perror("connect");