ws: move ws_get_base_socket() from afd.c to ws.c

This commit is contained in:
Bert Belder 2018-05-02 02:04:10 +02:00
parent ba343a0898
commit c69f361564
No known key found for this signature in database
GPG Key ID: 7A77887B2E2ED461
3 changed files with 28 additions and 24 deletions

View File

@ -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);

View File

@ -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;
}

View File

@ -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_ */