Blame SOURCES/iputils-fix-I-setsockopt.patch

ba80c1
Resolves: #1351540
ba80c1
ba80c1
--- a/ping.c
ba80c1
+++ b/ping.c
ba80c1
@@ -569,6 +569,7 @@ int ping4_run(int argc, char **argv, struct addrinfo *ai, socket_st *sock)
ba80c1
 			strncpy(ifr.ifr_name, device, IFNAMSIZ-1);
ba80c1
 
ba80c1
 			enable_capability_raw();
ba80c1
+			setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1);
ba80c1
 			rc = setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1);
ba80c1
 			disable_capability_raw();
ba80c1
 
ba80c1
--- a/ping6_common.c
ba80c1
+++ b/ping6_common.c
ba80c1
@@ -797,8 +797,10 @@ int ping6_run(int argc, char **argv, struct addrinfo *ai, struct socket_st *sock
ba80c1
 			enable_capability_raw();
ba80c1
 			if (
ba80c1
 #ifdef IPV6_RECVPKTINFO
ba80c1
+			    setsockopt(sock->fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1 &&
ba80c1
 			    setsockopt(probe_fd, IPPROTO_IPV6, IPV6_PKTINFO, &ipi, sizeof ipi) == -1 &&
ba80c1
 #endif
ba80c1
+			    setsockopt(sock->fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1) == -1 &&
ba80c1
 			    setsockopt(probe_fd, SOL_SOCKET, SO_BINDTODEVICE, device, strlen(device)+1) == -1) {
ba80c1
 				perror("setsockopt(SO_BINDTODEVICE)");
ba80c1
 				exit(2);