JDK-6529807 : Can't get data send to Linux IPv6 link-local address
  • Type: Bug
  • Component: core-libs
  • Sub-Component: java.net
  • Affected Version: 6
  • Priority: P3
  • Status: Closed
  • Resolution: Won't Fix
  • OS: generic
  • CPU: generic
  • Submitted: 2007-03-01
  • Updated: 2012-03-22
  • Resolved: 2009-10-30
Related Reports
Relates :  
Relates :  
When investigating CR 6521014 & 6521974, it is found that if a Linux box sends to its own link-local address some data, it can't receive those data. A native Linux application has been developed then. Although it proves that this is a Linux platform problem, not a java one, the issue still need to be tracked. This CR will track the progress about it.

EVALUATION There are two specific issues described by this bug. Both are bugs in the Linux kernel and cause two separate JCK tests to fail. DatagramSocket: fixed in kernel versions greater than Socket: fixed in kernel versions greater than 2.6.12 I verified that both of the JCK test pass on kernel versions greater than the ones listed above.

EVALUATION It *is* because of Linux kernel bug. TCP half of the problem has been fixed in 2.6.12-rc2. See changelog: http://www.kernel.org/pub/linux/kernel/v2.6/testing/ChangeLog-2.6.12-rc2 It reads: [IPV6]: Fix address/interface handling according to the scoping architecture I think this has been there for long time (maybe since 2.4...). With the following patch, I can connect local link-local address. - Change incoming interface according to the scoping architecture - Choose source address on appropriate interface, according to the scoping architecture. And UDP portion has been recorded in Linux kernel bug database: http://bugzilla.kernel.org/show_bug.cgi?id=7432 synopsis "Using Link-local address, IPv6 udp Client and Server running on a same host won't communication".

WORK AROUND On receiving side, bind to IPv6 wildcard address 0::0 instead of link-local address.