Fix adding of default route.

If you deleted the host routes (started a secondary network like mms, supl
of hipri and then ended it) you would lose the host route to the default
gateway.  Then if you needed to re-add the default gateway route (lost
the connection and removed the default route and then re-established)
you couldn't - can't add a gateway that isn't routable apparently.

This happens if you are in a video chat and lose your connection without
losing the interface (PPP keeps it up for a bit).

Fixed it by having addDefaultRoute first add a hsot route for the gateway
before adding the default route.  This allows the default add to succeed.

bug:3490353
Change-Id: I415e7319832e6456f8757b14c4f79f098a08839b
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index 14a6b96..fcb4c23 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1415,10 +1415,13 @@
         if (TextUtils.isEmpty(interfaceName)) return;
         for (InetAddress gateway : p.getGateways()) {
 
-            if (!NetworkUtils.addDefaultRoute(interfaceName, gateway) && DBG) {
-                NetworkInfo networkInfo = nt.getNetworkInfo();
-                log("addDefaultRoute for " + networkInfo.getTypeName() +
-                        " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+            if (NetworkUtils.addHostRoute(interfaceName, gateway, null) &&
+                    NetworkUtils.addDefaultRoute(interfaceName, gateway)) {
+                if (DBG) {
+                    NetworkInfo networkInfo = nt.getNetworkInfo();
+                    log("addDefaultRoute for " + networkInfo.getTypeName() +
+                            " (" + interfaceName + "), GatewayAddr=" + gateway.getHostAddress());
+                }
             }
         }
     }
@@ -1430,10 +1433,12 @@
         String interfaceName = p.getInterfaceName();
 
         if (interfaceName != null) {
-            if ((NetworkUtils.removeDefaultRoute(interfaceName) >= 0) && DBG) {
-                NetworkInfo networkInfo = nt.getNetworkInfo();
-                log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
-                        interfaceName + ")");
+            if (NetworkUtils.removeDefaultRoute(interfaceName) >= 0) {
+                if (DBG) {
+                    NetworkInfo networkInfo = nt.getNetworkInfo();
+                    log("removeDefaultRoute for " + networkInfo.getTypeName() + " (" +
+                            interfaceName + ")");
+                }
             }
         }
     }