From c69f361564dad42d7a854d36e8395f2a48a4b9ac Mon Sep 17 00:00:00 2001 From: Bert Belder Date: Wed, 2 May 2018 02:04:10 +0200 Subject: [PATCH] ws: move ws_get_base_socket() from afd.c to ws.c --- src/afd.c | 25 ++----------------------- src/ws.c | 24 +++++++++++++++++++++++- src/ws.h | 3 +++ 3 files changed, 28 insertions(+), 24 deletions(-) diff --git a/src/afd.c b/src/afd.c index fb8d5b4..29494a2 100644 --- a/src/afd.c +++ b/src/afd.c @@ -3,6 +3,7 @@ #include "nt.h" #include "util.h" #include "win.h" +#include "ws.h" #define FILE_DEVICE_NETWORK 0x00000012 #define METHOD_BUFFERED 0 @@ -13,10 +14,6 @@ #define IOCTL_AFD_POLL _AFD_CONTROL_CODE(AFD_POLL, METHOD_BUFFERED) -#ifndef SIO_BASE_HANDLE -#define SIO_BASE_HANDLE 0x48000022 -#endif - /* clang-format off */ static const GUID _AFD_PROVIDER_GUID_LIST[] = { /* MSAFD Tcpip [TCP+UDP+RAW / IP] */ @@ -103,24 +100,6 @@ int afd_poll(SOCKET driver_socket, return_error(-1, RtlNtStatusToDosError(status)); } -static SOCKET _afd_get_base_socket(SOCKET socket) { - SOCKET base_socket; - DWORD bytes; - - if (WSAIoctl(socket, - SIO_BASE_HANDLE, - NULL, - 0, - &base_socket, - sizeof base_socket, - &bytes, - NULL, - NULL) == SOCKET_ERROR) - return_error(INVALID_SOCKET); - - return base_socket; -} - static int _afd_get_protocol_info(SOCKET socket, WSAPROTOCOL_INFOW* protocol_info) { int opt_len; @@ -166,7 +145,7 @@ WEPOLL_INTERNAL int afd_get_protocol_info(SOCKET socket, if (error != ERROR_DEVICE_FEATURE_NOT_SUPPORTED) return -1; - afd_socket = _afd_get_base_socket(socket); + afd_socket = ws_get_base_socket(socket); if (afd_socket == INVALID_SOCKET || afd_socket == socket) return_error(-1, error); diff --git a/src/ws.c b/src/ws.c index 774a269..bcc63aa 100644 --- a/src/ws.c +++ b/src/ws.c @@ -1,6 +1,10 @@ -#include "ws.h" #include "error.h" #include "win.h" +#include "ws.h" + +#ifndef SIO_BASE_HANDLE +#define SIO_BASE_HANDLE 0x48000022 +#endif int ws_global_init(void) { int r; @@ -12,3 +16,21 @@ int ws_global_init(void) { return 0; } + +SOCKET ws_get_base_socket(SOCKET socket) { + SOCKET base_socket; + DWORD bytes; + + if (WSAIoctl(socket, + SIO_BASE_HANDLE, + NULL, + 0, + &base_socket, + sizeof base_socket, + &bytes, + NULL, + NULL) == SOCKET_ERROR) + return_error(INVALID_SOCKET); + + return base_socket; +} diff --git a/src/ws.h b/src/ws.h index 6be473c..86d50cd 100644 --- a/src/ws.h +++ b/src/ws.h @@ -2,7 +2,10 @@ #define WEPOLL_WS_H_ #include "internal.h" +#include "win.h" WEPOLL_INTERNAL int ws_global_init(void); +WEPOLL_INTERNAL SOCKET ws_get_base_socket(SOCKET socket); + #endif /* WEPOLL_WS_H_ */