Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Affect the order of NetworkInterface.getNetworkInterfaces enumeration in Java 6 on Linux

What is the order in which NetworkInterface.getNetworkInterfaces() returns an enumeration of network interfaces? Is there a way to affect that on JVM level or on Linux OS level?

like image 612
Andrey Adamovich Avatar asked May 19 '11 08:05

Andrey Adamovich


3 Answers

According to the source of the OpenJDK (found in src/solaris/native/java/net/NetworkInterface.c, method enumInterfaces) it will return IPv4 interfaces first (method enumIPv4Interfaces), followed by IPv6 interfaces (method enumIPv6Interfaces).

The order within those categories seems to be the same that the OS uses (it uses the SIOCGIFCONF ioctl).

Note that this is implementation dependent and not defined, so any implementation can very easily do it differently.

like image 128
Joachim Sauer Avatar answered Nov 10 '22 01:11

Joachim Sauer


This simply delegates to a native call, and no I'm not aware of any way to alter it.

like image 37
MJB Avatar answered Nov 10 '22 01:11

MJB


If you take a look at sources, then you see that getNetworkInterfaces just return enumeration, which backed with a NetworkInterface array, which is returned by getAll() method, which is native. So, it is implementation dependent and system dependent. You can't do anything with this.

like image 24
Vladimir Ivanov Avatar answered Nov 10 '22 01:11

Vladimir Ivanov