From: Marco Baffo Date: Tue, 4 Nov 2025 08:55:47 +0000 (+0100) Subject: PUSH_UPDATE server: update reporting_addr after ifconfig update X-Git-Tag: v2.7_rc2~39 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=38e9dd636d115affeb4ec519108978058e4d05a1;p=thirdparty%2Fopenvpn.git PUSH_UPDATE server: update reporting_addr after ifconfig update Update mi->reporting_addr(_ipv6) for status reporting purposes after sending a PUSH_UPDATE containing an ifconfig(-ipv6) option. Github: fixes OpenVPN/openvpn#889 Change-Id: Ie15977b44091445b9d1edebe885d92ec5cb5770a Signed-off-by: Marco Baffo Gerrit URL: https://gerrit.openvpn.net/c/openvpn/+/1340 Message-Id: <20251104085553.8218-1-gert@greenie.muc.de> URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg34186.html Signed-off-by: Gert Doering --- diff --git a/src/openvpn/multi.c b/src/openvpn/multi.c index 261209d0e..2b9446670 100644 --- a/src/openvpn/multi.c +++ b/src/openvpn/multi.c @@ -4346,6 +4346,7 @@ unlearn_ifconfig(struct multi_context *m, struct multi_instance *mi) multi_unlearn_in_addr_t(m, mi, old_addr); mi->context.c2.push_ifconfig_defined = false; mi->context.c2.push_ifconfig_local = 0; + mi->reporting_addr = 0; } /* Function to unlearn previous ifconfig-ipv6 of a client in the server multi_context after a PUSH_UPDATE */ @@ -4358,6 +4359,7 @@ unlearn_ifconfig_ipv6(struct multi_context *m, struct multi_instance *mi) multi_unlearn_in6_addr(m, mi, old_addr6); mi->context.c2.push_ifconfig_ipv6_defined = false; CLEAR(mi->context.c2.push_ifconfig_ipv6_local); + CLEAR(mi->reporting_addr_ipv6); } /** @@ -4389,6 +4391,8 @@ update_vhash(struct multi_context *m, struct multi_instance *mi, const char *new { mi->context.c2.push_ifconfig_defined = true; mi->context.c2.push_ifconfig_local = ntohl(new_addr.s_addr); + /* set our client's VPN endpoint for status reporting purposes */ + mi->reporting_addr = mi->context.c2.push_ifconfig_local; } } @@ -4408,6 +4412,8 @@ update_vhash(struct multi_context *m, struct multi_instance *mi, const char *new { mi->context.c2.push_ifconfig_ipv6_defined = true; mi->context.c2.push_ifconfig_ipv6_local = new_addr6; + /* set our client's VPN endpoint for status reporting purposes */ + mi->reporting_addr_ipv6 = mi->context.c2.push_ifconfig_ipv6_local; } } }