Attention is currently required from: flichtenheld, plaisthos.
Hello plaisthos, flichtenheld,
I'd like you to do a code review.
Please visit
http://gerrit.openvpn.net/c/openvpn/+/1285?usp=email
to review the following change.
Change subject: management: ensure consistent BYTECOUNT timing on server
......................................................................
management: ensure consistent BYTECOUNT timing on server
The BYTECOUNT notification is expected to be emitted every N seconds
when a management client issues the 'bytecount N' command. However, the
server currently relies on timeouts from unrelated periodic operations,
resulting in irregular notification timing.
This issue is especially noticeable with low bytecount intervals and DCO
enabled, as openvpn handles less traffic in userspace, causing the main
loop to run less frequently.
To address this, refactor the timeout logic and pass the timeval
reference to management_check_bytecount_server so that the timeout is
correctly set and notifications adhere to the specified interval.
Change-Id: Ifb1c49fce75e671f699f5db5f6da7246f6e0b519
Signed-off-by: Ralf Lici <[email protected]>
---
M src/openvpn/manage.c
M src/openvpn/manage.h
M src/openvpn/multi.c
M src/openvpn/multi.h
4 files changed, 17 insertions(+), 13 deletions(-)
git pull ssh://gerrit.openvpn.net:29418/openvpn refs/changes/85/1285/1
diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c
index 1cb5c63..685b137 100644
--- a/src/openvpn/manage.c
+++ b/src/openvpn/manage.c
@@ -4184,16 +4184,14 @@
}
void
-management_check_bytecount_server(struct multi_context *multi)
+management_check_bytecount_server(struct multi_context *multi, struct timeval
*timeval)
{
if (!(management->persist.callback.flags & MCF_SERVER))
{
return;
}
- struct timeval null;
- CLEAR(null);
- if
(event_timeout_trigger(&management->connection.bytecount_update_interval,
&null, ETT_DEFAULT))
+ if
(event_timeout_trigger(&management->connection.bytecount_update_interval,
timeval, ETT_DEFAULT))
{
/* fetch counters from dco */
if (dco_enabled(&multi->top.options))
diff --git a/src/openvpn/manage.h b/src/openvpn/manage.h
index a31eb06..fe460bf 100644
--- a/src/openvpn/manage.h
+++ b/src/openvpn/manage.h
@@ -493,7 +493,7 @@
void management_check_bytecount_client(struct context *c, struct management
*man, struct timeval *timeval);
-void management_check_bytecount_server(struct multi_context *multi);
+void management_check_bytecount_server(struct multi_context *multi, struct
timeval *timeval);
void man_persist_client_stats(struct management *man, struct context *c);
diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c
index e907524..f9ef781 100644
--- a/src/openvpn/multi.c
+++ b/src/openvpn/multi.c
@@ -3809,13 +3809,6 @@
{
check_stale_routes(m);
}
-
-#ifdef ENABLE_MANAGEMENT
- if (management)
- {
- management_check_bytecount_server(m);
- }
-#endif /* ENABLE_MANAGEMENT */
}
static void
@@ -4166,6 +4159,19 @@
ASSERT(mi->context.c2.tls_multi->peer_id < m->max_clients);
}
+static void
+multi_get_timeout(struct multi_context *multi, struct timeval *timeval)
+{
+ multi_get_timeout_instance(multi, timeval);
+
+#ifdef ENABLE_MANAGEMENT
+ if (management)
+ {
+ management_check_bytecount_server(multi, timeval);
+ }
+#endif
+}
+
/**************************************************************************/
/**
* Main event loop for OpenVPN in point-to-multipoint server mode.
diff --git a/src/openvpn/multi.h b/src/openvpn/multi.h
index 97bbc4a..8e3b9ca 100644
--- a/src/openvpn/multi.h
+++ b/src/openvpn/multi.h
@@ -590,7 +590,7 @@
* to current time.
*/
static inline void
-multi_get_timeout(struct multi_context *m, struct timeval *dest)
+multi_get_timeout_instance(struct multi_context *m, struct timeval *dest)
{
struct timeval tv, current;
--
To view, visit http://gerrit.openvpn.net/c/openvpn/+/1285?usp=email
To unsubscribe, or for help writing mail filters, visit
http://gerrit.openvpn.net/settings?usp=email
Gerrit-MessageType: newchange
Gerrit-Project: openvpn
Gerrit-Branch: master
Gerrit-Change-Id: Ifb1c49fce75e671f699f5db5f6da7246f6e0b519
Gerrit-Change-Number: 1285
Gerrit-PatchSet: 1
Gerrit-Owner: ralf_lici <[email protected]>
Gerrit-Reviewer: flichtenheld <[email protected]>
Gerrit-Reviewer: plaisthos <[email protected]>
Gerrit-CC: openvpn-devel <[email protected]>
Gerrit-Attention: plaisthos <[email protected]>
Gerrit-Attention: flichtenheld <[email protected]>
_______________________________________________
Openvpn-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openvpn-devel