powered by Jive Software

IPv6, IPv4 and jingle

Hi all,

Does any of provided jingle transport managers handle communication when one client is on an IPv6 network and the other is on IPv4 ?


Can you describe the setup a little more? Do you really have an ipv6-ONLY host? What about the server? Dual stack there?

Edit: Java is fully IPv6 ready, so it should work to the abilities of the underlying OSes. You cant route a packet between IPv4 and IPv6, but if a dual-stack server is set up correctly it should work as a “router” of sorts.

Hi slushpupie, and thanks for your answer.

The server host supports both IPv4 and IPv6 interfaces.

It use openfire. What do you mean by “dual stack” ?

For clients, I have two PCs :

  • the first one on windows, which supports only IPv4

  • the second on linux which has both IPv4 and IPv6 interfaces.

I used the ICETransport manager, but the linux client always use the IPv6

adress for his TransportCandidate, and as the windows PC doesn’t understand IPv6,

it is therefore impossible to communicate.

PS: if I shutdown the IPv6 interface on linux things works fine.

“dual-stack” means it has both ipv4 and ipv6 abilities. If the server is able to handle both, then a message can go from an ipv6 user to the server, and from the server to an ipv4 user without problems. But the ipv6 host will not be able to communicate directly with the ipv4 host using its ipv6 connection. As you noted, if you shut down the ipv6 interface on the one host, it all works fine. Another option is to connect to the server using ipv4 (by specifying the ip address, for example). These mixed setups can sometimes get a little confusing.

Is there a good reason for which none of the TransportCandidates of the linux client are choosed on his IPv4 interface ?


while I have no idea about the TransportCandidates I try to understand this problem. It seems that they do the exchange of the clients IP addresses and this fails. Is this the case or am I completely wrong?

You could add -Djava.net.preferIPv4Stack=true to the Java call of Smack on Linux to make sure that only IPv4 is used by the application, so Linux can continue using IPv6/IPv4.


Hi it200,

TransportCandidates are parameters which are negociated to establish the JingleMediaSession.

It is possible that adding -Djava.net.preferIPv4Stack=true solve the current problem. But, what in case the other client knows only IPv6 ?

As TransportCandidates are “negociated”, I thought that the correct behaviour would be for the client to pickup all possible TransportCandiates and choose a common denominator, as it is done for payloads for example.


We currently don’t support Jingle on “IPV6 only” networks.

We’ll be looking forward on it.

Best Regards,


Hi thiago,

In the case described, the linux client has IPv6 and IPv4. What I don’t understand is why it is IPv6 which is picked for the TransportCandidate given that the other client has only IPv4 while the linux client has both IPv6 and IPv4.


Followup discussion: http://www.igniterealtime.org/community/thread/36598