summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Lorenzo Colitti <lorenzo@google.com> 2015-01-29 08:37:58 +0000
committer android-build-merger <android-build-merger@google.com> 2015-01-29 08:37:58 +0000
commitfb696894ee24ffee3135f4bc460afa84f23efaeb (patch)
treedb7d9f480515002008eaed942559b446616183e8
parent02236295a43380b21e4cae10b13da3398d607627 (diff)
parent106da5bf80d182a2e6fd346e1836ae4fc0ba1d92 (diff)
Merge "Support connecting to networks with misconfigured subnet masks."
automerge: 106da5b * commit '106da5bf80d182a2e6fd346e1836ae4fc0ba1d92': Support connecting to networks with misconfigured subnet masks.
-rw-r--r--core/java/android/net/StaticIpConfiguration.java15
1 files changed, 11 insertions, 4 deletions
diff --git a/core/java/android/net/StaticIpConfiguration.java b/core/java/android/net/StaticIpConfiguration.java
index 5a273cfaa65a..8bf8f2ebafc6 100644
--- a/core/java/android/net/StaticIpConfiguration.java
+++ b/core/java/android/net/StaticIpConfiguration.java
@@ -76,15 +76,22 @@ public class StaticIpConfiguration implements Parcelable {
/**
* Returns the network routes specified by this object. Will typically include a
- * directly-connected route for the IP address's local subnet and a default route.
+ * directly-connected route for the IP address's local subnet and a default route. If the
+ * default gateway is not covered by the directly-connected route, it will also contain a host
+ * route to the gateway as well. This configuration is arguably invalid, but it used to work
+ * in K and earlier, and other OSes appear to accept it.
*/
public List<RouteInfo> getRoutes(String iface) {
- List<RouteInfo> routes = new ArrayList<RouteInfo>(2);
+ List<RouteInfo> routes = new ArrayList<RouteInfo>(3);
if (ipAddress != null) {
- routes.add(new RouteInfo(ipAddress, null, iface));
+ RouteInfo connectedRoute = new RouteInfo(ipAddress, null, iface);
+ routes.add(connectedRoute);
+ if (gateway != null && !connectedRoute.matches(gateway)) {
+ routes.add(RouteInfo.makeHostRoute(gateway, iface));
+ }
}
if (gateway != null) {
- routes.add(new RouteInfo((LinkAddress) null, gateway, iface));
+ routes.add(new RouteInfo((IpPrefix) null, gateway, iface));
}
return routes;
}