Module: wine Branch: master Commit: 90c52c0180e2223fafb93b796751f738bd120c64 URL: http://source.winehq.org/git/wine.git/?a=commit;h=90c52c0180e2223fafb93b7967...
Author: Juan Lang juan.lang@gmail.com Date: Mon Aug 3 09:33:02 2009 -0700
ws2_32: Add debug support for IPv6 addresses.
---
dlls/ws2_32/socket.c | 25 +++++++++++++++++++++---- 1 files changed, 21 insertions(+), 4 deletions(-)
diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 2eb5837..a601521 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -170,10 +170,27 @@ union generic_unix_sockaddr static inline const char *debugstr_sockaddr( const struct WS_sockaddr *a ) { if (!a) return "(nil)"; - return wine_dbg_sprintf("{ family %d, address %s, port %d }", - ((const struct sockaddr_in *)a)->sin_family, - inet_ntoa(((const struct sockaddr_in *)a)->sin_addr), - ntohs(((const struct sockaddr_in *)a)->sin_port)); + switch (a->sa_family) + { + case WS_AF_INET: + return wine_dbg_sprintf("{ family AF_INET, address %s, port %d }", + inet_ntoa(((const struct sockaddr_in *)a)->sin_addr), + ntohs(((const struct sockaddr_in *)a)->sin_port)); + case WS_AF_INET6: + { + char buf[46]; + const char *p; + struct WS_sockaddr_in6 *sin = (struct WS_sockaddr_in6 *)a; + + p = WS_inet_ntop( WS_AF_INET6, &sin->sin6_addr, buf, sizeof(buf) ); + if (!p) + p = "(unknown IPv6 address)"; + return wine_dbg_sprintf("{ family AF_INET6, address %s, port %d }", + p, ntohs(sin->sin6_port)); + } + default: + return wine_dbg_sprintf("{ family %d }", a->sa_family); + } }
/* HANDLE<->SOCKET conversion (SOCKET is UINT_PTR). */