From patchwork Mon Dec 12 09:58:31 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lev Stipakov X-Patchwork-Id: 2899 Return-Path: Delivered-To: patchwork@openvpn.net Received: by 2002:a05:622a:418d:b0:3a5:7962:c21f with SMTP id cd13csp2027231qtb; Mon, 12 Dec 2022 01:59:27 -0800 (PST) X-Google-Smtp-Source: AA0mqf5dIBN+8YGppI0VNabGHSCIH9oQC0aLgvIQjgfGvtu11ZXq2iqNljbmR6yAeSSAOck/v+Vz X-Received: by 2002:aa7:956f:0:b0:576:e1f0:c812 with SMTP id x15-20020aa7956f000000b00576e1f0c812mr14688994pfq.30.1670839167635; Mon, 12 Dec 2022 01:59:27 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1670839167; cv=none; d=google.com; s=arc-20160816; b=YKfDN9j2UICYfowyQRv3hBlALwm1lhVf9v23nM14LMs6JaPH9EDueTPG37TLIaIGWN gZXZZsIyPJkxKPVd/zsV/3u/qrISqeX2fp2cQriwILmcDslNPa1WbD7DPsNpRCelSMru Uopxqm3vzFanGHn3q4lG74MMXFbUGCed8vKP/gwPG34752zc1IrzNKK4UW+BKED8E2fT 85a6xwFnCgifcTLwfwKRZpYAa/cf+Q474Ny5nBMeQap6sOpEwAT4UUOh89cl9uBjwsJu dROTcG8U1PR7dBFoxwlmeoQmH7G7lQUKoNbI/HiC6T0qc1rgllpF+tmiVMPGGF3wVu8/ W7rA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=errors-to:content-transfer-encoding:cc:list-subscribe:list-help :list-post:list-archive:list-unsubscribe:list-id:precedence:subject :mime-version:message-id:date:to:from:dkim-signature:dkim-signature :dkim-signature; bh=Rz/19QoTo8lR+745qFGZJ8H2s4SkhSUdUw1mgTYqZUI=; b=uK4oBQcKDIBA5/NM8eGxfCuMHtq0YmVaJlD3S7/8cK8f82cE4EVbYKu7fvoAIQOLvL kjlQzkDmb5jO9DtdzCG3vokX3XeuxBe6WIX/spU1EokSjxbxmhlC4oznqD1L2vs/kXb/ 9Ty2Z4VMLVtSoiokiKdYgzrklX8PlLF8ewsWhL+qDBxBVMjqI5TTx3WsK8Szl7yu+M2A HKF1ax5+bkMPhmDHe4oBGw9OvCnXWQQoPEdjnAt/DMCts8gQnLZlnRqhDksMQke6binS KqhD3kLX/GTYfKbFWyCMki+sl76nwwYsBGQrlq1p7e82Y7W8FWOZBHiBqwlakw0ZZc3g WVWA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@sourceforge.net header.s=x header.b=ZXtYiLei; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=kB1jfKpe; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=d5DXoHtn; 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=QUARANTINE dis=NONE) header.from=gmail.com Received: from lists.sourceforge.net (lists.sourceforge.net. [216.105.38.7]) by mx.google.com with ESMTPS id h9-20020a056a001a4900b0056618176fd4si9947427pfv.148.2022.12.12.01.59.27 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 12 Dec 2022 01:59:27 -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=ZXtYiLei; dkim=neutral (body hash did not verify) header.i=@sf.net header.s=x header.b=kB1jfKpe; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=d5DXoHtn; 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=QUARANTINE dis=NONE) header.from=gmail.com 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 1p4faV-0006UW-4s; Mon, 12 Dec 2022 09:59:07 +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.95) (envelope-from ) id 1p4faT-0006UQ-D4 for openvpn-devel@lists.sourceforge.net; Mon, 12 Dec 2022 09:59:05 +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=+cRkrOKJd8FKSNXnYsKUBF+iE6xOTnKa44I1+AYGGwY=; b=ZXtYiLeiATlxu4qhuxdbmRg27d +drBS7TvtMs+yjxgTQN9K+g/lQdCt2KVxZjD6ENF+JYpsicvGtiEB3wKobkv8fuVgZLyzrNw1HsXH zAermsX/dXzI/487WZdaEsEDfhqC6za9coWI/5dZXhZsQCEEgMLpp6A6wfgzbfdxJ+QA=; 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=+cRkrOKJd8FKSNXnYsKUBF+iE6xOTnKa44I1+AYGGwY=; b=k B1jfKpezgAOaRHvCKPcGlMfPqTTwzkEuWrN1YqN8D7rvT/rL+nIYIY41rqFS+z+qHFbkbOG6OzgP3 4SfCGM9oCoMzbo1DOf6tDuW0EeqsQW6zzR0WK7T+isGgeLqMm64SVvI4wyI7nkYlefSCx3T8Bryz7 ywskd46Q0sqwI62A=; Received: from mail-lf1-f52.google.com ([209.85.167.52]) by sfi-mx-2.v28.lw.sourceforge.com with esmtps (TLS1.2:ECDHE-RSA-AES128-GCM-SHA256:128) (Exim 4.95) id 1p4faO-0002Xq-8r for openvpn-devel@lists.sourceforge.net; Mon, 12 Dec 2022 09:59:04 +0000 Received: by mail-lf1-f52.google.com with SMTP id g7so17670136lfv.5 for ; Mon, 12 Dec 2022 01:59:00 -0800 (PST) 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:subject:date:message-id:reply-to; bh=+cRkrOKJd8FKSNXnYsKUBF+iE6xOTnKa44I1+AYGGwY=; b=d5DXoHtnsl03Eo/qV4drzzRJ8PpFB47emOArnHOh+JAyoSdrWaaOkZcCSMxhetvjz5 TtxD++Zdhy4UYlzkt98DYLqdbqORBiFiIW2EpTqSv46FDUt4qElrdhP1V7jp52Ha7IXC 58B+t7Le06R7mWRyCJHPAZNgjxPfyEBnWHYu3yD8JgxCvdBrfNq/BIEASnXDahCohFmT sPJq2TXXxoz9NSIi1Z5nt3nagei0oItXU1fBULryfQJ17zzlHuNKsrAFjHyh8WL1sYpw g9kTsPAAU432c76ld1kxDlo2CYaSss/+R+mSjADwdqB8TYGa+Lb2TGh0tg42msMeTwpw OHKw== 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:subject:date:message-id :reply-to; bh=+cRkrOKJd8FKSNXnYsKUBF+iE6xOTnKa44I1+AYGGwY=; b=yFoVfC9JPD181iVFsZo1b6cTAAGdnc3l1liMOI7f5ENbKAkn01LhqkCtnqkWZl5PNX eLJPs6PvqO/3EVV5eukCOC47LL+x1gPG2ksa0wFXg8YaEBMUqXYqm46VlnAb3bzC+jC7 fOVgz2HG5vgNfHGyipssfs6MhabGjVf/wRPHW2XHWOqdR5HR6egt90rvahgPQ9GmlZBn 685VWm0avzK3l5WaF4PWMQu7hmxyAC/F4vr/0Ebr2xHRpuOPB2NcfIg/uWATlvVWQjBH bruPPUhMxSqbeL86wRR40AkLvwbqroUTDGu4eE8YvDnEVff28yV6x0dGeWRVhqd7bsRP Q6wQ== X-Gm-Message-State: ANoB5pkw89lXjx/MmeeTWLdHKMAgHJu3caKZ1FYanhRN9FvQYZ4iXqcG nPZjXwjUpm3qqDPuIHuc9oxqItldMcE= X-Received: by 2002:a19:c502:0:b0:4b6:edee:586e with SMTP id w2-20020a19c502000000b004b6edee586emr503416lfe.10.1670839133124; Mon, 12 Dec 2022 01:58:53 -0800 (PST) Received: from localhost.localdomain ([2a00:1d50:3:0:b8b1:7329:e3db:7e76]) by smtp.gmail.com with ESMTPSA id m20-20020a05651202f400b004994117b0fdsm1574266lfq.281.2022.12.12.01.58.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 12 Dec 2022 01:58:52 -0800 (PST) From: Lev Stipakov To: openvpn-devel@lists.sourceforge.net Date: Mon, 12 Dec 2022 11:58:31 +0200 Message-Id: <20221212095832.2123-1-lstipakov@gmail.com> X-Mailer: git-send-email 2.38.1.windows.1 MIME-Version: 1.0 X-Spam-Score: -0.2 (/) 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: From: Lev Stipakov In preparation of DCO stats support, simplify call chains of bytecount routines. No functional changes. Signed-off-by: Lev Stipakov --- src/openvpn/forward.c | 4 +-- src/openvpn/manage.c | 64 ++++++++++++++++++++++++++++ src/openvpn/manage.h | 66 ++++ [...] Content analysis details: (-0.2 points, 6.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- 0.0 FREEMAIL_FROM Sender email is commonly abused enduser mail provider [lstipakov[at]gmail.com] 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record -0.0 SPF_PASS SPF: sender matches SPF record -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [209.85.167.52 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [209.85.167.52 listed in list.dnswl.org] -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.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid -0.1 DKIM_VALID Message has at least one valid DKIM or DK signature X-Headers-End: 1p4faO-0002Xq-8r Subject: [Openvpn-devel] [PATCH 1/2] management: refactor bytecount routines 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: , Cc: Lev Stipakov Errors-To: openvpn-devel-bounces@lists.sourceforge.net X-getmail-retrieved-from-mailbox: Inbox X-GMAIL-THRID: =?utf-8?q?1752001851113740148?= X-GMAIL-MSGID: =?utf-8?q?1752001851113740148?= From: Lev Stipakov In preparation of DCO stats support, simplify call chains of bytecount routines. No functional changes. Signed-off-by: Lev Stipakov --- src/openvpn/forward.c | 4 +-- src/openvpn/manage.c | 64 ++++++++++++++++++++++++++++------------- src/openvpn/manage.h | 66 ++++--------------------------------------- 3 files changed, 52 insertions(+), 82 deletions(-) diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c index 5cd7eaa6..1cd20a0b 100644 --- a/src/openvpn/forward.c +++ b/src/openvpn/forward.c @@ -948,7 +948,7 @@ process_incoming_link_part1(struct context *c, struct link_socket_info *lsi, boo #ifdef ENABLE_MANAGEMENT if (management) { - management_bytes_in(management, c->c2.buf.len); + management_bytes_client(management, c->c2.buf.len, 0); management_bytes_server(management, &c->c2.link_read_bytes, &c->c2.link_write_bytes, &c->c2.mda_context); } #endif @@ -1788,7 +1788,7 @@ process_outgoing_link(struct context *c) #ifdef ENABLE_MANAGEMENT if (management) { - management_bytes_out(management, size); + management_bytes_client(management, 0, size); management_bytes_server(management, &c->c2.link_read_bytes, &c->c2.link_write_bytes, &c->c2.mda_context); } #endif diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c index 5b288eab..1f76a23d 100644 --- a/src/openvpn/manage.c +++ b/src/openvpn/manage.c @@ -471,31 +471,55 @@ man_bytecount(struct management *man, const int update_seconds) msg(M_CLIENT, "SUCCESS: bytecount interval changed"); } -void +static void man_bytecount_output_client(struct management *man) { - char in[32]; - char out[32]; - /* do in a roundabout way to work around possible mingw or mingw-glibc bug */ - openvpn_snprintf(in, sizeof(in), counter_format, man->persist.bytes_in); - openvpn_snprintf(out, sizeof(out), counter_format, man->persist.bytes_out); - msg(M_CLIENT, ">BYTECOUNT:%s,%s", in, out); - man->connection.bytecount_last_update = now; + if (man->connection.bytecount_update_seconds > 0 + && now >= man->connection.bytecount_last_update + + man->connection.bytecount_update_seconds) + { + char in[32]; + char out[32]; + + /* do in a roundabout way to work around possible mingw or mingw-glibc bug */ + openvpn_snprintf(in, sizeof(in), counter_format, man->persist.bytes_in); + openvpn_snprintf(out, sizeof(out), counter_format, man->persist.bytes_out); + msg(M_CLIENT, ">BYTECOUNT:%s,%s", in, out); + man->connection.bytecount_last_update = now; + } +} + +void +management_bytes_client(struct management *man, + const int size_in, + const int size_out) +{ + if (!(man->persist.callback.flags & MCF_SERVER)) + { + man->persist.bytes_in += size_in; + man->persist.bytes_out += size_out; + man_bytecount_output_client(man); + } } void -man_bytecount_output_server(struct management *man, - const counter_type *bytes_in_total, - const counter_type *bytes_out_total, - struct man_def_auth_context *mdac) -{ - char in[32]; - char out[32]; - /* do in a roundabout way to work around possible mingw or mingw-glibc bug */ - openvpn_snprintf(in, sizeof(in), counter_format, *bytes_in_total); - openvpn_snprintf(out, sizeof(out), counter_format, *bytes_out_total); - msg(M_CLIENT, ">BYTECOUNT_CLI:%lu,%s,%s", mdac->cid, in, out); - mdac->bytecount_last_update = now; +management_bytes_server(struct management *man, + const counter_type *bytes_in_total, + const counter_type *bytes_out_total, + struct man_def_auth_context *mdac) +{ + if (man->connection.bytecount_update_seconds > 0 + && now >= mdac->bytecount_last_update + man->connection.bytecount_update_seconds + && (mdac->flags & (DAF_CONNECTION_ESTABLISHED | DAF_CONNECTION_CLOSED)) == DAF_CONNECTION_ESTABLISHED) + { + char in[32]; + char out[32]; + /* do in a roundabout way to work around possible mingw or mingw-glibc bug */ + openvpn_snprintf(in, sizeof(in), counter_format, *bytes_in_total); + openvpn_snprintf(out, sizeof(out), counter_format, *bytes_out_total); + msg(M_CLIENT, ">BYTECOUNT_CLI:%lu,%s,%s", mdac->cid, in, out); + mdac->bytecount_last_update = now; + } } static void diff --git a/src/openvpn/manage.h b/src/openvpn/manage.h index f46274e6..621440be 100644 --- a/src/openvpn/manage.h +++ b/src/openvpn/manage.h @@ -511,70 +511,16 @@ void management_auth_token(struct management *man, const char *token); /* * These functions drive the bytecount in/out counters. */ +void +management_bytes_client(struct management *man, + const int size_in, + const int size_out); -void man_bytecount_output_client(struct management *man); - -static inline void -man_bytecount_possible_output_client(struct management *man) -{ - if (man->connection.bytecount_update_seconds > 0 - && now >= man->connection.bytecount_last_update - + man->connection.bytecount_update_seconds) - { - man_bytecount_output_client(man); - } -} - -static inline void -management_bytes_out_client(struct management *man, const int size) -{ - man->persist.bytes_out += size; - man_bytecount_possible_output_client(man); -} - -static inline void -management_bytes_in_client(struct management *man, const int size) -{ - man->persist.bytes_in += size; - man_bytecount_possible_output_client(man); -} - -static inline void -management_bytes_out(struct management *man, const int size) -{ - if (!(man->persist.callback.flags & MCF_SERVER)) - { - management_bytes_out_client(man, size); - } -} - -static inline void -management_bytes_in(struct management *man, const int size) -{ - if (!(man->persist.callback.flags & MCF_SERVER)) - { - management_bytes_in_client(man, size); - } -} - -void man_bytecount_output_server(struct management *man, - const counter_type *bytes_in_total, - const counter_type *bytes_out_total, - struct man_def_auth_context *mdac); - -static inline void +void management_bytes_server(struct management *man, const counter_type *bytes_in_total, const counter_type *bytes_out_total, - struct man_def_auth_context *mdac) -{ - if (man->connection.bytecount_update_seconds > 0 - && now >= mdac->bytecount_last_update + man->connection.bytecount_update_seconds - && (mdac->flags & (DAF_CONNECTION_ESTABLISHED|DAF_CONNECTION_CLOSED)) == DAF_CONNECTION_ESTABLISHED) - { - man_bytecount_output_server(man, bytes_in_total, bytes_out_total, mdac); - } -} + struct man_def_auth_context *mdac); #endif /* ifdef ENABLE_MANAGEMENT */