Merge "Add new route.hasGateway() api" into jb-mr2-dev
diff --git a/core/java/android/net/RouteInfo.java b/core/java/android/net/RouteInfo.java
index cc3c5f7..1d051dd 100644
--- a/core/java/android/net/RouteInfo.java
+++ b/core/java/android/net/RouteInfo.java
@@ -60,6 +60,7 @@
 
     private final boolean mIsDefault;
     private final boolean mIsHost;
+    private final boolean mHasGateway;
 
     /**
      * Constructs a RouteInfo object.
@@ -97,6 +98,8 @@
                 gateway = Inet6Address.ANY;
             }
         }
+        mHasGateway = (!gateway.isAnyLocalAddress());
+
         mDestination = new LinkAddress(NetworkUtils.getNetworkPart(destination.getAddress(),
                 destination.getNetworkPrefixLength()), destination.getNetworkPrefixLength());
         mGateway = gateway;
@@ -171,6 +174,10 @@
         return mIsHost;
     }
 
+    public boolean hasGateway() {
+        return mHasGateway;
+    }
+
     public String toString() {
         String val = "";
         if (mDestination != null) val = mDestination.toString();
diff --git a/services/java/com/android/server/ConnectivityService.java b/services/java/com/android/server/ConnectivityService.java
index f320562..01625dd 100644
--- a/services/java/com/android/server/ConnectivityService.java
+++ b/services/java/com/android/server/ConnectivityService.java
@@ -1470,8 +1470,7 @@
             loge("Error modifying route - no interface name");
             return false;
         }
-
-        if (r.isHostRoute() == false) {
+        if (r.hasGateway()) {
             RouteInfo bestRoute = RouteInfo.selectBestRoute(lp.getAllRoutes(), r.getGateway());
             if (bestRoute != null) {
                 if (bestRoute.getGateway().equals(r.getGateway())) {
diff --git a/services/java/com/android/server/wifi/WifiService.java b/services/java/com/android/server/wifi/WifiService.java
index f8d5d2e..4d23e5c 100644
--- a/services/java/com/android/server/wifi/WifiService.java
+++ b/services/java/com/android/server/wifi/WifiService.java
@@ -734,7 +734,7 @@
                 if (gateway instanceof Inet4Address) {
                     info.gateway = NetworkUtils.inetAddressToInt((Inet4Address)gateway);
                 }
-            } else if (r.isHostRoute()) {
+            } else if (r.hasGateway() == false) {
                 LinkAddress dest = r.getDestination();
                 if (dest.getAddress() instanceof Inet4Address) {
                     info.netmask = NetworkUtils.prefixLengthToNetmaskInt(