fixup: remove win, return ENOSYS
Signed-off-by: Juan José Arboleda <soyjuanarbol@gmail.com>
This commit is contained in:
parent
4aba788094
commit
7a6d93159b
@ -196,8 +196,7 @@ if(WIN32)
|
|||||||
ws2_32
|
ws2_32
|
||||||
dbghelp
|
dbghelp
|
||||||
ole32
|
ole32
|
||||||
shell32
|
shell32)
|
||||||
qwave)
|
|
||||||
list(APPEND uv_sources
|
list(APPEND uv_sources
|
||||||
src/win/async.c
|
src/win/async.c
|
||||||
src/win/core.c
|
src/win/core.c
|
||||||
|
|||||||
@ -32,8 +32,6 @@
|
|||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
# include <malloc.h> /* malloc */
|
# include <malloc.h> /* malloc */
|
||||||
# include <qos2.h>
|
|
||||||
# include <winsock.h>
|
|
||||||
#else
|
#else
|
||||||
# include <net/if.h> /* if_nametoindex */
|
# include <net/if.h> /* if_nametoindex */
|
||||||
# include <sys/un.h> /* AF_UNIX, sockaddr_un */
|
# include <sys/un.h> /* AF_UNIX, sockaddr_un */
|
||||||
@ -1075,6 +1073,10 @@ int uv_socket_get_tos(const uv_handle_t* handle, int* tos) {
|
|||||||
socklen_t optlen;
|
socklen_t optlen;
|
||||||
struct sockaddr_storage storage;
|
struct sockaddr_storage storage;
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
return UV_ENOSYS;
|
||||||
|
#endif
|
||||||
|
|
||||||
addrlen = sizeof(storage);
|
addrlen = sizeof(storage);
|
||||||
tos_ = 0;
|
tos_ = 0;
|
||||||
optlen = sizeof(tos_);
|
optlen = sizeof(tos_);
|
||||||
@ -1114,11 +1116,7 @@ int uv_socket_get_tos(const uv_handle_t* handle, int* tos) {
|
|||||||
return UV_EAFNOSUPPORT;
|
return UV_EAFNOSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(_WIN32)
|
|
||||||
r = getsockopt(fd, level, option, (char*)&tos_, &optlen);
|
|
||||||
#else
|
|
||||||
r = getsockopt(fd, level, option, &tos_, &optlen);
|
r = getsockopt(fd, level, option, &tos_, &optlen);
|
||||||
#endif
|
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
@ -1135,6 +1133,10 @@ int uv_socket_set_tos(const uv_handle_t* handle, int tos) {
|
|||||||
int level;
|
int level;
|
||||||
int option;
|
int option;
|
||||||
|
|
||||||
|
#if defined(_WIN32)
|
||||||
|
return UV_ENOSYS;
|
||||||
|
#endif
|
||||||
|
|
||||||
addrlen = sizeof(storage);
|
addrlen = sizeof(storage);
|
||||||
|
|
||||||
if (tos < 0 || tos > 255)
|
if (tos < 0 || tos > 255)
|
||||||
@ -1171,37 +1173,6 @@ int uv_socket_set_tos(const uv_handle_t* handle, int tos) {
|
|||||||
return UV_EAFNOSUPPORT;
|
return UV_EAFNOSUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef _WIN32
|
|
||||||
r = setsockopt(fd, level, option, &tos, sizeof(tos));
|
r = setsockopt(fd, level, option, &tos, sizeof(tos));
|
||||||
return UV__ERR(r);
|
return UV__ERR(r);
|
||||||
#else
|
|
||||||
HANDLE qosHandle = NULL;
|
|
||||||
QOS_VERSION version = {1, 0};
|
|
||||||
QOS_FLOWID flowId = 0;
|
|
||||||
DWORD dscpValue = (DWORD)tos;
|
|
||||||
SOCKET socket = (SOCKET)fd;
|
|
||||||
|
|
||||||
/* NOTE: I'm using setsockopt here to set the TOS value directly on the socket as UNIX.
|
|
||||||
* I'm not too worried about this one, let's use the QOS API as a backup plan.
|
|
||||||
*/
|
|
||||||
setsockopt(fd, level, option, (char*)&tos, sizeof(tos));
|
|
||||||
|
|
||||||
if (storage.ss_family == AF_UNSPEC) {
|
|
||||||
/* Can't set DSCP on an unspecified address */
|
|
||||||
return UV_ENOTCONN;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Do the same thing using QOS APIs just to be sure */
|
|
||||||
if (QOSCreateHandle(&version, &qosHandle)) {
|
|
||||||
if(QOSAddSocketToFlow(qosHandle, socket, NULL, QOSTrafficTypeBestEffort, 0, &flowId)) {
|
|
||||||
QOSSetFlow(qosHandle, flowId, QOSSetOutgoingDSCPValue, sizeof(dscpValue), &dscpValue, 0, NULL);
|
|
||||||
} else {
|
|
||||||
int err = WSAGetLastError();
|
|
||||||
printf("QOSAddSocketToFlow failed with error: %d\n", err);
|
|
||||||
}
|
|
||||||
QOSCloseHandle(qosHandle);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -19,8 +19,8 @@
|
|||||||
* IN THE SOFTWARE.
|
* IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "task.h"
|
|
||||||
#include "uv.h"
|
#include "uv.h"
|
||||||
|
#include "task.h"
|
||||||
|
|
||||||
static void setup_tcp(uv_loop_t* loop, uv_tcp_t* tcp, const char* ip,
|
static void setup_tcp(uv_loop_t* loop, uv_tcp_t* tcp, const char* ip,
|
||||||
int is_ip6) {
|
int is_ip6) {
|
||||||
@ -86,6 +86,9 @@ static void check_tos_fail(uv_handle_t* handle, int tos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(tcp_socket_set_get_tos) {
|
TEST_IMPL(tcp_socket_set_get_tos) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS");
|
||||||
|
#endif
|
||||||
uv_tcp_t tcp;
|
uv_tcp_t tcp;
|
||||||
|
|
||||||
setup_tcp(uv_default_loop(), &tcp, "0.0.0.0", 0);
|
setup_tcp(uv_default_loop(), &tcp, "0.0.0.0", 0);
|
||||||
@ -106,6 +109,9 @@ TEST_IMPL(tcp_socket_set_get_tos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(tcp6_socket_set_get_tos) {
|
TEST_IMPL(tcp6_socket_set_get_tos) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS");
|
||||||
|
#endif
|
||||||
uv_tcp_t tcp;
|
uv_tcp_t tcp;
|
||||||
|
|
||||||
setup_tcp(uv_default_loop(), &tcp, "::1", 1);
|
setup_tcp(uv_default_loop(), &tcp, "::1", 1);
|
||||||
@ -122,6 +128,9 @@ TEST_IMPL(tcp6_socket_set_get_tos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(udp_socket_set_get_tos) {
|
TEST_IMPL(udp_socket_set_get_tos) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS");
|
||||||
|
#endif
|
||||||
uv_udp_t udp;
|
uv_udp_t udp;
|
||||||
|
|
||||||
setup_udp(uv_default_loop(), &udp, "0.0.0.0", 0);
|
setup_udp(uv_default_loop(), &udp, "0.0.0.0", 0);
|
||||||
@ -141,6 +150,9 @@ TEST_IMPL(udp_socket_set_get_tos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(udp6_socket_set_get_tos) {
|
TEST_IMPL(udp6_socket_set_get_tos) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS");
|
||||||
|
#endif
|
||||||
uv_udp_t udp;
|
uv_udp_t udp;
|
||||||
|
|
||||||
setup_udp(uv_default_loop(), &udp, "::1", 1);
|
setup_udp(uv_default_loop(), &udp, "::1", 1);
|
||||||
@ -157,6 +169,9 @@ TEST_IMPL(udp6_socket_set_get_tos) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(socket_tos_invalid_handle) {
|
TEST_IMPL(socket_tos_invalid_handle) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS");
|
||||||
|
#endif
|
||||||
uv_timer_t timer;
|
uv_timer_t timer;
|
||||||
int r;
|
int r;
|
||||||
int tos;
|
int tos;
|
||||||
@ -181,6 +196,9 @@ TEST_IMPL(socket_tos_invalid_handle) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
TEST_IMPL(socket_tos_unbound_tcp) {
|
TEST_IMPL(socket_tos_unbound_tcp) {
|
||||||
|
#if defined(_WIN32)
|
||||||
|
RETURN_SKIP("Windows does not support setting TOS on UDP sockets");
|
||||||
|
#endif
|
||||||
uv_tcp_t tcp;
|
uv_tcp_t tcp;
|
||||||
int r;
|
int r;
|
||||||
int tos;
|
int tos;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user