Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
W
wine-winehq
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
wine
wine-winehq
Commits
846febbc
Commit
846febbc
authored
Apr 02, 2015
by
Bruno Jesus
Committed by
Alexandre Julliard
Apr 03, 2015
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ws2_32: Better trace setsockopt/getsockopt.
parent
46198a5f
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
130 additions
and
4 deletions
+130
-4
socket.c
dlls/ws2_32/socket.c
+130
-4
No files found.
dlls/ws2_32/socket.c
View file @
846febbc
...
...
@@ -322,6 +322,130 @@ static inline const char *debugstr_sockaddr( const struct WS_sockaddr *a )
}
}
static
inline
const
char
*
debugstr_sockopt
(
int
level
,
int
optname
)
{
const
char
*
stropt
=
NULL
,
*
strlevel
=
NULL
;
#define DEBUG_SOCKLEVEL(x) case (x): strlevel = #x
#define DEBUG_SOCKOPT(x) case (x): stropt = #x; break
switch
(
level
)
{
DEBUG_SOCKLEVEL
(
WS_SOL_SOCKET
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_SO_ACCEPTCONN
);
DEBUG_SOCKOPT
(
WS_SO_BROADCAST
);
DEBUG_SOCKOPT
(
WS_SO_BSP_STATE
);
DEBUG_SOCKOPT
(
WS_SO_CONDITIONAL_ACCEPT
);
DEBUG_SOCKOPT
(
WS_SO_CONNECT_TIME
);
DEBUG_SOCKOPT
(
WS_SO_DEBUG
);
DEBUG_SOCKOPT
(
WS_SO_DONTLINGER
);
DEBUG_SOCKOPT
(
WS_SO_DONTROUTE
);
DEBUG_SOCKOPT
(
WS_SO_ERROR
);
DEBUG_SOCKOPT
(
WS_SO_EXCLUSIVEADDRUSE
);
DEBUG_SOCKOPT
(
WS_SO_GROUP_ID
);
DEBUG_SOCKOPT
(
WS_SO_GROUP_PRIORITY
);
DEBUG_SOCKOPT
(
WS_SO_KEEPALIVE
);
DEBUG_SOCKOPT
(
WS_SO_LINGER
);
DEBUG_SOCKOPT
(
WS_SO_MAX_MSG_SIZE
);
DEBUG_SOCKOPT
(
WS_SO_OOBINLINE
);
DEBUG_SOCKOPT
(
WS_SO_OPENTYPE
);
DEBUG_SOCKOPT
(
WS_SO_PROTOCOL_INFOA
);
DEBUG_SOCKOPT
(
WS_SO_PROTOCOL_INFOW
);
DEBUG_SOCKOPT
(
WS_SO_RCVBUF
);
DEBUG_SOCKOPT
(
WS_SO_RCVTIMEO
);
DEBUG_SOCKOPT
(
WS_SO_REUSEADDR
);
DEBUG_SOCKOPT
(
WS_SO_SNDBUF
);
DEBUG_SOCKOPT
(
WS_SO_SNDTIMEO
);
DEBUG_SOCKOPT
(
WS_SO_TYPE
);
}
break
;
DEBUG_SOCKLEVEL
(
WS_NSPROTO_IPX
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_IPX_PTYPE
);
DEBUG_SOCKOPT
(
WS_IPX_FILTERPTYPE
);
DEBUG_SOCKOPT
(
WS_IPX_DSTYPE
);
DEBUG_SOCKOPT
(
WS_IPX_RECVHDR
);
DEBUG_SOCKOPT
(
WS_IPX_MAXSIZE
);
DEBUG_SOCKOPT
(
WS_IPX_ADDRESS
);
DEBUG_SOCKOPT
(
WS_IPX_MAX_ADAPTER_NUM
);
}
break
;
DEBUG_SOCKLEVEL
(
WS_SOL_IRLMP
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_IRLMP_ENUMDEVICES
);
}
break
;
DEBUG_SOCKLEVEL
(
WS_IPPROTO_TCP
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_TCP_BSDURGENT
);
DEBUG_SOCKOPT
(
WS_TCP_EXPEDITED_1122
);
DEBUG_SOCKOPT
(
WS_TCP_NODELAY
);
}
break
;
DEBUG_SOCKLEVEL
(
WS_IPPROTO_IP
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_IP_ADD_MEMBERSHIP
);
DEBUG_SOCKOPT
(
WS_IP_DROP_MEMBERSHIP
);
DEBUG_SOCKOPT
(
WS_IP_HDRINCL
);
DEBUG_SOCKOPT
(
WS_IP_MULTICAST_IF
);
DEBUG_SOCKOPT
(
WS_IP_MULTICAST_LOOP
);
DEBUG_SOCKOPT
(
WS_IP_MULTICAST_TTL
);
DEBUG_SOCKOPT
(
WS_IP_OPTIONS
);
DEBUG_SOCKOPT
(
WS_IP_PKTINFO
);
DEBUG_SOCKOPT
(
WS_IP_TOS
);
DEBUG_SOCKOPT
(
WS_IP_TTL
);
DEBUG_SOCKOPT
(
WS_IP_UNICAST_IF
);
DEBUG_SOCKOPT
(
WS_IP_DONTFRAGMENT
);
}
break
;
DEBUG_SOCKLEVEL
(
WS_IPPROTO_IPV6
);
switch
(
optname
)
{
DEBUG_SOCKOPT
(
WS_IPV6_ADD_MEMBERSHIP
);
DEBUG_SOCKOPT
(
WS_IPV6_DROP_MEMBERSHIP
);
DEBUG_SOCKOPT
(
WS_IPV6_MULTICAST_IF
);
DEBUG_SOCKOPT
(
WS_IPV6_MULTICAST_HOPS
);
DEBUG_SOCKOPT
(
WS_IPV6_MULTICAST_LOOP
);
DEBUG_SOCKOPT
(
WS_IPV6_UNICAST_HOPS
);
DEBUG_SOCKOPT
(
WS_IPV6_V6ONLY
);
DEBUG_SOCKOPT
(
WS_IPV6_UNICAST_IF
);
DEBUG_SOCKOPT
(
WS_IPV6_DONTFRAG
);
}
break
;
}
#undef DEBUG_SOCKLEVEL
#undef DEBUG_SOCKOPT
if
(
!
strlevel
)
strlevel
=
wine_dbg_sprintf
(
"WS_0x%x"
,
level
);
if
(
!
stropt
)
stropt
=
wine_dbg_sprintf
(
"WS_0x%x"
,
optname
);
return
wine_dbg_sprintf
(
"level %s, name %s"
,
strlevel
+
3
,
stropt
+
3
);
}
static
inline
const
char
*
debugstr_optval
(
const
char
*
optval
,
int
optlenval
)
{
if
(
optval
&&
!
IS_INTRESOURCE
(
optval
)
&&
optlenval
>=
1
&&
optlenval
<=
sizeof
(
DWORD
))
{
DWORD
value
=
0
;
memcpy
(
&
value
,
optval
,
optlenval
);
return
wine_dbg_sprintf
(
"%p (%u)"
,
optval
,
value
);
}
return
wine_dbg_sprintf
(
"%p"
,
optval
);
}
/* HANDLE<->SOCKET conversion (SOCKET is UINT_PTR). */
#define SOCKET2HANDLE(s) ((HANDLE)(s))
#define HANDLE2SOCKET(h) ((SOCKET)(h))
...
...
@@ -3147,8 +3271,9 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level,
int
fd
;
INT
ret
=
0
;
TRACE
(
"socket %04lx, level 0x%x, name 0x%x, ptr %p, len %d
\n
"
,
s
,
level
,
optname
,
optval
,
optlen
?
*
optlen
:
0
);
TRACE
(
"(socket %04lx, %s, optval %s, optlen %p (%d))
\n
"
,
s
,
debugstr_sockopt
(
level
,
optname
),
debugstr_optval
(
optval
,
0
),
optlen
,
optlen
?
*
optlen
:
0
);
switch
(
level
)
{
...
...
@@ -4955,8 +5080,9 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname,
struct
linger
linger
;
struct
timeval
tval
;
TRACE
(
"socket %04lx, level 0x%x, name 0x%x, ptr %p, len %d
\n
"
,
s
,
level
,
optname
,
optval
,
optlen
);
TRACE
(
"(socket %04lx, %s, optval %s, optlen %d)
\n
"
,
s
,
debugstr_sockopt
(
level
,
optname
),
debugstr_optval
(
optval
,
optlen
),
optlen
);
/* some broken apps pass the value directly instead of a pointer to it */
if
(
optlen
&&
IS_INTRESOURCE
(
optval
))
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment