]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Use pseudo gw as default gw on Android as a workaround for not being able to read...
authorArne Schwabe <arne@rfc2549.org>
Tue, 15 Sep 2015 09:23:35 +0000 (11:23 +0200)
committerGert Doering <gert@greenie.muc.de>
Tue, 15 Sep 2015 11:23:21 +0000 (13:23 +0200)
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <1442309019-7586-5-git-send-email-arne@rfc2549.org>
URL: http://article.gmane.org/gmane.network.openvpn.devel/10111

Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/route.c

index d7d2eeea22f6a60dcb521b8fb09a33f88f91f700..baa4a232b3a937f500a3eb86899a6b93d60894df 100644 (file)
@@ -2509,6 +2509,7 @@ get_default_gateway (struct route_gateway_info *rgi)
 
   CLEAR(*rgi);
 
+#ifndef TARGET_ANDROID
   /* get default gateway IP addr */
   {
     FILE *fp = fopen ("/proc/net/route", "r");
@@ -2565,6 +2566,19 @@ get_default_gateway (struct route_gateway_info *rgi)
          }
       }
   }
+#else
+  /* Android, set some pseudo GW, addr is in host byte order,
+   * Determining the default GW on Android 5.0+ is non trivial
+   * and serves almost no purpose since OpenVPN only uses the
+   * default GW address to add routes for networks that should
+   * NOT be routed over the VPN. Using a well known address
+   * (127.'d'.'g'.'w') for the default GW make detecting
+   * these routes easier from the controlling app.
+   */
+  rgi->gateway.addr = 127 << 24 | 'd' << 16 | 'g' << 8 | 'w';
+  rgi->flags |= RGI_ADDR_DEFINED;
+  strcpy(best_name, "android-gw");
+#endif
 
   /* scan adapter list */
   if (rgi->flags & RGI_ADDR_DEFINED)