From patchwork Wed Jul 23 13:39:11 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gert Doering X-Patchwork-Id: 4324 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:3644:b0:671:5a2c:6455 with SMTP id a4csp172306mai; Wed, 23 Jul 2025 06:39:37 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWbHpD1Dr7CP02H91JmENwreUj7mZZYHU3EkgxCuLbA27T5leNGTXB037woKdusrTF2pWf27asAqZk=@openvpn.net X-Google-Smtp-Source: AGHT+IFlxdboWSjILNAXMDhPNEolBH0m5kuZ8uO6fFExPLHDlHZp4XUROD4jnTULPDhQ/s1J1UZ8 X-Received: by 2002:a05:6830:8216:b0:73a:8ac5:a6d9 with SMTP id 46e09a7af769-7408054923amr1945120a34.11.1753277977447; Wed, 23 Jul 2025 06:39:37 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1753277977; cv=none; d=google.com; s=arc-20240605; b=MUk1Pcuh8LYvx4/G1ZT2GZYkK5MB6wrIq4p3pKG9qfRnff8FuIc3yR3P1vtiVuiMpM +/LFs4SO4FpP3mRKq+pcWJGfCuANifV3my9ddkNgwzdlfVWXWGwsAzNeeog1n+dauP+m L9OcGrEG68a3uL7UKcJOrITdEp6mjGGvFmp1p8lHlKImxBH8+k/Hm5Q7klRIRmu1AOuj +U9aYWtZ+98pZbvKMMeE7RY8ji/NJ8gQqHXsk/XLlmRM14riXMW0szcAgnYQLlqDKZ41 vdPHfIziHF2nrrh+0SYh8K89tR4ch0onS4dshfE1ag7oQp9+S0cHppA3HlI2JYKGuVqD G8uw== 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:dkim-signature; bh=CwAc4HiUyqdIY6OzU3+gZa10UuJeMhg3al2L9mfKjwc=; fh=4NbAC/LsuMLI0S0hprUlLSLCiHwg6SCAifhH718Jh0Q=; b=GFHOC5cfWMAwX1jckSC6mE0RtK4+jneZ5TQ7LeD/jTYmk4U7fbK8xdjfVro7/zE9nC M3ShrwSzyRgXHno/YyQIuBalYq4Dcz/fTk16Rgclsrpj+rZuw2Lup+CVgyjDc8nnXd2d 5+xlL8GK3d8C+qhT+CuMr3wkpiaExA4oKaOoPphgjILTEBGzNcm4NC6MrWgWZy65lVm+ NoCLFyTlXkxD+JBQ7l7Xr130+1fo6JzX95hvnsQz91x/lK8/u9UN5b7r84yZWgWI8NlT QFrGus030XrU8/h7lxswV8UQQMPH1JA9azIhtcggyuLXlV59cf57Er7h7ZeU2lqO/vBc +ocw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=OdnLwnRR; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b="WoQEC/cr"; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=loqqoTV7; 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 46e09a7af769-73e89cbb644si6418404a34.137.2025.07.23.06.39.36 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Wed, 23 Jul 2025 06:39:37 -0700 (PDT) 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=pass header.i=@lists.sourceforge.net header.s=beta header.b=OdnLwnRR; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b="WoQEC/cr"; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=loqqoTV7; 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 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.sourceforge.net; s=beta; h=Content-Transfer-Encoding:Content-Type: List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe:List-Id: Subject:MIME-Version:References:In-Reply-To:Message-ID:Date:To:From:Sender: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=CwAc4HiUyqdIY6OzU3+gZa10UuJeMhg3al2L9mfKjwc=; b=OdnLwnRR/HNMQD0b4h9dscftIE 7dWAWKYg3z34jyoYcRtBiQKj3wRmMGxQYjSbrwcIwpZBFCN6tP3X41XoXU/TQIE/7zkn5MwnbnGuX NczNEkoDDmEsrTNg8n3H6PMYQOrzSSfjDO3SeDPQImBU1Up8IjlXd+XspGwX0w1R4u9I=; 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 1ueZgz-000188-Cn; Wed, 23 Jul 2025 13:39:34 +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 1ueZgx-00017v-Le for openvpn-devel@lists.sourceforge.net; Wed, 23 Jul 2025 13:39:32 +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=pp3Fw4wgCANwixPC8Yc+4AYBhHwmOJPPdg2D9FHYIVQ=; b=WoQEC/cr6npjPrgtvViiS9XH2Q 2ZFm3YKVa11MuydLipUuGw6/tdHJvx0w4Xtp1a/TTdHCz8pHyYX/XFE+xURQAALfbWaxRjxilOmxQ nVa1uwcAxqjve+whqZS0KenhVqAZkh8fnWJ3iN6k4eHuM5Hy2BApwGOsGlTtE/YXrJ4c=; 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=pp3Fw4wgCANwixPC8Yc+4AYBhHwmOJPPdg2D9FHYIVQ=; b=loqqoTV7LQWQtZDTqn9VHzB2UT JPCytIqCy13Jmkyz5yAdLA5xp6mZDNzho+gn1b/ehJqpD8vwMAcghTPQqr691Mk2lHZ4R2gpUDIb9 d1p7PElC+vtWDK/8glq3uKOP8GiR0YD4S+t27tXXLnzueprwNdMyqQZD/vmIsaBB6PZM=; Received: from [193.149.48.143] (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 1ueZgx-0005oe-9c for openvpn-devel@lists.sourceforge.net; Wed, 23 Jul 2025 13:39:32 +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 56NDdJeQ019466 for ; Wed, 23 Jul 2025 15:39:19 +0200 Received: (from gert@localhost) by blue.greenie.muc.de (8.17.1.9/8.17.1.9/Submit) id 56NDdJMV019465 for openvpn-devel@lists.sourceforge.net; Wed, 23 Jul 2025 15:39:19 +0200 From: Gert Doering To: openvpn-devel@lists.sourceforge.net Date: Wed, 23 Jul 2025 15:39:11 +0200 Message-ID: <20250723133918.19431-1-gert@greenie.muc.de> X-Mailer: git-send-email 2.49.0 In-Reply-To: References: MIME-Version: 1.0 X-Spam-Score: 1.3 (+) X-Spam-Report: Spam detection software, running on the system "sfi-spamd-2.hosts.colo.sdot.me", 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: Antonio Quartulli Future DCO code will require accessing the `multi` member of the context object. For this reason a pointer to the context has to be stored in the DCO context along with the rest. Content analysis details: (1.3 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 1.3 RDNS_NONE Delivered to internal network by a host with no rDNS X-Headers-End: 1ueZgx-0005oe-9c Subject: [Openvpn-devel] [PATCH v4] dco: only pass struct context to init function 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?1838445208372229362?= X-GMAIL-MSGID: =?utf-8?q?1838445208372229362?= From: Antonio Quartulli Future DCO code will require accessing the `multi` member of the context object. For this reason a pointer to the context has to be stored in the DCO context along with the rest. At this point, rather than making the call to ovpn_dco_init() longer with more and more parameters, pass the struct context only and let the implementation extract the needed fields. Change-Id: I673a17f8c5dec66cc6c28c1ed44780a7a63927d7 Signed-off-by: Antonio Quartulli 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/+/1094 This mail reflects revision 4 of this Change. Acked-by according to Gerrit (reflected above): Gert Doering diff --git a/src/openvpn/dco.h b/src/openvpn/dco.h index f38316d..9078417 100644 --- a/src/openvpn/dco.h +++ b/src/openvpn/dco.h @@ -104,12 +104,10 @@ /** * Initialize the DCO context * - * @param mode the instance operating mode (P2P or multi-peer) - * @param dco the context to initialize - * @param dev_node device node, used on Windows to specify certain DCO adapter + * @param c the main instance context * @return true on success, false otherwise */ -bool ovpn_dco_init(int mode, dco_context_t *dco, const char *dev_node); +bool ovpn_dco_init(struct context *c); /** * Open/create a DCO interface @@ -297,7 +295,7 @@ } static inline bool -ovpn_dco_init(int mode, dco_context_t *dco, const char *dev_node) +ovpn_dco_init(struct context *c) { return true; } diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c index b8816c6..98d8fb5 100644 --- a/src/openvpn/dco_freebsd.c +++ b/src/openvpn/dco_freebsd.c @@ -165,9 +165,9 @@ } bool -ovpn_dco_init(int mode, dco_context_t *dco, const char *dev_node) +ovpn_dco_init(struct context *c) { - if (open_fd(dco) < 0) + if (open_fd(&c->c1.tuntap->dco) < 0) { msg(M_ERR, "Failed to open socket"); return false; diff --git a/src/openvpn/dco_linux.c b/src/openvpn/dco_linux.c index 3652a49..ec6efaa 100644 --- a/src/openvpn/dco_linux.c +++ b/src/openvpn/dco_linux.c @@ -438,9 +438,11 @@ } bool -ovpn_dco_init(int mode, dco_context_t *dco, const char *dev_node) +ovpn_dco_init(struct context *c) { - switch (mode) + dco_context_t *dco = &c->c1.tuntap->dco; + + switch (c->mode) { case CM_TOP: dco->ifmode = OVPN_MODE_MP; @@ -454,6 +456,10 @@ ASSERT(false); } + /* store pointer to context as it may be required by message + * parsing routines + */ + dco->c = c; ovpn_dco_init_netlink(dco); return true; } diff --git a/src/openvpn/dco_linux.h b/src/openvpn/dco_linux.h index 676b8cd..5e61cf1 100644 --- a/src/openvpn/dco_linux.h +++ b/src/openvpn/dco_linux.h @@ -65,6 +65,8 @@ struct nl_cb *nl_cb; int status; + struct context *c; + enum ovpn_mode ifmode; int ovpn_dco_id; diff --git a/src/openvpn/dco_win.c b/src/openvpn/dco_win.c index 83db739..e5a33a0 100644 --- a/src/openvpn/dco_win.c +++ b/src/openvpn/dco_win.c @@ -188,9 +188,11 @@ * state. The server socket should be initialized later by dco_mp_start_vpn(). */ bool -ovpn_dco_init(int mode, dco_context_t *dco, const char *dev_node) +ovpn_dco_init(struct context *c) { - switch (mode) + dco_context_t *dco = &c->c1.tuntap->dco; + + switch (c->mode) { case MODE_POINT_TO_POINT: dco->ifmode = DCO_MODE_P2P; @@ -198,7 +200,7 @@ break; case MODE_SERVER: - ovpn_dco_init_mp(dco, dev_node); + ovpn_dco_init_mp(dco, c->options.dev_node); break; default: diff --git a/src/openvpn/init.c b/src/openvpn/init.c index 77747a2..aac8a6a 100644 --- a/src/openvpn/init.c +++ b/src/openvpn/init.c @@ -2007,7 +2007,7 @@ if (dco_enabled(&c->options)) { - ovpn_dco_init(c->mode, &c->c1.tuntap->dco, c->options.dev_node); + ovpn_dco_init(c); } /* open the tun device */