]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
PUSH_UPDATE server: update reporting_addr after ifconfig update
authorMarco Baffo <marco@mandelbit.com>
Tue, 4 Nov 2025 08:55:47 +0000 (09:55 +0100)
committerGert Doering <gert@greenie.muc.de>
Tue, 4 Nov 2025 09:06:35 +0000 (10:06 +0100)
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 <marco@mandelbit.com>
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 <gert@greenie.muc.de>
src/openvpn/multi.c

index 261209d0ec703cea4fef6d436db1400ba9105a15..2b944667063dbecd80d127b4942f3b8830f2f7f6 100644 (file)
@@ -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;
         }
     }
 }