diff options
author | jfrijters <jfrijters> | 2015-08-27 15:10:10 +0300 |
---|---|---|
committer | jfrijters <jfrijters> | 2015-08-27 15:10:10 +0300 |
commit | 9d164ede04a8fb08a709f878a14d57ca4834095f (patch) | |
tree | 2f74d3ebc0ddf74cea844a7efd37c680812ba885 | |
parent | 532a385037dc6f27c865d98cc829bbbcb431e06a (diff) |
Don't report IPv4 addresses on interfaces that aren't up. This matches JDK behavior.
-rw-r--r-- | runtime/openjdk/java.net.cs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/runtime/openjdk/java.net.cs b/runtime/openjdk/java.net.cs index 4f3ade93..ea81ef22 100644 --- a/runtime/openjdk/java.net.cs +++ b/runtime/openjdk/java.net.cs @@ -514,6 +514,13 @@ static class Java_java_net_NetworkInterface IPAddress addr = uipaic[j].Address; if (addr.AddressFamily == AddressFamily.InterNetwork) { + if (ifaces[i].OperationalStatus != OperationalStatus.Up) + { + // HACK on Windows, OpenJDK seems to only return IPv4 addresses for interfaces that are up. + // This is possibly the result of their usage of the (legacy) Win32 API GetIpAddrTable. + // Not doing this filtering causes some OpenJDK tests to fail. + continue; + } java.net.Inet4Address address = new java.net.Inet4Address(null, addr.GetAddressBytes()); java.net.InterfaceAddress binding = new java.net.InterfaceAddress(); short mask = 32; |