[Openvpn-devel,v1] dco: mark peer as deleted from kernel after receiving CMD_DEL_PEER notification

Message ID 20240912165339.21058-1-gert@greenie.muc.de
State Accepted
Headers show
Series [Openvpn-devel,v1] dco: mark peer as deleted from kernel after receiving CMD_DEL_PEER notification | expand

Commit Message

Gert Doering Sept. 12, 2024, 4:53 p.m. UTC
From: Antonio Quartulli <antonio@mandelbit.com>

some extra DCO calls may be made after receiving the DEL_PEER
notification (i.e. due to timeout), but this will result in
an error message due to the peer having disappeared already.

An extra call might be, for example, an explicit DEL_PEER
in the attempt of cleaning the peer state.

For this reason, inform userspace that there is no peer in
kernel anymore and prevent errors which may result confusing.

Change-Id: Ife50e37cd49d55ec81a70319a524ffeaf0625a56
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
Acked-by: Arne Schwabe <arne-openvpn@rfc2549.org>
---

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/+/744
This mail reflects revision 1 of this Change.

Acked-by according to Gerrit (reflected above):
Arne Schwabe <arne-openvpn@rfc2549.org>

Comments

Gert Doering Sept. 12, 2024, 5:19 p.m. UTC | #1
Trivial enough, and makes sense... not tested further (not that easy
to reproduce).

Your patch has been applied to the master branch.

commit 45bef145f3cc39c4c13609866f07b6cf9f8960a6
Author: Antonio Quartulli
Date:   Thu Sep 12 18:53:39 2024 +0200

     dco: mark peer as deleted from kernel after receiving CMD_DEL_PEER notification

     Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
     Acked-by: Arne Schwabe <arne-openvpn@rfc2549.org>
     Message-Id: <20240912165339.21058-1-gert@greenie.muc.de>
     URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg29226.html
     Signed-off-by: Gert Doering <gert@greenie.muc.de>


--
kind regards,

Gert Doering

Patch

diff --git a/src/openvpn/forward.c b/src/openvpn/forward.c
index 40b7cc4..374ba47 100644
--- a/src/openvpn/forward.c
+++ b/src/openvpn/forward.c
@@ -1256,6 +1256,8 @@ 
     switch (dco->dco_message_type)
     {
         case OVPN_CMD_DEL_PEER:
+            /* peer is gone, unset ID to prevent more kernel calls */
+            c->c2.tls_multi->dco_peer_id = -1;
             if (dco->dco_del_peer_reason == OVPN_DEL_PEER_REASON_EXPIRED)
             {
                 msg(D_DCO_DEBUG, "%s: received peer expired notification of for peer-id "