diff options
author | Adam Mitz <mitza@objectcomputing.com> | 2020-04-16 16:21:28 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-04-16 16:21:28 -0500 |
commit | e8b8245004ddf3874ab2079c4feddf70fe7a5be8 (patch) | |
tree | 3174e96da901331a89b8de39031d4a94eb987ac6 | |
parent | 0031eb38fb74419738d7a7e2bdc5d3c686f465c4 (diff) | |
parent | 509b105b343eeffe57504562e4cdd96c23414cf8 (diff) | |
download | ATCD-e8b8245004ddf3874ab2079c4feddf70fe7a5be8.tar.gz |
Merge pull request #1069 from jrw972/ipv6-recvinfo-macos
IPv6 and RECVINFO on macOS; Windows if_nametoindex
-rw-r--r-- | ACE/NEWS | 6 | ||||
-rw-r--r-- | ACE/ace/OS_NS_sys_socket.h | 6 | ||||
-rw-r--r-- | ACE/ace/OS_NS_sys_socket.inl | 18 | ||||
-rw-r--r-- | ACE/ace/SOCK_Dgram.cpp | 9 | ||||
-rw-r--r-- | ACE/ace/config-face-safety.h | 3 | ||||
-rw-r--r-- | ACE/ace/config-macosx-mojave.h | 6 | ||||
-rw-r--r-- | ACE/ace/config-win32-common.h | 9 | ||||
-rw-r--r-- | ACE/ace/os_include/net/os_if.h | 5 |
8 files changed, 36 insertions, 26 deletions
@@ -1,6 +1,12 @@ USER VISIBLE CHANGES BETWEEN ACE-6.5.8 and ACE-6.5.9 ==================================================== +. On Windows, ACE no longer defines _WIN32_WINNT. ACE wrappers for + if_nametoindex and if_indextoname are available if the version of the + Windows SDK supports them. + +. IPv6 extended datagram receive info now supported on macOS. + USER VISIBLE CHANGES BETWEEN ACE-6.5.7 and ACE-6.5.8 ==================================================== diff --git a/ACE/ace/OS_NS_sys_socket.h b/ACE/ace/OS_NS_sys_socket.h index d7e7524a6ad..faa6cd9bdfb 100644 --- a/ACE/ace/OS_NS_sys_socket.h +++ b/ACE/ace/OS_NS_sys_socket.h @@ -65,9 +65,7 @@ #endif #if defined (ACE_HAS_IPV6) -#if defined (IPV6_PKTINFO) -#define ACE_RECVPKTINFO6 IPV6_PKTINFO -#elif defined (IPV6_RECVPKTINFO) +#if defined (IPV6_RECVPKTINFO) #define ACE_RECVPKTINFO6 IPV6_RECVPKTINFO #endif #endif @@ -276,7 +274,6 @@ namespace ACE_OS int shutdown (ACE_HANDLE handle, int how); -#if defined (ACE_LINUX) && defined (ACE_HAS_IPV6) ACE_NAMESPACE_INLINE_FUNCTION unsigned int if_nametoindex (const char *ifname); @@ -288,7 +285,6 @@ namespace ACE_OS ACE_NAMESPACE_INLINE_FUNCTION void if_freenameindex (struct if_nameindex *ptr); -#endif /* ACE_LINUX && ACE_HAS_IPV6 */ /// Initialize WinSock before first use (e.g., when a DLL is first /// loaded or the first use of a socket() call. diff --git a/ACE/ace/OS_NS_sys_socket.inl b/ACE/ace/OS_NS_sys_socket.inl index 484e1f4ff00..3da4104198e 100644 --- a/ACE/ace/OS_NS_sys_socket.inl +++ b/ACE/ace/OS_NS_sys_socket.inl @@ -1020,54 +1020,52 @@ ACE_OS::socketpair (int domain, int type, #endif /* ACE_LACKS_SOCKETPAIR */ } -#if defined (ACE_LINUX) && defined (ACE_HAS_IPV6) ACE_INLINE unsigned int ACE_OS::if_nametoindex (const char *ifname) { ACE_OS_TRACE ("ACE_OS::if_nametoindex"); -#if defined (ACE_LACKS_IF_NAME_INDEX) +#ifdef ACE_LACKS_IF_NAMETOINDEX ACE_UNUSED_ARG (ifname); ACE_NOTSUP_RETURN (0); #else ACE_OSCALL_RETURN (::if_nametoindex (ifname), int, 0); -#endif /* ACE_LACKS_IF_NAME_INDEX */ +#endif /* ACE_LACKS_IF_NAMETOINDEX */ } ACE_INLINE char * ACE_OS::if_indextoname (unsigned int ifindex, char *ifname) { ACE_OS_TRACE ("ACE_OS::if_indextoname"); -#if defined (ACE_LACKS_IF_NAME_INDEX) +#ifdef ACE_LACKS_IF_NAMETOINDEX ACE_UNUSED_ARG (ifindex); ACE_UNUSED_ARG (ifname); ACE_NOTSUP_RETURN (0); #else ACE_OSCALL_RETURN (::if_indextoname (ifindex, ifname), char *, 0); -#endif /* ACE_LACKS_IF_NAME_INDEX */ +#endif /* ACE_LACKS_IF_NAMETOINDEX */ } ACE_INLINE struct if_nameindex * ACE_OS::if_nameindex (void) { ACE_OS_TRACE ("ACE_OS::if_nameindex"); -#if defined (ACE_LACKS_IF_NAME_INDEX) +#ifdef ACE_LACKS_IF_NAMEINDEX ACE_NOTSUP_RETURN (0); #else ACE_OSCALL_RETURN (::if_nameindex (), struct if_nameindex *, 0); -#endif /* ACE_LACKS_IF_NAME_INDEX */ +#endif /* ACE_LACKS_IF_NAMEINDEX */ } ACE_INLINE void ACE_OS::if_freenameindex (struct if_nameindex *ptr) { ACE_OS_TRACE ("ACE_OS::if_freenameindex"); -#if defined (ACE_LACKS_IF_NAME_INDEX) +#ifdef ACE_LACKS_IF_NAMEINDEX ACE_UNUSED_ARG (ptr); #else if (ptr != 0) ::if_freenameindex (ptr); -#endif /* ACE_LACKS_IF_NAME_INDEX */ +#endif /* ACE_LACKS_IF_NAMEINDEX */ } -#endif /* ACE_LINUX && ACE_HAS_IPV6 */ ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/SOCK_Dgram.cpp b/ACE/ace/SOCK_Dgram.cpp index d70d8a84b78..17b00ad015e 100644 --- a/ACE/ace/SOCK_Dgram.cpp +++ b/ACE/ace/SOCK_Dgram.cpp @@ -729,12 +729,11 @@ ACE_SOCK_Dgram::make_multicast_ifaddr6 (ipv6_mreq *ret_mreq, 0, sizeof (lmreq)); -#if defined(ACE_LINUX) +#ifndef ACE_LACKS_IF_NAMETOINDEX if (net_if != 0) { - lmreq.ipv6mr_interface = ACE_OS::if_nametoindex (ACE_TEXT_ALWAYS_CHAR(net_if)); + lmreq.ipv6mr_interface = ACE_OS::if_nametoindex (ACE_TEXT_ALWAYS_CHAR (net_if)); } - else #elif defined (ACE_WIN32) if (net_if != 0) { @@ -790,11 +789,9 @@ ACE_SOCK_Dgram::make_multicast_ifaddr6 (ipv6_mreq *ret_mreq, delete[] buf; // clean up } - else #else /* ACE_WIN32 */ ACE_UNUSED_ARG(net_if); #endif /* ACE_WIN32 */ - lmreq.ipv6mr_interface = 0; // now set the multicast address ACE_OS::memcpy (&lmreq.ipv6mr_multiaddr, @@ -807,6 +804,6 @@ ACE_SOCK_Dgram::make_multicast_ifaddr6 (ipv6_mreq *ret_mreq, return 0; } -#endif /* ACE_LINUX && ACE_HAS_IPV6 */ +#endif /* ACE_HAS_IPV6 */ ACE_END_VERSIONED_NAMESPACE_DECL diff --git a/ACE/ace/config-face-safety.h b/ACE/ace/config-face-safety.h index adfb8ca6630..b06fed1e5b0 100644 --- a/ACE/ace/config-face-safety.h +++ b/ACE/ace/config-face-safety.h @@ -305,7 +305,8 @@ # define ACE_LACKS_FSETPOS # define ACE_LACKS_GETC # define ACE_LACKS_GETTIMEOFDAY -# define ACE_LACKS_IF_NAME_INDEX +# define ACE_LACKS_IF_NAMEINDEX +# define ACE_LACKS_IF_NAMETOINDEX # define ACE_LACKS_IOCTL # define ACE_LACKS_LOCALECONV # define ACE_LACKS_MUNMAP diff --git a/ACE/ace/config-macosx-mojave.h b/ACE/ace/config-macosx-mojave.h index 6b0164b9e33..49bea758a61 100644 --- a/ACE/ace/config-macosx-mojave.h +++ b/ACE/ace/config-macosx-mojave.h @@ -1,6 +1,12 @@ #ifndef ACE_CONFIG_MACOSX_MOJAVE_H #define ACE_CONFIG_MACOSX_MOJAVE_H +// Get access to IPV6_RECVPKTINFO +// See http://lxr.nginx.org/ident?_i=__APPLE_USE_RFC_3542 +#ifndef __APPLE_USE_RFC_3542 +#define __APPLE_USE_RFC_3542 +#endif + #include "ace/config-macosx-highsierra.h" #endif // ACE_CONFIG_MACOSX_MOJAVE_H diff --git a/ACE/ace/config-win32-common.h b/ACE/ace/config-win32-common.h index 3ebb2e45dab..996760bb4b9 100644 --- a/ACE/ace/config-win32-common.h +++ b/ACE/ace/config-win32-common.h @@ -55,10 +55,6 @@ # endif /* !_FILE_OFFSET_BITS */ #endif /* _WIN64 || WIN64 */ -#if !defined (_WIN32_WINNT) -# define _WIN32_WINNT 0x0501 // pretend it's at least Windows XP or Win2003 -#endif - // If the invoking procedure turned off debugging by setting NDEBUG, then // also set ACE_NDEBUG, unless the user has already set it. #if defined (NDEBUG) @@ -566,6 +562,11 @@ # define ACE_WSOCK_VERSION 1, 1 #endif /* ACE_HAS_WINSOCK2 */ +#if _WIN32_WINNT < 0x600 +# define ACE_LACKS_IF_NAMETOINDEX +#endif +#define ACE_LACKS_IF_NAMEINDEX + // Platform supports IP multicast on Winsock 2 #if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) # define ACE_HAS_IP_MULTICAST diff --git a/ACE/ace/os_include/net/os_if.h b/ACE/ace/os_include/net/os_if.h index e3cb6842340..ed85fa93d4d 100644 --- a/ACE/ace/os_include/net/os_if.h +++ b/ACE/ace/os_include/net/os_if.h @@ -40,6 +40,7 @@ #if defined (ACE_HAS_WINSOCK2) && (ACE_HAS_WINSOCK2 != 0) # include /**/ <ws2tcpip.h> +# include /**/ <iphlpapi.h> #endif /* ACE_HAS_WINSOCK2 */ // Place all additions (especially function declarations) within extern "C" {} @@ -101,6 +102,10 @@ struct ifconf { # define IFF_BROADCAST 0x2 #endif /* IFF_BROADCAST */ +#if defined ACE_HAS_WINSOCK2 && defined ACE_LACKS_IF_NAMEINDEX +struct if_nameindex {}; +#endif + #ifdef __cplusplus } #endif /* __cplusplus */ |