ws2_32: Add debug support for IPv6 addresses (try 2)
Juan Lang
juan.lang at gmail.com
Mon Aug 3 11:37:51 CDT 2009
Is this what you had in mind? I could also return a symbolic value in
the default case, but I felt that'd clutter the code unnecessarily.
--Juan
-------------- next part --------------
From 3a27d73f73dbcecfcde9404212219e400d2350f2 Mon Sep 17 00:00:00 2001
From: Juan Lang <juan.lang at gmail.com>
Date: Mon, 3 Aug 2009 09:33:02 -0700
Subject: [PATCH 7/9] 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 9935e42..19cb042 100644
--- a/dlls/ws2_32/socket.c
+++ b/dlls/ws2_32/socket.c
@@ -179,10 +179,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). */
--
1.6.3.2
More information about the wine-patches
mailing list