diff --git a/core/java/android/net/RouteInfo.java b/core/java/android/net/RouteInfo.java index 9c4e48bd1e..39e708a8d9 100644 --- a/core/java/android/net/RouteInfo.java +++ b/core/java/android/net/RouteInfo.java @@ -47,13 +47,25 @@ public class RouteInfo implements Parcelable { public RouteInfo(LinkAddress destination, InetAddress gateway) { if (destination == null) { try { - if ((gateway != null) || (gateway instanceof Inet4Address)) { - destination = new LinkAddress(Inet4Address.ANY, 0); + if (gateway != null) { + if (gateway instanceof Inet4Address) { + destination = new LinkAddress(Inet4Address.ANY, 0); + } else { + destination = new LinkAddress(Inet6Address.ANY, 0); + } } else { - destination = new LinkAddress(Inet6Address.ANY, 0); + // no destination, no gateway. invalid. + throw new RuntimeException("Invalid arguments passed in."); } } catch (Exception e) {} } + if (gateway == null) { + if (destination.getAddress() instanceof Inet4Address) { + gateway = Inet4Address.ANY; + } else { + gateway = Inet6Address.ANY; + } + } mDestination = new LinkAddress(NetworkUtils.getNetworkPart(destination.getAddress(), destination.getNetworkPrefixLength()), destination.getNetworkPrefixLength()); mGateway = gateway;