Loading core/java/android/net/LinkProperties.java +2 −1 Original line number Diff line number Diff line Loading @@ -667,7 +667,8 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if there is an IPv4 address, {@code false} otherwise. */ private boolean hasIPv4AddressOnInterface(String iface) { return (mIfaceName.equals(iface) && hasIPv4Address()) || // mIfaceName can be null. return (Objects.equals(iface, mIfaceName) && hasIPv4Address()) || (iface != null && mStackedLinks.containsKey(iface) && mStackedLinks.get(iface).hasIPv4Address()); } Loading core/tests/coretests/src/android/net/LinkPropertiesTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public class LinkPropertiesTest extends TestCase { private static LinkAddress LINKADDRV6 = new LinkAddress(ADDRV6, 128); private static LinkAddress LINKADDRV6LINKLOCAL = new LinkAddress("fe80::1/64"); // TODO: replace all calls to NetworkUtils.numericToInetAddress with calls to this method. private InetAddress Address(String addrString) { return NetworkUtils.numericToInetAddress(addrString); } public void assertLinkPropertiesEqual(LinkProperties source, LinkProperties target) { // Check implementation of equals(), element by element. assertTrue(source.isIdenticalInterfaceName(target)); Loading Loading @@ -647,5 +652,26 @@ public class LinkPropertiesTest extends TestCase { assertTrue(v6lp.isReachable(kLinkLocalDnsWithScope)); assertTrue(v6lp.isReachable(kOnLinkDns)); assertTrue(v6lp.isReachable(DNS6)); // Check isReachable on stacked links. This requires that the source IP address be assigned // on the interface returned by the route lookup. LinkProperties stacked = new LinkProperties(); // Can't add a stacked link without an interface name. stacked.setInterfaceName("v4-test0"); v6lp.addStackedLink(stacked); InetAddress stackedAddress = Address("192.0.0.4"); LinkAddress stackedLinkAddress = new LinkAddress(stackedAddress, 32); assertFalse(v6lp.isReachable(stackedAddress)); stacked.addLinkAddress(stackedLinkAddress); assertFalse(v6lp.isReachable(stackedAddress)); stacked.addRoute(new RouteInfo(stackedLinkAddress)); assertTrue(stacked.isReachable(stackedAddress)); assertTrue(v6lp.isReachable(stackedAddress)); assertFalse(v6lp.isReachable(DNS1)); stacked.addRoute(new RouteInfo((IpPrefix) null, stackedAddress)); assertTrue(v6lp.isReachable(DNS1)); } } Loading
core/java/android/net/LinkProperties.java +2 −1 Original line number Diff line number Diff line Loading @@ -667,7 +667,8 @@ public final class LinkProperties implements Parcelable { * @return {@code true} if there is an IPv4 address, {@code false} otherwise. */ private boolean hasIPv4AddressOnInterface(String iface) { return (mIfaceName.equals(iface) && hasIPv4Address()) || // mIfaceName can be null. return (Objects.equals(iface, mIfaceName) && hasIPv4Address()) || (iface != null && mStackedLinks.containsKey(iface) && mStackedLinks.get(iface).hasIPv4Address()); } Loading
core/tests/coretests/src/android/net/LinkPropertiesTest.java +26 −0 Original line number Diff line number Diff line Loading @@ -48,6 +48,11 @@ public class LinkPropertiesTest extends TestCase { private static LinkAddress LINKADDRV6 = new LinkAddress(ADDRV6, 128); private static LinkAddress LINKADDRV6LINKLOCAL = new LinkAddress("fe80::1/64"); // TODO: replace all calls to NetworkUtils.numericToInetAddress with calls to this method. private InetAddress Address(String addrString) { return NetworkUtils.numericToInetAddress(addrString); } public void assertLinkPropertiesEqual(LinkProperties source, LinkProperties target) { // Check implementation of equals(), element by element. assertTrue(source.isIdenticalInterfaceName(target)); Loading Loading @@ -647,5 +652,26 @@ public class LinkPropertiesTest extends TestCase { assertTrue(v6lp.isReachable(kLinkLocalDnsWithScope)); assertTrue(v6lp.isReachable(kOnLinkDns)); assertTrue(v6lp.isReachable(DNS6)); // Check isReachable on stacked links. This requires that the source IP address be assigned // on the interface returned by the route lookup. LinkProperties stacked = new LinkProperties(); // Can't add a stacked link without an interface name. stacked.setInterfaceName("v4-test0"); v6lp.addStackedLink(stacked); InetAddress stackedAddress = Address("192.0.0.4"); LinkAddress stackedLinkAddress = new LinkAddress(stackedAddress, 32); assertFalse(v6lp.isReachable(stackedAddress)); stacked.addLinkAddress(stackedLinkAddress); assertFalse(v6lp.isReachable(stackedAddress)); stacked.addRoute(new RouteInfo(stackedLinkAddress)); assertTrue(stacked.isReachable(stackedAddress)); assertTrue(v6lp.isReachable(stackedAddress)); assertFalse(v6lp.isReachable(DNS1)); stacked.addRoute(new RouteInfo((IpPrefix) null, stackedAddress)); assertTrue(v6lp.isReachable(DNS1)); } }