From b9ad768ae2daf76f9ee2f20da70ecf8d62b6d4e5 Mon Sep 17 00:00:00 2001 From: Qingfang Deng Date: Thu, 27 Feb 2025 11:25:22 +0800 Subject: [PATCH] dco: fix source IP selection when multihome When multihome option is enabled, OpenVPN passes ipi_addr to DCO, which is always 0.0.0.0. It should use ipi_spec_dst instead. Signed-off-by: Qingfang Deng Acked-by: Antonio Quartulli Message-Id: <20250227032522.3734947-1-dqfext@gmail.com> URL: https://sourceforge.net/p/openvpn/mailman/message/59154010/ Signed-off-by: Gert Doering (cherry picked from commit e4beaf7a610793f57984ec8006d26f9a695b0c74) --- src/openvpn/dco.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/openvpn/dco.c b/src/openvpn/dco.c index 7f0d53d3b..e41d59f5a 100644 --- a/src/openvpn/dco.c +++ b/src/openvpn/dco.c @@ -528,7 +528,7 @@ dco_multi_get_localaddr(struct multi_context *m, struct multi_instance *mi, { struct sockaddr_in *sock_in4 = (struct sockaddr_in *)local; #if defined(HAVE_IN_PKTINFO) && defined(HAVE_IPI_SPEC_DST) - sock_in4->sin_addr = actual->pi.in4.ipi_addr; + sock_in4->sin_addr = actual->pi.in4.ipi_spec_dst; #elif defined(IP_RECVDSTADDR) sock_in4->sin_addr = actual->pi.in4; #else -- 2.47.3