From patchwork Sun Oct 19 17:02:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Gert Doering X-Patchwork-Id: 4521 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:7000:7d42:b0:72f:f16c:e055 with SMTP id fr2csp5612286mab; Sun, 19 Oct 2025 10:03:03 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVkVOnbbUZwZIX2kRJ1MyUKO2W7HVyTRabWBxCrp7KsQ1MTM9bb3Ct/ddUfajpAMuxKt+Fm6GoY5qM=@openvpn.net X-Google-Smtp-Source: AGHT+IGy8LQa6kNesHYAKCuMr2bfwN2NJh49j9U61as/KWC6IjLmIGVbAfYJzAToaUz84mhv/YLJ X-Received: by 2002:a05:6820:180d:b0:650:1357:49fa with SMTP id 006d021491bc7-651c7e21847mr4154500eaf.3.1760893383722; Sun, 19 Oct 2025 10:03:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1760893383; cv=none; d=google.com; s=arc-20240605; b=B1E58RONE6QwHYVHthDrmydKS9T0w/svpFBjS6iTqti2uoiJZVJSiQ9jw08iMcVRPt WkbfytVPpJwIGQ7jUHRk+ACSnsJQdNNPGBlE51gWNaJlHwgAF7IDVeE0Nqyvf65WSx/+ KQ85f1xFnWpx76SVHwXZHas0PqdiBD8Nsy/HmnZ+18uPU3zR7W1PSut/qxNtDtFXygfP Iqrh7X1T7/R8V4ecuUtRJvloM2lAcuJQuHm+qbPDvdzkfjOac8o4jpLGBBz4kAMUANb7 kZK4yazLxkW0aadEHsSLldOtOWdbeiyEJLVQrb1kxDgKa1jYE7sDjAdnQr7LidiGwnQp omzw== 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=oaTbgjlM0+b/agzjopq7w52CquGbtnYEQlgO4fsjzTE=; fh=4NbAC/LsuMLI0S0hprUlLSLCiHwg6SCAifhH718Jh0Q=; b=EDnxBATKo9AmiIuVKDTU1hT5Yuct+P9y5YMzD8FStPzE+ys4xujLS+e6RcmCraX9gU Etg9eVCGW0wZYreo36bx05/50T79jX3ZsiIE2nG1csGU3QNPa8Xld9N648iNqaRl5D62 0YS8FZ/VDwLT49B9l0AW4PsPTeAiI4UK29gq3zdMlqVZDcOegEtQY/TuC0Ulb0c0OAOb JXghkOzQzNbDZrKVODH2syFE4FdYj8m7RAzgNcJQE7g+KBnYIsPXQxNnXDyGDwtrgmhq QxjCUVE6k4xJ7HXW3vRlD8EMqk9I8Yy4PcoFCbxjhYbFXKjcw2K016zARXUO1k0JPahv h8YQ==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@lists.sourceforge.net header.s=beta header.b=AxTspcEl; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=ZDU3gH9A; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b="EX3/h99w"; 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 006d021491bc7-651d3f50345si1115215eaf.78.2025.10.19.10.03.03 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 19 Oct 2025 10:03:03 -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=AxTspcEl; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=ZDU3gH9A; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b="EX3/h99w"; 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=oaTbgjlM0+b/agzjopq7w52CquGbtnYEQlgO4fsjzTE=; b=AxTspcEldAncXlKvWR6cWQyaAt 1rHRmJe5gMdBC5P9Vq7HzdYGzSYj/FRDfLsJ2ig+yJkPbyF3UaUWfs8WU9enQdSF8KHPzc61F9DHM yqhrt5p3HOOetXHm6hGnP3d6p9WzUSQ/y5haikCuwU8RjzXJaqsarQdHFjnBzOMWqjGs=; 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.95) (envelope-from ) id 1vAWo8-0006nV-Kk; Sun, 19 Oct 2025 17:03:00 +0000 Received: from [172.30.29.66] (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.95) (envelope-from ) id 1vAWo6-0006nP-T2 for openvpn-devel@lists.sourceforge.net; Sun, 19 Oct 2025 17:02:58 +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=mKKkrL/BAjAzoSgdtpH2RV4XxIbMFddQnS+34it/Lgs=; b=ZDU3gH9AFxuskLuqYP2Gh3KsI+ FR7cq8xbtQV/qlGgBr1ACV7XycUK31zEaXZaQ9Eow0564OceS2BZLBXRWMqoOmuISWPaOssqmYeub 8whrBN/0BNCY4mT1Sx8AfzDiObzoFIMYgi20bxCLgIZ6GhAQr4tBPgoE5vT8s9Fwwh3w=; 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=mKKkrL/BAjAzoSgdtpH2RV4XxIbMFddQnS+34it/Lgs=; b=EX3/h99wFvUbXZ2a8QCH4NSiPn NcESKT0flzPetFqe5t7vmtNJFZDQjoKPEj0wtP+24hHAnGWK2VrJybfo0xL0W3axwoyfqWkWrihvm A4Uk5T//HccinnR81Agpbh+nui2LLTfyGeCppvvLimeHWIOtfcUnnBzQgKa5W7H7OODc=; Received: from [193.149.48.134] (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 1vAWo5-0006VK-G0 for openvpn-devel@lists.sourceforge.net; Sun, 19 Oct 2025 17:02:58 +0000 Received: from blue.greenie.muc.de (localhost [127.0.0.1]) by blue.greenie.muc.de (8.18.1/8.18.1) with ESMTP id 59JH2or3030965 for ; Sun, 19 Oct 2025 19:02:50 +0200 Received: (from gert@localhost) by blue.greenie.muc.de (8.18.1/8.18.1/Submit) id 59JH2ogT030964 for openvpn-devel@lists.sourceforge.net; Sun, 19 Oct 2025 19:02:50 +0200 From: Gert Doering To: openvpn-devel@lists.sourceforge.net Date: Sun, 19 Oct 2025 19:02:42 +0200 Message-ID: <20251019170249.30942-1-gert@greenie.muc.de> X-Mailer: git-send-email 2.49.1 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: Ralf Lici The dco_context_t structure includes a reference to the general context structure c, which allows us to store dco_read_bytes and dco_write_bytes directly as c2 fields. This aligns the FreeBSD implemen [...] 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: 1vAWo5-0006VK-G0 Subject: [Openvpn-devel] [PATCH v4] dco-freebsd: store peer stats directly in c2 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?1846264046774103918?= X-GMAIL-MSGID: =?utf-8?q?1846430541171503400?= From: Ralf Lici The dco_context_t structure includes a reference to the general context structure c, which allows us to store dco_read_bytes and dco_write_bytes directly as c2 fields. This aligns the FreeBSD implementation with how we handle DCO peer stats on Linux and Windows. Change-Id: I53dd40fabdeacb9dca843e28fdd3b357711c5a84 Signed-off-by: Ralf Lici Acked-by: Gert Doering Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1275 --- 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/+/1275 This mail reflects revision 4 of this Change. Acked-by according to Gerrit (reflected above): Gert Doering diff --git a/src/openvpn/dco_freebsd.c b/src/openvpn/dco_freebsd.c index 947a769..e51f8dd 100644 --- a/src/openvpn/dco_freebsd.c +++ b/src/openvpn/dco_freebsd.c @@ -564,6 +564,21 @@ return ret; } +static void +dco_update_peer_stat(struct multi_context *m, uint32_t peerid, const nvlist_t *nvl) +{ + if (peerid >= m->max_clients || !m->instances[peerid]) + { + msg(M_WARN, "dco_update_peer_stat: invalid peer ID %d returned by kernel", peerid); + return; + } + + struct multi_instance *mi = m->instances[peerid]; + + mi->context.c2.dco_read_bytes = nvlist_get_number(nvl, "in"); + mi->context.c2.dco_write_bytes = nvlist_get_number(nvl, "out"); +} + int dco_do_read(dco_context_t *dco) { @@ -619,10 +634,7 @@ if (nvlist_exists_nvlist(nvl, "bytes")) { - const nvlist_t *bytes = nvlist_get_nvlist(nvl, "bytes"); - - dco->dco_read_bytes = nvlist_get_number(bytes, "in"); - dco->dco_write_bytes = nvlist_get_number(bytes, "out"); + dco_update_peer_stat(dco->c->multi, dco->dco_message_peer_id, nvlist_get_nvlist(nvl, "bytes")); } dco->dco_message_type = OVPN_CMD_DEL_PEER; @@ -777,21 +789,6 @@ nvlist_destroy(nvl); } -static void -dco_update_peer_stat(struct multi_context *m, uint32_t peerid, const nvlist_t *nvl) -{ - if (peerid >= m->max_clients || !m->instances[peerid]) - { - msg(M_WARN, "dco_update_peer_stat: invalid peer ID %d returned by kernel", peerid); - return; - } - - struct multi_instance *mi = m->instances[peerid]; - - mi->context.c2.dco_read_bytes = nvlist_get_number(nvl, "in"); - mi->context.c2.dco_write_bytes = nvlist_get_number(nvl, "out"); -} - int dco_get_peer_stats_multi(dco_context_t *dco, const bool raise_sigusr1_on_err) {