diff options
| author | 2015-01-29 08:37:58 +0000 | |
|---|---|---|
| committer | 2015-01-29 08:37:58 +0000 | |
| commit | fb696894ee24ffee3135f4bc460afa84f23efaeb (patch) | |
| tree | db7d9f480515002008eaed942559b446616183e8 | |
| parent | 02236295a43380b21e4cae10b13da3398d607627 (diff) | |
| parent | 106da5bf80d182a2e6fd346e1836ae4fc0ba1d92 (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.java | 15 |
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; } |