Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/ikvm-fork.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjfrijters <jfrijters>2015-08-27 15:10:10 +0300
committerjfrijters <jfrijters>2015-08-27 15:10:10 +0300
commit9d164ede04a8fb08a709f878a14d57ca4834095f (patch)
tree2f74d3ebc0ddf74cea844a7efd37c680812ba885
parent532a385037dc6f27c865d98cc829bbbcb431e06a (diff)
Don't report IPv4 addresses on interfaces that aren't up. This matches JDK behavior.
-rw-r--r--runtime/openjdk/java.net.cs7
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;