summaryrefslogtreecommitdiffstats
path: root/src/openvpn/manage.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/openvpn/manage.c')
-rw-r--r--src/openvpn/manage.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/openvpn/manage.c b/src/openvpn/manage.c
index af4aa44..d02dac9 100644
--- a/src/openvpn/manage.c
+++ b/src/openvpn/manage.c
@@ -1129,7 +1129,7 @@ man_remote (struct management *man, const char **p)
#ifdef TARGET_ANDROID
static void
-man_network_change (struct management *man)
+man_network_change (struct management *man, bool samenetwork)
{
/* Called to signal the OpenVPN that the network configuration has changed and
the client should either float or reconnect.
@@ -1138,7 +1138,8 @@ man_network_change (struct management *man)
*/
if (man->persist.callback.network_change)
{
- int fd = (*man->persist.callback.network_change)(man->persist.callback.arg);
+ int fd = (*man->persist.callback.network_change)
+ (man->persist.callback.arg, samenetwork);
man->connection.fdtosend = fd;
msg (M_CLIENT, "PROTECTFD: fd '%d' sent to be protected", fd);
if (fd == -2)
@@ -1193,7 +1194,11 @@ man_dispatch_command (struct management *man, struct status_output *so, const ch
#ifdef TARGET_ANDROID
else if (streq (p[0], "network-change"))
{
- man_network_change(man);
+ bool samenetwork = false;
+ if (p[1] && streq(p[1], "samenetwork"))
+ samenetwork = true;
+
+ man_network_change(man, samenetwork);
}
#endif
else if (streq (p[0], "load-stats"))