From patchwork Mon Dec 30 19:32:04 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gert Doering X-Patchwork-Id: 4032 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:998b:b0:5e7:b9eb:58e8 with SMTP id d11csp7944646mav; Mon, 30 Dec 2024 11:32:23 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCXsJ+xuvO1qarj3b8XKWGlDtR02lGJTHgC6CTDmuiQ3G9O04px0WfUIEFYTrqZWWiUjcSKhzQtyaZ0=@openvpn.net X-Google-Smtp-Source: AGHT+IGxEb6OxulbGDxZ+0h4ABKE4pREmE3VSy3HwxlzEANQopVWj+K12sY8jOHlQrvCFWvOLgVT X-Received: by 2002:a05:6871:a105:b0:296:e4bb:80f5 with SMTP id 586e51a60fabf-2a7fb40f4ddmr19915776fac.36.1735587143613; Mon, 30 Dec 2024 11:32:23 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1735587143; cv=none; d=google.com; s=arc-20240605; b=lMpxL7/2dCsWvViv8zTcEeiEjh+iYeJVesbySnloYp2hmQtzl4ynE1VOARy1a0liuf 6IQxMGoIYzZYcsGT1tZQhNH+U6teUT1921f2iZiVZyxVIcCOgIOhemQ1fNH3PCpSADs+ UYO43txyq/+S2gbJ1bwAG1eD21NQMLBDzqeQH1eV2DeH+hm3+xhPzrmPqAJ0tJOdsV6T xRXWymW5YYkpGwtFmPzTYYEQF7kMdHwsKZQSebxhYwalHvlJsh+xwZrSv/wENt4W6gNT MnWqj65SYmFlU8cQj1CDyVmacL+SuOPivuQxwcaPcvYl3vnf2yikcTriF/dYU6Ih9+nR xJMA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=errors-to:content-transfer-encoding:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:references:in-reply-to:message-id:date:to:from :dkim-signature:dkim-signature; bh=LEqOHFTB3g/ycA9GC6mqBdmRtXnCqR952qPKgIJ/N18=; fh=4NbAC/LsuMLI0S0hprUlLSLCiHwg6SCAifhH718Jh0Q=; b=XQVGDvDtrvHuJOO7ZDeNTAqs6ecIpylT4KVOqmt0Ft6V2zFu0JutQLW53wvlBtpP9r yRaI2jHzHuYKcJAReEl5qW1htN8O4Rhv7yODoEjf0J066IJcvRmuhVeXWD1us5D1997t uL/4/Jodm1g2VtaxukyCeU8T01cdl9xHeYQST/Ln16HXKoSRY/PcV/rILv0eca1gz3hk egxNP5xzxgQYBesj+O9H+U3fDKE+qu/eP1onlZ1eZbc1YEQLLEUhyCeOrBAL7ys21+R9 sQ6SlUp62qTQ+I3qLZgUhM4SbPTNE7Juo8zzn6Mj0erzmRItv9zZ/6XuKZ/kNYnOflb5 29FQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=OmfmXRmd; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=PcGN8ZWg; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=muc.de Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id 586e51a60fabf-2a7d77c6a50si15360579fac.132.2024.12.30.11.32.23 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 30 Dec 2024 11:32:23 -0800 (PST) Received-SPF: pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) client-ip=216.105.38.7; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=OmfmXRmd; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=PcGN8ZWg; spf=pass (google.com: domain of openvpn-devel-bounces@lists.sourceforge.net designates 216.105.38.7 as permitted sender) smtp.mailfrom=openvpn-devel-bounces@lists.sourceforge.net; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=muc.de Received: from [127.0.0.1] (helo=sfs-ml-2.v29.lw.sourceforge.com) by sfs-ml-2.v29.lw.sourceforge.com with esmtp (Exim 4.95) (envelope-from ) id 1tSLUx-0005Dx-Kl; Mon, 30 Dec 2024 19:32:19 +0000 Received: from [172.30.29.66] (helo=mx.sourceforge.net) by sfs-ml-2.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.95) (envelope-from ) id 1tSLUw-0005Dl-GP for openvpn-devel@lists.sourceforge.net; Mon, 30 Dec 2024 19:32:18 +0000 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sourceforge.net; s=x; h=Content-Transfer-Encoding:MIME-Version:References: In-Reply-To:Message-ID:Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=kJGfJsQTXiHbu1S3Rl1LSxGYxvXmjqLp+7k8CrEqT50=; b=OmfmXRmdIbp2UjZhB8GWv5qfWW ZScZep3Q/J0/lnOBGMX5owsyiTs25ISmklNQcMuUbnNwM12wL1Db+AXLXwNBRRJQe6+qAvaQQVsBo kxzLgi+W517qNg2W8qSuXuwI+D1rWFLdLPJNYm+PA5hw8QKRR1FQioC0e//sEiXKfaos=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:Message-ID: Date:Subject:To:From:Sender:Reply-To:Cc:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=kJGfJsQTXiHbu1S3Rl1LSxGYxvXmjqLp+7k8CrEqT50=; b=PcGN8ZWgewwJCdEHNoJ/NCuYSx nrHFPnwQxEpPUTTcdw+QM2qe1J9JurB76OgL6XO66dOXl9HyyAwaWWj1xxtbfTYh5gMeWgQTbMn3s OKqiKooB/SmIOV4hQnpLnzPo8zl3tq8gfTz0VGO5391tslaedmPjwnXR7l/sN4bN6Ij0=; Received: from dhcp-174.greenie.muc.de ([193.149.48.174] helo=blue.greenie.muc.de) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.95) id 1tSLUu-00072v-Es for openvpn-devel@lists.sourceforge.net; Mon, 30 Dec 2024 19:32:18 +0000 Received: from blue.greenie.muc.de (localhost [127.0.0.1]) by blue.greenie.muc.de (8.17.1.9/8.17.1.9) with ESMTP id 4BUJW4SU009908 for ; Mon, 30 Dec 2024 20:32:04 +0100 Received: (from gert@localhost) by blue.greenie.muc.de (8.17.1.9/8.17.1.9/Submit) id 4BUJW4cN009907 for openvpn-devel@lists.sourceforge.net; Mon, 30 Dec 2024 20:32:04 +0100 From: Gert Doering To: openvpn-devel@lists.sourceforge.net Date: Mon, 30 Dec 2024 20:32:04 +0100 Message-ID: <20241230193204.9897-1-gert@greenie.muc.de> X-Mailer: git-send-email 2.45.2 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Score: 0.0 (/) X-Spam-Report: Spam detection software, running on the system "util-spamd-2.v13.lw.sourceforge.com", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: From: Lev Stipakov Enable dco-win with mode server if driver supports it. Disable for proto TCP or older drivers. Content analysis details: (0.0 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 RCVD_IN_VALIDITY_RPBL_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [193.149.48.174 listed in bl.score.senderscore.com] 0.0 RCVD_IN_VALIDITY_CERTIFIED_BLOCKED RBL: ADMINISTRATOR NOTICE: The query to Validity was blocked. See https://knowledge.validity.com/hc/en-us/articles/20961730681243 for more information. [193.149.48.174 listed in sa-trusted.bondedsender.org] -0.0 SPF_HELO_PASS SPF: HELO matches SPF record -0.0 SPF_PASS SPF: sender matches SPF record X-Headers-End: 1tSLUu-00072v-Es Subject: [Openvpn-devel] [PATCH v6] dco-win: enable mode server on supported configuration X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1819895024462426027?= X-GMAIL-MSGID: =?utf-8?q?1819895024462426027?= From: Lev Stipakov 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 Acked-by: Gert Doering --- This change was reviewed on Gerrit and approved by at least one developer. I request to merge it to master. Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/812 This mail reflects revision 6 of this Change. Acked-by according to Gerrit (reflected above): Gert Doering 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 #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..46b2d03 100644 --- a/src/openvpn/dco_win.c +++ b/src/openvpn/dco_win.c @@ -523,4 +523,11 @@ } } +bool +dco_win_supports_multipeer(void) +{ + 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..7688516 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(void); + #else /* if defined(ENABLE_DCO) && defined(_WIN32) */ static inline void