udp_io, traceroute: Standardise IPv6 PKTINFO handling to be portable
No binary (build failed)
—
(log yok)
| @@ -8,6 +8,10 @@ | |
| */ | |
| #include "libbb.h" | |
| + | #if defined(IPV6_PKTINFO) && !defined(IPV6_RECVPKTINFO) |
| + | # define IPV6_RECVPKTINFO IPV6_PKTINFO |
| + | #endif |
| + | |
| /* | |
| * This asks kernel to let us know dst addr/port of incoming packets | |
| * We don't check for errors here. Not supported == won't be used | |
| @@ -18,8 +22,8 @@ socket_want_pktinfo(int fd UNUSED_PARAM) | |
| #ifdef IP_PKTINFO | |
| setsockopt_1(fd, IPPROTO_IP, IP_PKTINFO); | |
| #endif | |
| - | #if ENABLE_FEATURE_IPV6 && defined(IPV6_PKTINFO) |
| - | setsockopt_1(fd, IPPROTO_IPV6, IPV6_PKTINFO); |
| + | #if ENABLE_FEATURE_IPV6 && defined(IPV6_RECVPKTINFO) |
| + | setsockopt_1(fd, IPPROTO_IPV6, IPV6_RECVPKTINFO); |
| #endif | |
| } | |
| @@ -311,6 +311,9 @@ | |
| # ifndef SOL_IPV6 | |
| # define SOL_IPV6 IPPROTO_IPV6 | |
| # endif | |
| + | # if defined(IPV6_PKTINFO) && !defined(IPV6_RECVPKTINFO) |
| + | # define IPV6_RECVPKTINFO IPV6_PKTINFO |
| + | # endif |
| #endif | |
| #include "libbb.h" | |
| @@ -911,12 +914,7 @@ common_traceroute_main(int op, char **argv) | |
| #if ENABLE_TRACEROUTE6 | |
| if (af == AF_INET6) { | |
| xmove_fd(xsocket(AF_INET6, SOCK_RAW, IPPROTO_ICMPV6), rcvsock); | |
| - | # ifdef IPV6_RECVPKTINFO |
| setsockopt_1(rcvsock, SOL_IPV6, IPV6_RECVPKTINFO); | |
| - | setsockopt_1(rcvsock, SOL_IPV6, IPV6_2292PKTINFO); |
| - | # else |
| - | setsockopt_1(rcvsock, SOL_IPV6, IPV6_PKTINFO); |
| - | # endif |
| } else | |
| #endif | |
| { | |