| Message ID | 20220820084719.243-1-lstipakov@gmail.com |
|---|---|
| State | Accepted |
| Headers |
Return-Path: <openvpn-devel-bounces@lists.sourceforge.net> Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director14.mail.ord1d.rsapps.net ([172.31.255.6]) by backend30.mail.ord1d.rsapps.net with LMTP id aBifOsufAGNCQAAAIUCqbw (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Sat, 20 Aug 2022 04:48:11 -0400 Received: from proxy14.mail.iad3b.rsapps.net ([172.31.255.6]) by director14.mail.ord1d.rsapps.net with LMTP id MCN8OsufAGMHeAAAeJ7fFg (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Sat, 20 Aug 2022 04:48:11 -0400 Received: from smtp8.gate.iad3b ([172.31.255.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy14.mail.iad3b.rsapps.net with LMTPS id yMr8M8ufAGOAAwAA+7ETDg (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Sat, 20 Aug 2022 04:48:11 -0400 X-Spam-Threshold: 95 X-Spam-Score: 0 X-Spam-Flag: NO X-Virus-Scanned: OK X-Orig-To: openvpnslackdevel@openvpn.net X-Originating-Ip: [216.105.38.7] Authentication-Results: smtp8.gate.iad3b.rsapps.net; iprev=pass policy.iprev="216.105.38.7"; spf=pass smtp.mailfrom="openvpn-devel-bounces@lists.sourceforge.net" smtp.helo="lists.sourceforge.net"; dkim=fail (signature verification failed) header.d=sourceforge.net; dkim=fail (signature verification failed) header.d=sf.net; dkim=fail (signature verification failed) header.d=gmail.com; dmarc=fail (p=none; dis=none) header.from=gmail.com X-Suspicious-Flag: YES X-Classification-ID: d1ecb5cc-2064-11ed-af8c-5254005eee35-1-1 Received: from [216.105.38.7] ([216.105.38.7:50166] helo=lists.sourceforge.net) by smtp8.gate.iad3b.rsapps.net (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) (ecelerity 4.2.38.62370 r(:)) with ESMTPS (cipher=DHE-RSA-AES256-GCM-SHA384) id AC/07-22706-BCF90036; Sat, 20 Aug 2022 04:48:11 -0400 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 <openvpn-devel-bounces@lists.sourceforge.net>) id 1oPK8V-0004J3-IU; Sat, 20 Aug 2022 08:47:19 +0000 Received: from [172.30.20.202] (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 <lstipakov@gmail.com>) id 1oPK8U-0004Iw-LI for openvpn-devel@lists.sourceforge.net; Sat, 20 Aug 2022 08:47: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:Message-Id: Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=OjcraweyYOje0hHEmO5WXhJX7I tJEY8t9b/etu9KiAd6fJGrBduApoS7vW9CPLCBF7QIgNdmBvrJJa9wAcgp/iVO0VsDR9e+b5Mm6co 0bCcsksy7VLmXp109ttOKqCQSTkh7kM+az/nXHJ5BpmXa1Kno+fB3bK5PQ5XSSYPs1Bo=; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sf.net; s=x ; h=Content-Transfer-Encoding:MIME-Version:Message-Id:Date:Subject:Cc:To:From :Sender:Reply-To:Content-Type:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=F MYb6fQ+lcv13BmUogxmKyqdEwCQhO8qWifc5VSKGPq37RZ+r/8dWM/66gVOK+1N3akrku6eIeEkGL iN/1BNWi4US6MDyxZJZTH6eNxSzPLt1UvDt1gxGc7+nTGnYjem8qX9gcVJ9H66eRUwMLLBaAQWvHk xyVO5jP8Ce2yM7hw=; Received: from mail-lf1-f53.google.com ([209.85.167.53]) by sfi-mx-1.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1oPK8T-00AUrx-PZ for openvpn-devel@lists.sourceforge.net; Sat, 20 Aug 2022 08:47:18 +0000 Received: by mail-lf1-f53.google.com with SMTP id z25so8929594lfr.2 for <openvpn-devel@lists.sourceforge.net>; Sat, 20 Aug 2022 01:47:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=dIoVSYdUcsyYbQtgs/nX9bZBScZrXYjMfSD9d9FstmRHt/ttJ5xLvL4inGAdQvyLE3 fYt2vSYUjlIroQqWHF7OsUk/BkFANzzjc+xbDA5gdCBu6urDhT1SOrXfeeuccm7JVhmg QaOZG/bRF+tVB2WFrA7D5Sru+G88bQUKpj7ya/M+8zoU710aYjO78jWkM5rSKVRS/8s7 eKrmcC3vmVVxfv5GYtoNdfo2pAwGyyAD3JZI9pf2HGIh7WslV8wKWmbzSPOduW9MtKjb Hy2YBdpNli6IKV8lXCHxmHI7xeXRrTtRRpX7tB9CJ4dDeCrjLwSZUpGGcW3Oq9CX/5/e /TGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc; bh=6GUNCMTmjZENS1FoNd9Qeh18agaTdqxINt0kvnX3ef4=; b=eP+Y9Cw9PVSTMLhYtJ3zKFWI7OgpWwPXWIAyUbApxiFWUOaibkRm6cTjx5y25qhRVb NYAk1HRKqH2PoS0bPqdpFh39gXe4sKhUSdb5cj6icJbEntwfKIuYlg/ZEOm+BSdWet2u BIMeqZWC7yPhoYB40OboXGDLM6sLNLWJ10Z1v6jSExbRJvTRTqFxR7AxeVPzbCjZAihz YFRgBJ/1tFBDf0miXKuj/hE7P1XojUrw8UeD50YH+znS6n4hvOjAzZQCvt2myvIZbLxI umUHaVBKSpr1WVFAMoJUwUEk9ozmLvguthqjM60nwidSwbZYZMkASF1ZUUTuBBHraKPv 9D0g== X-Gm-Message-State: ACgBeo2GecnZffYahF2O0532MkqGo3SsZ35LSTnlGeK8BjNEeYtYi4DD QrBPIduExPxWCbGHsSNvoZZbgMnbCKpnDsOT X-Google-Smtp-Source: AA6agR6msMmgSpu5QUSIWB/2DIriI5A7Ftlr4AJRlVimjoJMVU2n0vuyNV/yTsZZ/ojef55+gBsEfw== X-Received: by 2002:a05:6512:2390:b0:48c:ef98:4103 with SMTP id c16-20020a056512239000b0048cef984103mr3430169lfv.265.1660985230785; Sat, 20 Aug 2022 01:47:10 -0700 (PDT) Received: from LAPTOP-4L3N7KFS.localdomain (85-76-21-1-nat.elisa-mobile.fi. [85.76.21.1]) by smtp.gmail.com with ESMTPSA id c25-20020ac25f79000000b00492c1e36b22sm853428lfc.262.2022.08.20.01.47.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 20 Aug 2022 01:47:10 -0700 (PDT) From: Lev Stipakov <lstipakov@gmail.com> To: openvpn-devel@lists.sourceforge.net Date: Sat, 20 Aug 2022 11:47:19 +0300 Message-Id: <20220820084719.243-1-lstipakov@gmail.com> X-Mailer: git-send-email 2.34.1 MIME-Version: 1.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 This function is available starting from Windows 8. Calling it "as is" causes startup error on Windows 7. dco-win driver available on Windows 10 20H1 and newer. On older systems installer will not show nor install the driver and dco-win code won't be reached. It is safe to load GetOverlappedResultEx in ru [...] Content analysis details: (-0.2 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [lstipakov[at]gmail.com] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.167.53 listed in list.dnswl.org] -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature 0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's domain -0.1 DKIM_VALID_EF Message has a valid DKIM or DK signature from envelope-from domain -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.167.53 listed in wl.mailspike.net] -0.0 T_SCC_BODY_TEXT_LINE No description available. X-Headers-End: 1oPK8T-00AUrx-PZ Subject: [Openvpn-devel] [PATCH] dco-win: use run-time dynamic linking for GetOverlappedResultEx X-BeenThere: openvpn-devel@lists.sourceforge.net X-Mailman-Version: 2.1.21 Precedence: list List-Id: <openvpn-devel.lists.sourceforge.net> List-Unsubscribe: <https://lists.sourceforge.net/lists/options/openvpn-devel>, <mailto:openvpn-devel-request@lists.sourceforge.net?subject=unsubscribe> List-Archive: <http://sourceforge.net/mailarchive/forum.php?forum_name=openvpn-devel> List-Post: <mailto:openvpn-devel@lists.sourceforge.net> List-Help: <mailto:openvpn-devel-request@lists.sourceforge.net?subject=help> List-Subscribe: <https://lists.sourceforge.net/lists/listinfo/openvpn-devel>, <mailto:openvpn-devel-request@lists.sourceforge.net?subject=subscribe> Cc: Lev Stipakov <lev@openvpn.net> Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox |
| Series |
[Openvpn-devel] dco-win: use run-time dynamic linking for GetOverlappedResultEx
|
|
Commit Message
Lev Stipakov
Aug. 19, 2022, 10:47 p.m. UTC
From: Lev Stipakov <lev@openvpn.net> This function is available starting from Windows 8. Calling it "as is" causes startup error on Windows 7. dco-win driver available on Windows 10 20H1 and newer. On older systems installer will not show nor install the driver and dco-win code won't be reached. It is safe to load GetOverlappedResultEx in runtime and exit in case of error. Signed-off-by: Lev Stipakov <lev@openvpn.net> --- src/openvpn/dco_win.c | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-)
Comments
Acked-by: Gert Doering <gert@greenie.muc.de> I have *not* tested this, but we've discussed the patch on IRC, and the code matches what we want to achieve. We've had GetProcAddress() dynamic resolution in the code before (some IPv6 vs XP/Vista stuff, IIRC) and this all looks reasonable. GHA claims it compiles, and Lev said he has tested on Win7+Win10. (The intention is "have one single openvpn.exe binary for Win7 + Win10/11, which will do non-dco stuff on Win7 - no driver - and DCO stuff on Win10/11" - much simpler than having to build extra Win7 installers, and we still want to support Win7 "unless it's getting too costly") Your patch has been applied to the master branch. commit 2f8053f9a97584b759d11d05a668d38653508617 Author: Lev Stipakov Date: Sat Aug 20 11:47:19 2022 +0300 dco-win: use run-time dynamic linking for GetOverlappedResultEx Signed-off-by: Lev Stipakov <lev@openvpn.net> Acked-by: Gert Doering <gert@greenie.muc.de> Message-Id: <20220820084719.243-1-lstipakov@gmail.com> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg25038.html Signed-off-by: Gert Doering <gert@greenie.muc.de> -- kind regards, Gert Doering
Hi, On Sat, Aug 20, 2022 at 11:29:55AM +0200, Gert Doering wrote: > Acked-by: Gert Doering <gert@greenie.muc.de> > > I have *not* tested this, but we've discussed the patch on IRC, and the > code matches what we want to achieve. We've had GetProcAddress() dynamic > resolution in the code before (some IPv6 vs XP/Vista stuff, IIRC) and > this all looks reasonable. GHA claims it compiles, and Lev said he has > tested on Win7+Win10. > > (The intention is "have one single openvpn.exe binary for Win7 + Win10/11, > which will do non-dco stuff on Win7 - no driver - and DCO stuff on > Win10/11" - much simpler than having to build extra Win7 installers, and > we still want to support Win7 "unless it's getting too costly") > > Your patch has been applied to the master branch. > > commit 2f8053f9a97584b759d11d05a668d38653508617 > Author: Lev Stipakov > Date: Sat Aug 20 11:47:19 2022 +0300 For the sake of transparency, I did a mispush of this commit to github+gitlab, with the wrong URL: in the commit message (it was intended to go to my github instance only). I fixed this about 3 minutes later for github, but it took a bit for gitlab. So, if anyone noticed this commit with the ID 532c006b being in the repo for a few minutes, this was not a malicious person, just fat fingers. *No code change* between these revisions, just commit message. gert
diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c index 28bcccd4..a2030866 100644 --- a/src/openvpn/dco_win.c +++ b/src/openvpn/dco_win.c @@ -107,6 +107,17 @@ dco_start_tun(struct tuntap *tt) static int dco_connect_wait(HANDLE handle, OVERLAPPED *ov, int timeout, volatile int *signal_received) { + /* GetOverlappedResultEx is available starting from Windows 8 */ + typedef BOOL (*get_overlapped_result_ex_t) (HANDLE, LPOVERLAPPED, LPDWORD, DWORD, BOOL); + get_overlapped_result_ex_t get_overlapped_result_ex = + (get_overlapped_result_ex_t)GetProcAddress(GetModuleHandle("Kernel32.dll"), + "GetOverlappedResultEx"); + + if (get_overlapped_result_ex == NULL) + { + msg(M_ERR, "Failed to load GetOverlappedResult()"); + } + DWORD timeout_msec = timeout * 1000; const int poll_interval_ms = 50; @@ -115,7 +126,7 @@ dco_connect_wait(HANDLE handle, OVERLAPPED *ov, int timeout, volatile int *signa timeout_msec -= poll_interval_ms; DWORD transferred; - if (GetOverlappedResultEx(handle, ov, &transferred, poll_interval_ms, FALSE) != 0) + if (get_overlapped_result_ex(handle, ov, &transferred, poll_interval_ms, FALSE) != 0) { /* TCP connection established by dco */ return 0;