| Message ID | 20211202125455.2593763-1-arne@rfc2549.org |
|---|---|
| State | Superseded |
| Headers |
Return-Path: <openvpn-devel-bounces@lists.sourceforge.net> Delivered-To: patchwork@openvpn.net Delivered-To: patchwork@openvpn.net Received: from director11.mail.ord1d.rsapps.net ([172.31.255.6]) by backend30.mail.ord1d.rsapps.net with LMTP id eCi/HW/CqGHDbAAAIUCqbw (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Thu, 02 Dec 2021 07:56:15 -0500 Received: from proxy15.mail.iad3b.rsapps.net ([172.31.255.6]) by director11.mail.ord1d.rsapps.net with LMTP id iBaKHW/CqGELEAAAvGGmqA (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Thu, 02 Dec 2021 07:56:15 -0500 Received: from smtp29.gate.iad3b ([172.31.255.6]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) by proxy15.mail.iad3b.rsapps.net with LMTPS id YJUWF2/CqGEvEAAAhyf7VQ (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) for <patchwork@openvpn.net>; Thu, 02 Dec 2021 07:56:15 -0500 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: smtp29.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; dmarc=none (p=nil; dis=none) header.from=rfc2549.org X-Suspicious-Flag: YES X-Classification-ID: 3b42c1ec-536f-11ec-941d-525400534f55-1-1 Received: from [216.105.38.7] ([216.105.38.7:48108] helo=lists.sourceforge.net) by smtp29.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 A1/C6-08843-E62C8A16; Thu, 02 Dec 2021 07:56:15 -0500 Received: from [127.0.0.1] (helo=sfs-ml-4.v29.lw.sourceforge.com) by sfs-ml-4.v29.lw.sourceforge.com with esmtp (Exim 4.94.2) (envelope-from <openvpn-devel-bounces@lists.sourceforge.net>) id 1mslcI-0005A6-2q; Thu, 02 Dec 2021 12:55:14 +0000 Received: from [172.30.20.202] (helo=mx.sourceforge.net) by sfs-ml-4.v29.lw.sourceforge.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from <arne@kamera.blinkt.de>) id 1mslcA-00059q-LU for openvpn-devel@lists.sourceforge.net; Thu, 02 Dec 2021 12:55:06 +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: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:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=39S8xay1lMXTEech+XmL+C0vdKnfoTN3tU8s+hYaJH4=; b=IMsGj9VY59F0VT101cWfMYMxSj fZ+ejGMKGeT+zAQDY0ahd5fuWnN0A2vMCxvlv4vg7Wad7m9H1CLzMhMyUZdUR0um90rRiEFVXNPDJ fRgLioxI0zHQ1sqeHkeBmE0Y6bTk87YAVPP/aYG03qDD/tTxrw90k/CfG7BsTYnYCfMA=; 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: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:In-Reply-To: References:List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post: List-Owner:List-Archive; bh=39S8xay1lMXTEech+XmL+C0vdKnfoTN3tU8s+hYaJH4=; b=U CWegW91JXP5saUCd2hp3i/uSY+UYemByROGXVukrMS0j8M1eOgxTCYBkSMMOLFSJbHMQYdhLLWDgV vmx9o+FhSuEyJ4gD1vMyyENP+02KEhrgyqFdFU0PH86gLSt3jkGjmnM/3DBQ4kJoscCkPLIl1mtXO pN3GKVGT2V/9H4jk=; Received: from mail.blinkt.de ([192.26.174.232]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLSv1.2:ECDHE-RSA-AES256-GCM-SHA384:256) (Exim 4.92.3) id 1mslc6-0005TA-9Y for openvpn-devel@lists.sourceforge.net; Thu, 02 Dec 2021 12:55:03 +0000 Received: from kamera.blinkt.de ([2001:638:502:390:20c:29ff:fec8:535c]) by mail.blinkt.de with smtp (Exim 4.94.2 (FreeBSD)) (envelope-from <arne@kamera.blinkt.de>) id 1mslby-00069B-Oa for openvpn-devel@lists.sourceforge.net; Thu, 02 Dec 2021 13:54:54 +0100 Received: (nullmailer pid 2593809 invoked by uid 10006); Thu, 02 Dec 2021 12:54:55 -0000 From: Arne Schwabe <arne@rfc2549.org> To: openvpn-devel@lists.sourceforge.net Date: Thu, 2 Dec 2021 13:54:55 +0100 Message-Id: <20211202125455.2593763-1-arne@rfc2549.org> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 X-Spam-Report: Spam detection software, running on the system "util-spamd-1.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: Currently we default to local binding with udp. But the majority of configuration files actually uses --nobind in the configuration to change the default for --client. And client protocols should norm [...] Content analysis details: (0.3 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record 0.0 SPF_NONE SPF: sender does not publish an SPF Record 0.2 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail domains are different X-Headers-End: 1mslc6-0005TA-9Y Subject: [Openvpn-devel] [PATCH] Make --nobind default for --pull 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> 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] Make --nobind default for --pull
|
|
Commit Message
Arne Schwabe
Dec. 2, 2021, 1:54 a.m. UTC
Currently we default to local binding with udp. But the majority of configuration files actually uses --nobind in the configuration to change the default for --client. And client protocols should normally use a random source port. This changes the default. Local binding with --client can still be done using --bind. --- Changes.rst | 3 ++- src/openvpn/options.c | 11 ++++------- 2 files changed, 6 insertions(+), 8 deletions(-)
Comments
> Arne Schwabe <arne@rfc2549.org> hat am 02.12.2021 13:54 geschrieben: > > - if (ce->proto == PROTO_TCP_CLIENT && !ce->local > - && !ce->local_port_defined && !ce->bind_defined) > - { > - ce->bind_local = false; > - } > > - if (ce->proto == PROTO_UDP && ce->socks_proxy_server && !ce->local > - && !ce->local_port_defined && !ce->bind_defined) > + bool need_bind = ce->local || ce->local_port_defined || ce->bind_defined; > + bool uses_socks = ce->proto == PROTO_UDP && ce->socks_proxy_server; > + > + if (!need_bind && (ce->proto == PROTO_TCP_CLIENT || uses_socks || o->pull)) > { > ce->bind_local = false; > } The refactoring makes it very hard to see what the actual change is. Maybe it would be better to split this in two commits? The only actual change in behavior is the "|| o->pull", right? Regards, Frank -- Frank Lichtenheld
Am 03.12.21 um 17:18 schrieb Frank Lichtenheld: >> Arne Schwabe <arne@rfc2549.org> hat am 02.12.2021 13:54 geschrieben: >> >> - if (ce->proto == PROTO_TCP_CLIENT && !ce->local >> - && !ce->local_port_defined && !ce->bind_defined) >> - { >> - ce->bind_local = false; >> - } >> >> - if (ce->proto == PROTO_UDP && ce->socks_proxy_server && !ce->local >> - && !ce->local_port_defined && !ce->bind_defined) >> + bool need_bind = ce->local || ce->local_port_defined || ce->bind_defined; >> + bool uses_socks = ce->proto == PROTO_UDP && ce->socks_proxy_server; >> + >> + if (!need_bind && (ce->proto == PROTO_TCP_CLIENT || uses_socks || o->pull)) >> { >> ce->bind_local = false; >> } > > The refactoring makes it very hard to see what the actual change is. Maybe it would be better to split this in two commits? > > The only actual change in behavior is the "|| o->pull", right? > Yes. But should I really split up this 5 line patch into two patches? That feels a bit excessive. Arne
Hi, On Sun, Dec 05, 2021 at 03:57:55AM +0100, Arne Schwabe wrote: > > The refactoring makes it very hard to see what the actual change is. Maybe it would be better to split this in two commits? > > > > The only actual change in behavior is the "|| o->pull", right? > > Yes. But should I really split up this 5 line patch into two patches? > That feels a bit excessive. I'm fine with a single patch here. I need to think a bit more into "what conditions is this checking, exactly, and why?" - but with refactoring, I'd have to do that thinking twice :-) gert
> Gert Doering <gert@greenie.muc.de> hat am 05.12.2021 11:19 geschrieben: > > > Hi, > > On Sun, Dec 05, 2021 at 03:57:55AM +0100, Arne Schwabe wrote: > > > The refactoring makes it very hard to see what the actual change is. Maybe it would be better to split this in two commits? > > > > > > The only actual change in behavior is the "|| o->pull", right? > > > > Yes. But should I really split up this 5 line patch into two patches? > > That feels a bit excessive. > > I'm fine with a single patch here. > > I need to think a bit more into "what conditions is this checking, exactly, > and why?" - but with refactoring, I'd have to do that thinking twice :-) I disagree. If you had one patch that does refactoring but does not intend any functional change, and one patch that just adds "|| o->pull", the general understanding of each patch would require much less time and thinking. Mostly it would be much easier to match the change with the intent communicated by the commit message. Which for me was the hardest part, here. Regards, Frank -- Frank Lichtenheld
Hi, On Sun, Dec 05, 2021 at 12:16:56PM +0100, Frank Lichtenheld wrote: > > I need to think a bit more into "what conditions is this checking, exactly, > > and why?" - but with refactoring, I'd have to do that thinking twice :-) > > I disagree. If you had one patch that does refactoring but does not intend any functional change, > and one patch that just adds "|| o->pull", the general understanding of each patch would require > much less time and thinking. True, but the second patch would not be correct, then :-) - as it actually adds more conditions than just "o->pull". The original code does not check for socks. I am not exactly happy with the *new* code, as it is still too convoluted for my coffee level ("if (!bind_needed && conditions) set bind_local=false", what are these conditions? why?) but I do not think an intermediate patch will make these particular conditional contortions easier... gert
Am 05.12.2021 um 12:40 schrieb Gert Doering: > Hi, > > On Sun, Dec 05, 2021 at 12:16:56PM +0100, Frank Lichtenheld wrote: >>> I need to think a bit more into "what conditions is this checking, exactly, >>> and why?" - but with refactoring, I'd have to do that thinking twice :-) >> I disagree. If you had one patch that does refactoring but does not intend any functional change, >> and one patch that just adds "|| o->pull", the general understanding of each patch would require >> much less time and thinking. > True, but the second patch would not be correct, then :-) - as it > actually adds more conditions than just "o->pull". The original code > does not check for socks. The original code checks for socks. That is not changed. The orignal code basically has two ifs that checks for the code that is !bind_need and the particular condition (socks or tcp-client) > > I am not exactly happy with the *new* code, as it is still too convoluted > for my coffee level ("if (!bind_needed && conditions) set bind_local=false", > what are these conditions? why?) I can add more comments to the code. bind_needed is basically if the options have a condition that forces binding anyway. > but I do not think an intermediate > patch will make these particular conditional contortions easier... >
Hi, On Sun, Dec 05, 2021 at 07:04:01PM +0100, Arne Schwabe wrote: > The original code checks for socks. That is not changed. The orignal > code basically has two ifs that checks for the code that is !bind_need > and the particular condition (socks or tcp-client) You're right. As I said, that mass if conditions, half of them negated, exceeded my coffee level... > > for my coffee level ("if (!bind_needed && conditions) set bind_local=false", > > what are these conditions? why?) > > I can add more comments to the code. bind_needed is basically if the > options have a condition that forces binding anyway. I think that would be good. thanks :) gert
diff --git a/Changes.rst b/Changes.rst index c1a04deed..95bebc4ab 100644 --- a/Changes.rst +++ b/Changes.rst @@ -120,7 +120,8 @@ PF (Packet Filtering) support has been removed User-visible Changes -------------------- - CHACHA20-POLY1305 is included in the default of ``--data-ciphers`` when available. -- Option ``--prng`` is ignored as we rely on the SSL library radnom generator. +- Option ``--prng`` is ignored as we rely on the SSL library random number generator. +- Option ``--nobind`` is default when ``--client`` or ``--pull`` is used in the configuration Overview of changes in 2.5 ========================== diff --git a/src/openvpn/options.c b/src/openvpn/options.c index 312efb36c..3aaad7bc8 100644 --- a/src/openvpn/options.c +++ b/src/openvpn/options.c @@ -2859,14 +2859,11 @@ options_postprocess_mutate_ce(struct options *o, struct connection_entry *ce) } } - if (ce->proto == PROTO_TCP_CLIENT && !ce->local - && !ce->local_port_defined && !ce->bind_defined) - { - ce->bind_local = false; - } - if (ce->proto == PROTO_UDP && ce->socks_proxy_server && !ce->local - && !ce->local_port_defined && !ce->bind_defined) + bool need_bind = ce->local || ce->local_port_defined || ce->bind_defined; + bool uses_socks = ce->proto == PROTO_UDP && ce->socks_proxy_server; + + if (!need_bind && (ce->proto == PROTO_TCP_CLIENT || uses_socks || o->pull)) { ce->bind_local = false; }