[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20251121002044.16071-13-antonio@openvpn.net>
Date: Fri, 21 Nov 2025 01:20:43 +0100
From: Antonio Quartulli <antonio@...nvpn.net>
To: netdev@...r.kernel.org
Cc: Ralf Lici <ralf@...delbit.com>,
Sabrina Dubroca <sd@...asysnail.net>,
Jakub Kicinski <kuba@...nel.org>,
linux-kselftest@...r.kernel.org,
Shuah Khan <shuah@...nel.org>,
Antonio Quartulli <antonio@...nvpn.net>
Subject: [RFC net-next 12/13] ovpn: use bound address in UDP when available
From: Ralf Lici <ralf@...delbit.com>
Use the socket's locally bound address if it's explicitly specified via
the --local option in openvpn.
Signed-off-by: Ralf Lici <ralf@...delbit.com>
Signed-off-by: Antonio Quartulli <antonio@...nvpn.net>
---
drivers/net/ovpn/udp.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/drivers/net/ovpn/udp.c b/drivers/net/ovpn/udp.c
index 328819f27e1e..42798aca7bce 100644
--- a/drivers/net/ovpn/udp.c
+++ b/drivers/net/ovpn/udp.c
@@ -148,7 +148,7 @@ static int ovpn_udp4_output(struct ovpn_peer *peer, struct ovpn_bind *bind,
{
struct rtable *rt;
struct flowi4 fl = {
- .saddr = bind->local.ipv4.s_addr,
+ .saddr = inet_sk(sk)->inet_rcv_saddr ?: bind->local.ipv4.s_addr,
.daddr = bind->remote.in4.sin_addr.s_addr,
.fl4_sport = inet_sk(sk)->inet_sport,
.fl4_dport = bind->remote.in4.sin_port,
@@ -226,7 +226,9 @@ static int ovpn_udp6_output(struct ovpn_peer *peer, struct ovpn_bind *bind,
int ret;
struct flowi6 fl = {
- .saddr = bind->local.ipv6,
+ .saddr = ipv6_addr_any(&sk->sk_v6_rcv_saddr) ?
+ bind->local.ipv6 :
+ sk->sk_v6_rcv_saddr,
.daddr = bind->remote.in6.sin6_addr,
.fl6_sport = inet_sk(sk)->inet_sport,
.fl6_dport = bind->remote.in6.sin6_port,
--
2.51.2
Powered by blists - more mailing lists