diff options
-rw-r--r-- | src/libcharon/plugins/socket_win/socket_win_plugin.c | 1 | ||||
-rw-r--r-- | src/libcharon/plugins/socket_win/socket_win_socket.c | 11 |
2 files changed, 12 insertions, 0 deletions
diff --git a/src/libcharon/plugins/socket_win/socket_win_plugin.c b/src/libcharon/plugins/socket_win/socket_win_plugin.c index 4c5ffe03c..a0ef0858a 100644 --- a/src/libcharon/plugins/socket_win/socket_win_plugin.c +++ b/src/libcharon/plugins/socket_win/socket_win_plugin.c @@ -49,6 +49,7 @@ METHOD(plugin_t, get_features, int, static plugin_feature_t f[] = { PLUGIN_CALLBACK(socket_register, socket_win_socket_create), PLUGIN_PROVIDE(CUSTOM, "socket"), + PLUGIN_DEPENDS(CUSTOM, "kernel-ipsec"), }; *features = f; return countof(f); diff --git a/src/libcharon/plugins/socket_win/socket_win_socket.c b/src/libcharon/plugins/socket_win/socket_win_socket.c index 473b05313..2cd951d8f 100644 --- a/src/libcharon/plugins/socket_win/socket_win_socket.c +++ b/src/libcharon/plugins/socket_win/socket_win_socket.c @@ -19,6 +19,7 @@ #include "socket_win_socket.h" #include <library.h> +#include <hydra.h> #include <threading/thread.h> #include <daemon.h> @@ -424,6 +425,16 @@ static SOCKET open_socket(private_socket_win_socket_t *this, int i) closesocket(s); return INVALID_SOCKET; } + if (!hydra->kernel_interface->bypass_socket(hydra->kernel_interface, + s, AF_INET)) + { + DBG1(DBG_NET, "installing IPv4 IKE bypass policy failed"); + } + if (!hydra->kernel_interface->bypass_socket(hydra->kernel_interface, + s, AF_INET6)) + { + DBG1(DBG_NET, "installing IPv6 IKE bypass policy failed"); + } return s; } |