From 697ef44e1ce78e5c93ddb76252da95816d7429cd Mon Sep 17 00:00:00 2001 From: Christopher Kohlhoff Date: Sat, 2 Feb 2008 12:02:23 +0000 Subject: [PATCH] The latest Windows SDKs don't support IPv6 when building for Windows 2000, so we need to use the SDK emulation in that case. [SVN r43056] --- include/boost/asio/detail/old_win_sdk_compat.hpp | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/include/boost/asio/detail/old_win_sdk_compat.hpp b/include/boost/asio/detail/old_win_sdk_compat.hpp index 1daacacc..707177bb 100644 --- a/include/boost/asio/detail/old_win_sdk_compat.hpp +++ b/include/boost/asio/detail/old_win_sdk_compat.hpp @@ -31,6 +31,10 @@ #if defined(BOOST_ASIO_HAS_OLD_WIN_SDK) // Emulation of types that are missing from old Platform SDKs. +// +// N.B. this emulation is also used if building for a Windows 2000 target with +// a recent (i.e. Vista or later) SDK, as the SDK does not provide IPv6 support +// in that case. namespace boost { namespace asio { @@ -55,9 +59,19 @@ struct sockaddr_storage_emulation struct in6_addr_emulation { - u_char s6_addr[16]; + union + { + u_char Byte[16]; + u_short Word[8]; + } u; }; +#if !defined(s6_addr) +# define _S6_un u +# define _S6_u8 Byte +# define s6_addr _S6_un._S6_u8 +#endif // !defined(s6_addr) + struct sockaddr_in6_emulation { short sin6_family;