]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
dco: pass remoteaddr only for UDP peers
authorAntonio Quartulli <antonio@mandelbit.com>
Sun, 9 Mar 2025 15:30:17 +0000 (16:30 +0100)
committerGert Doering <gert@greenie.muc.de>
Sun, 9 Mar 2025 15:32:28 +0000 (16:32 +0100)
TCP connected sockets do not need any remote addr
because the destination is fixed.
For this reason we can avoid sending the remote addr
along the peer-new dco call.

This change is important on Linux because the new 'ovpn'
kernel module is stricter when it comes to accepting
netlink messages and will reject calls with TCP sockets
if a remote address is specified.

Change-Id: I76e2e616c6ffe436a9627fa71aaace74030b2f4a
Signed-off-by: Antonio Quartulli <antonio@mandelbit.com>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20250309153017.5163-1-gert@greenie.muc.de>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg31078.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/dco.c

index 02fae81626910677ec098292784bb7070ddfbc0f..973c848ca05abd7574c089ad373a581fb493dfea 100644 (file)
@@ -515,8 +515,9 @@ dco_p2p_add_new_peer(struct context *c)
         c->c2.tls_multi->dco_peer_id = -1;
     }
 #endif
-    int ret = dco_new_peer(&c->c1.tuntap->dco, multi->peer_id,
-                           c->c2.link_sockets[0]->sd, NULL, remoteaddr, NULL, NULL);
+    int ret = dco_new_peer(&c->c1.tuntap->dco, multi->peer_id, sock->sd, NULL,
+                           proto_is_dgram(sock->info.proto) ? remoteaddr : NULL,
+                           NULL, NULL);
     if (ret < 0)
     {
         return ret;