From efa66d9fe97c2525b56a9f22cc3a98debe8ec9ea Mon Sep 17 00:00:00 2001 From: Kazuhiro Ondo Date: Wed, 11 May 2011 14:55:19 -0500 Subject: [PATCH] Fix initialization of RouteInfo IPv6 gateway is not correctly set in RouteInfo Change-Id: I24b1ab71a64e3097c9ba641899240fc27847b86c --- core/java/android/net/RouteInfo.java | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) 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;