----- Original Message ----- From: "Bjoern A. Zeeb" <b...@freebsd.org>
To: "Steven Hartland" <kill...@multiplay.co.uk>
Cc: <freebsd-net@freebsd.org>
Sent: Saturday, June 25, 2011 10:27 AM
Subject: Re: IPv4 socket bind using IPv6 socket on openjdk6 breaks udp send


On Jun 24, 2011, at 9:11 PM, Steven Hartland wrote:

Hi,

We're trying to get our machines IPv6 enabled but in doing so this
seems to break java apps using openjdk6 for UDP sends.

One of the clues I can give you is:
http://diario.behrens.de/2008/10/12/java_and_ipv6_on_bsd.html

it's old(er) and I have lately been tolded that openjdk has a problem.
Yer read that but it seems like the jdk7 patch is already in which should
fix it:-
http://www.freebsd.org/cgi/cvsweb.cgi/ports/java/openjdk6/files/patch-set


using truss we see the following:-
socket(PF_INET6,SOCK_DGRAM,0)            = 20 (0x14)
setsockopt(0x14,0x29,0x1b,0x7ffffedf0318,0x4,0x0) = 0 (0x0)
setsockopt(0x14,0xffff,0x20,0x7ffffedf031c,0x4,0x0) = 0 (0x0)
bind(20,{ AF_INET6 [3800::10:0:0:0]:20736 },28)  = 0 (0x0)
..
recvfrom(20,0x7ffffeaeb580,1460,0x0,0x7ffffeaed580,0x7ffffeaed5ac) ERR#60 
'Operation timed out'
..
sendto(20,"\M^?\M^?\M^?\M^?I\aMultiplay :: "...,82,0x0,{ AF_INET6 
[3800::10:0:0:0]:20736 },0x1c) ERR#22 'Invalid argument'

So how much is really between these ...?   If you want, can you send
me a full output in private email?

Just a load of gettimeofday, clock_gettime, _umtx_op and mprotect calls nothing
of interest.

Also which version of FreeBSD is this?
8.2-RELEASE

sockstat shows it binding correctly
root     java       894   21 tcp4   85.236.109.212:25675  *:*

That's unfortunately unreleated.

Yer cut and paste error (wrong line) heres the correct line.
root     java       894   20 udp4   85.236.109.212:25675  *:*

21 is the tcp port created in the same manor (ipv6 socket) which works
fine.

The following PR seems relevant but also seems to indicate it was
fixed back in 2006
http://www.freebsd.org/cgi/query-pr.cgi?pr=92620

This doesn't seen to be related to the above as 3800::10:0:0:0 is
not a v4-mapped-v6 address.  Now there could be the problem really.
Do you know which address the code above was trying to talk with?

I'm wondering if thats a decode error by truss, as it doesn't seem
to corrispond to anything on the machine and is the same no matter
what ip the socket is bound to. ifconfig output in my last reply if
that helps.

Also do you have a very simple test program I could try to run if
I compile openjdk6?

The attached java file demonstrates the behviour.
java Main <ipv4 address>

Then just send any udp packet to <ipv4 address>:25675 it should
respond with pong but on a dual stack machine it just throws as
exception:-
WARNING: IO: Invalid argument
java.io.IOException: Invalid argument
       at java.net.PlainDatagramSocketImpl.send(Native Method)
       at java.net.DatagramSocket.send(DatagramSocket.java:629)
       at Main.main(Main.java:34)

   Regards
   Steve


================================================
This e.mail is private and confidential between Multiplay (UK) Ltd. and the person or entity to whom it is addressed. In the event of misdirection, the recipient is prohibited from using, copying, printing or otherwise disseminating it or any information contained in it.
In the event of misdirection, illegible or incomplete transmission please 
telephone +44 845 868 1337
or return the E.mail to postmas...@multiplay.co.uk.

Attachment: Main.java
Description: Binary data

_______________________________________________
freebsd-net@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-net
To unsubscribe, send any mail to "freebsd-net-unsubscr...@freebsd.org"

Reply via email to