summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Mitz <mitza@objectcomputing.com>2020-04-16 16:21:28 -0500
committerGitHub <noreply@github.com>2020-04-16 16:21:28 -0500
commite8b8245004ddf3874ab2079c4feddf70fe7a5be8 (patch)
tree3174e96da901331a89b8de39031d4a94eb987ac6
parent0031eb38fb74419738d7a7e2bdc5d3c686f465c4 (diff)
parent509b105b343eeffe57504562e4cdd96c23414cf8 (diff)
downloadATCD-e8b8245004ddf3874ab2079c4feddf70fe7a5be8.tar.gz
Merge pull request #1069 from jrw972/ipv6-recvinfo-macos
IPv6 and RECVINFO on macOS; Windows if_nametoindex
-rw-r--r--ACE/NEWS6
-rw-r--r--ACE/ace/OS_NS_sys_socket.h6
-rw-r--r--ACE/ace/OS_NS_sys_socket.inl18
-rw-r--r--ACE/ace/SOCK_Dgram.cpp9
-rw-r--r--ACE/ace/config-face-safety.h3
-rw-r--r--ACE/ace/config-macosx-mojave.h6
-rw-r--r--ACE/ace/config-win32-common.h9
-rw-r--r--ACE/ace/os_include/net/os_if.h5
8 files changed, 36 insertions, 26 deletions
diff --git a/ACE/NEWS b/ACE/NEWS
index ac7a0a7cc66..8408097a097 100644
--- a/ACE/NEWS
+++ b/ACE/NEWS
@@ -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 */