Attention is currently required from: flichtenheld, plaisthos.
Hello flichtenheld, plaisthos,
I'd like you to reexamine a change. Please visit
http://gerrit.openvpn.net/c/openvpn/+/812?usp=email
to look at the new patch set (#4).
Change subject: dco-win: enable mode server on supported configuration
......................................................................
dco-win: enable mode server on supported configuration
Enable dco-win with mode server if driver supports it.
Disable for proto TCP or older drivers.
Change-Id: Iea4538cee075d50de836d1ef7652985186b2527c
Signed-off-by: Lev Stipakov <[email protected]>
---
M src/openvpn/dco.c
M src/openvpn/dco_win.c
M src/openvpn/dco_win.h
3 files changed, 27 insertions(+), 7 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/12/812/4
diff --git a/src/openvpn/dco.c b/src/openvpn/dco.c
index dcc80d3..512da25 100644
--- a/src/openvpn/dco.c
+++ b/src/openvpn/dco.c
@@ -43,6 +43,10 @@
#include "tun.h"
#include "tun_afunix.h"
+#if defined(_WIN32)
+#include "dco_win.h"
+#endif
+
#ifdef HAVE_LIBCAPNG
#include <cap-ng.h>
#endif
@@ -235,7 +239,7 @@
}
static bool
-dco_check_option_ce(const struct connection_entry *ce, int msglevel)
+dco_check_option_ce(const struct connection_entry *ce, int msglevel, int mode)
{
if (ce->fragment)
{
@@ -264,9 +268,15 @@
#endif
#if defined(_WIN32)
- if (!ce->remote)
+ if (!proto_is_udp(ce->proto) && mode == MODE_SERVER)
{
- msg(msglevel, "NOTE: --remote is not defined, disabling data channel
offload.");
+ msg(msglevel, "NOTE: TCP transport disables data channel offload on
Windows in server mode.");
+ return false;
+ }
+
+ if (!ce->remote && !dco_win_supports_multipeer())
+ {
+ msg(msglevel, "NOTE: --remote is not defined. This DCO version doesn't
support multipeer. Disabling Data Channel Offload");
return false;
}
#endif
@@ -316,7 +326,7 @@
const struct connection_list *l = o->connection_list;
for (int i = 0; i < l->len; ++i)
{
- if (!dco_check_option_ce(l->array[i], msglevel))
+ if (!dco_check_option_ce(l->array[i], msglevel, o->mode))
{
return false;
}
@@ -324,16 +334,16 @@
}
else
{
- if (!dco_check_option_ce(&o->ce, msglevel))
+ if (!dco_check_option_ce(&o->ce, msglevel, o->mode))
{
return false;
}
}
#if defined(_WIN32)
- if (o->mode == MODE_SERVER)
+ if ((o->mode == MODE_SERVER) && !dco_win_supports_multipeer())
{
- msg(msglevel, "--mode server is set. Disabling Data Channel Offload");
+ msg(msglevel, "--mode server is set. This DCO version doesn't support
multipeer. Disabling Data Channel Offload");
return false;
}
diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c
index f59bf8c..a1ccdf7 100644
--- a/src/openvpn/dco_win.c
+++ b/src/openvpn/dco_win.c
@@ -523,4 +523,11 @@
}
}
+bool
+dco_win_supports_multipeer()
+{
+ OVPN_VERSION ver = { 0 };
+ return dco_get_version(&ver) && ver.Major >= 2;
+}
+
#endif /* defined(_WIN32) */
diff --git a/src/openvpn/dco_win.h b/src/openvpn/dco_win.h
index 4883629..a28436c 100644
--- a/src/openvpn/dco_win.h
+++ b/src/openvpn/dco_win.h
@@ -48,6 +48,9 @@
void
dco_start_tun(struct tuntap *tt);
+bool
+dco_win_supports_multipeer();
+
#else /* if defined(ENABLE_DCO) && defined(_WIN32) */
static inline void
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/812?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Iea4538cee075d50de836d1ef7652985186b2527c
Gerrit-Change-Number: 812
Gerrit-PatchSet: 4
Gerrit-Owner: stipa <[email protected]>
Gerrit-Reviewer: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: flichtenheld <[email protected]>
Gerrit-MessageType: newpatchset
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel