Hi, I encountered a bug while migrating from FreeBSDs old "Diablo jre" to openjdk-jre version 6.
I'm running a software using multicast communication and it fails on FreeBSD when using openjdk6. example code: import java.io.IOException; import java.net.InetAddress; import java.net.MulticastSocket; import java.net.SocketException; import java.net.UnknownHostException; class Main { static String hostname = new String("10.0.1.1"); public static void main(String args[]) throws SocketException, UnknownHostException, IOException{ InetAddress ia = InetAddress.getByName(hostname); MulticastSocket ssdpSocket = new MulticastSocket(); ssdpSocket.setInterface(ia); System.out.println("network interface: " + ssdpSocket.getNetworkInterface()); System.out.println("interface: " + ssdpSocket.getInterface()); } } The output of the old "Diablo JRE" is: network interface: name:null index: -1 addresses: /10.0.1.1; interface: /10.0.1.1 The output of openJDK6 is: network interface: name:null interface: /0.0.0.0 It always returns this information. For comparison - openjdk on Linux: network interface: name:eth0 (eth0) interface: /10.0.1.54 Oracle 7 VM on Windows: network interface: name:eth3 (Realtek PCIe GBE Family Controller) interface: /10.0.1.51 For me this seems to be an implementation bug of... I don't know? PlainDatagramSocketImpl.c maybe? I tried to debug this further, but did not succeeded to find out if either setInterface() failed to set it correctly, or somewhere in getInterface() an early return() happens. I tried to remotly debug this using Eclipse, but only saw the private variables of ssdpSocket which didn't indicated something obvious. Breakpoints inside java.net.MulticastSocket would have helped ;)