Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 8 ++++++++ dlls/ws2_32/socket.c | 4 ++-- include/wine/afd.h | 1 + 3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index a3e0cb339e6..f862aa3e21b 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1770,6 +1770,14 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc case IOCTL_AFD_WINE_SET_IP_OPTIONS: return do_setsockopt( handle, io, IPPROTO_IP, IP_OPTIONS, in_buffer, in_size );
+#ifdef IP_PKTINFO + case IOCTL_AFD_WINE_GET_IP_PKTINFO: + return do_getsockopt( handle, io, IPPROTO_IP, IP_PKTINFO, out_buffer, out_size ); +#elif defined(IP_RECVDSTADDR) + case IOCTL_AFD_WINE_GET_IP_PKTINFO: + return do_getsockopt( handle, io, IPPROTO_IP, IP_RECVDSTADDR, out_buffer, out_size ); +#endif + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 9aaef3e595f..1cd1934a11e 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2451,9 +2451,9 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, case WS_IP_OPTIONS: return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_OPTIONS, optval, optlen );
-#if defined(IP_PKTINFO) || defined(IP_RECVDSTADDR) case WS_IP_PKTINFO: -#endif + return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_PKTINFO, optval, optlen ); + case WS_IP_TOS: case WS_IP_TTL: #ifdef IP_UNICAST_IF diff --git a/include/wine/afd.h b/include/wine/afd.h index 37969f5fbf6..3522e2444f5 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -198,6 +198,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_SET_IP_MULTICAST_TTL WINE_AFD_IOC(253) #define IOCTL_AFD_WINE_GET_IP_OPTIONS WINE_AFD_IOC(254) #define IOCTL_AFD_WINE_SET_IP_OPTIONS WINE_AFD_IOC(255) +#define IOCTL_AFD_WINE_GET_IP_PKTINFO WINE_AFD_IOC(256)
struct afd_create_params {
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 6 ++++++ dlls/ws2_32/socket.c | 6 +++--- include/wine/afd.h | 1 + 3 files changed, 10 insertions(+), 3 deletions(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index f862aa3e21b..a727841e917 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1773,9 +1773,15 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc #ifdef IP_PKTINFO case IOCTL_AFD_WINE_GET_IP_PKTINFO: return do_getsockopt( handle, io, IPPROTO_IP, IP_PKTINFO, out_buffer, out_size ); + + case IOCTL_AFD_WINE_SET_IP_PKTINFO: + return do_setsockopt( handle, io, IPPROTO_IP, IP_PKTINFO, in_buffer, in_size ); #elif defined(IP_RECVDSTADDR) case IOCTL_AFD_WINE_GET_IP_PKTINFO: return do_getsockopt( handle, io, IPPROTO_IP, IP_RECVDSTADDR, out_buffer, out_size ); + + case IOCTL_AFD_WINE_SET_IP_PKTINFO: + return do_setsockopt( handle, io, IPPROTO_IP, IP_RECVDSTADDR, in_buffer, in_size ); #endif
default: diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 1cd1934a11e..37f72c9d62e 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3666,6 +3666,9 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, case WS_IP_OPTIONS: return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_OPTIONS, optval, optlen );
+ case WS_IP_PKTINFO: + return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_PKTINFO, optval, optlen ); + case WS_IP_UNBLOCK_SOURCE: { WS_IP_MREQ_SOURCE* val = (void*)optval; @@ -3679,9 +3682,6 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, convert_sockopt(&level, &optname); break; } -#if defined(IP_PKTINFO) || defined(IP_RECVDSTADDR) - case WS_IP_PKTINFO: -#endif case WS_IP_TOS: case WS_IP_TTL: #ifdef IP_UNICAST_IF diff --git a/include/wine/afd.h b/include/wine/afd.h index 3522e2444f5..fde0fe6db94 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -199,6 +199,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_GET_IP_OPTIONS WINE_AFD_IOC(254) #define IOCTL_AFD_WINE_SET_IP_OPTIONS WINE_AFD_IOC(255) #define IOCTL_AFD_WINE_GET_IP_PKTINFO WINE_AFD_IOC(256) +#define IOCTL_AFD_WINE_SET_IP_PKTINFO WINE_AFD_IOC(257)
struct afd_create_params {
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 2 ++ include/wine/afd.h | 1 + 3 files changed, 6 insertions(+)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index a727841e917..89d1719d4f5 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1784,6 +1784,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc return do_setsockopt( handle, io, IPPROTO_IP, IP_RECVDSTADDR, in_buffer, in_size ); #endif
+ case IOCTL_AFD_WINE_GET_IP_TOS: + return do_getsockopt( handle, io, IPPROTO_IP, IP_TOS, out_buffer, out_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 37f72c9d62e..7f0e1dfeff2 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2455,6 +2455,8 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_PKTINFO, optval, optlen );
case WS_IP_TOS: + return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_TOS, optval, optlen ); + case WS_IP_TTL: #ifdef IP_UNICAST_IF case WS_IP_UNICAST_IF: diff --git a/include/wine/afd.h b/include/wine/afd.h index fde0fe6db94..24f4ffb9d08 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -200,6 +200,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_SET_IP_OPTIONS WINE_AFD_IOC(255) #define IOCTL_AFD_WINE_GET_IP_PKTINFO WINE_AFD_IOC(256) #define IOCTL_AFD_WINE_SET_IP_PKTINFO WINE_AFD_IOC(257) +#define IOCTL_AFD_WINE_GET_IP_TOS WINE_AFD_IOC(258)
struct afd_create_params {
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 4 +++- include/wine/afd.h | 1 + 3 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 89d1719d4f5..559afb71eb8 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1787,6 +1787,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc case IOCTL_AFD_WINE_GET_IP_TOS: return do_getsockopt( handle, io, IPPROTO_IP, IP_TOS, out_buffer, out_size );
+ case IOCTL_AFD_WINE_SET_IP_TOS: + return do_setsockopt( handle, io, IPPROTO_IP, IP_TOS, in_buffer, in_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index 7f0e1dfeff2..d29931f2a76 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -3671,6 +3671,9 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, case WS_IP_PKTINFO: return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_PKTINFO, optval, optlen );
+ case WS_IP_TOS: + return server_setsockopt( s, IOCTL_AFD_WINE_SET_IP_TOS, optval, optlen ); + case WS_IP_UNBLOCK_SOURCE: { WS_IP_MREQ_SOURCE* val = (void*)optval; @@ -3684,7 +3687,6 @@ int WINAPI WS_setsockopt(SOCKET s, int level, int optname, convert_sockopt(&level, &optname); break; } - case WS_IP_TOS: case WS_IP_TTL: #ifdef IP_UNICAST_IF case WS_IP_UNICAST_IF: diff --git a/include/wine/afd.h b/include/wine/afd.h index 24f4ffb9d08..26276d9c909 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -201,6 +201,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_GET_IP_PKTINFO WINE_AFD_IOC(256) #define IOCTL_AFD_WINE_SET_IP_PKTINFO WINE_AFD_IOC(257) #define IOCTL_AFD_WINE_GET_IP_TOS WINE_AFD_IOC(258) +#define IOCTL_AFD_WINE_SET_IP_TOS WINE_AFD_IOC(259)
struct afd_create_params {
Signed-off-by: Zebediah Figura zfigura@codeweavers.com --- dlls/ntdll/unix/socket.c | 3 +++ dlls/ws2_32/socket.c | 2 ++ include/wine/afd.h | 1 + 3 files changed, 6 insertions(+)
diff --git a/dlls/ntdll/unix/socket.c b/dlls/ntdll/unix/socket.c index 559afb71eb8..c38f4f53089 100644 --- a/dlls/ntdll/unix/socket.c +++ b/dlls/ntdll/unix/socket.c @@ -1790,6 +1790,9 @@ NTSTATUS sock_ioctl( HANDLE handle, HANDLE event, PIO_APC_ROUTINE apc, void *apc case IOCTL_AFD_WINE_SET_IP_TOS: return do_setsockopt( handle, io, IPPROTO_IP, IP_TOS, in_buffer, in_size );
+ case IOCTL_AFD_WINE_GET_IP_TTL: + return do_getsockopt( handle, io, IPPROTO_IP, IP_TTL, out_buffer, out_size ); + default: { if ((code >> 16) == FILE_DEVICE_NETWORK) diff --git a/dlls/ws2_32/socket.c b/dlls/ws2_32/socket.c index d29931f2a76..fac19355705 100644 --- a/dlls/ws2_32/socket.c +++ b/dlls/ws2_32/socket.c @@ -2458,6 +2458,8 @@ INT WINAPI WS_getsockopt(SOCKET s, INT level, return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_TOS, optval, optlen );
case WS_IP_TTL: + return server_getsockopt( s, IOCTL_AFD_WINE_GET_IP_TTL, optval, optlen ); + #ifdef IP_UNICAST_IF case WS_IP_UNICAST_IF: #endif diff --git a/include/wine/afd.h b/include/wine/afd.h index 26276d9c909..9e1802d5833 100644 --- a/include/wine/afd.h +++ b/include/wine/afd.h @@ -202,6 +202,7 @@ struct afd_get_events_params #define IOCTL_AFD_WINE_SET_IP_PKTINFO WINE_AFD_IOC(257) #define IOCTL_AFD_WINE_GET_IP_TOS WINE_AFD_IOC(258) #define IOCTL_AFD_WINE_SET_IP_TOS WINE_AFD_IOC(259) +#define IOCTL_AFD_WINE_GET_IP_TTL WINE_AFD_IOC(260)
struct afd_create_params {