Merge "Support connecting to networks with misconfigured subnet masks."

This commit is contained in:
Lorenzo Colitti
2015-01-29 08:35:35 +00:00
committed by Gerrit Code Review

View File

@@ -76,15 +76,22 @@ public class StaticIpConfiguration implements Parcelable {
/** /**
* Returns the network routes specified by this object. Will typically include a * 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) { public List<RouteInfo> getRoutes(String iface) {
List<RouteInfo> routes = new ArrayList<RouteInfo>(2); List<RouteInfo> routes = new ArrayList<RouteInfo>(3);
if (ipAddress != null) { 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) { if (gateway != null) {
routes.add(new RouteInfo((LinkAddress) null, gateway, iface)); routes.add(new RouteInfo((IpPrefix) null, gateway, iface));
} }
return routes; return routes;
} }