yesterday I felt impelled to create a new ORTE oob component: tcp6.
I was able to either compile the library with IPv4 or IPv6 support,
but not with both (so to say: two different ompi installations or
at least two different DSO versions).
As far as I can see, many functions use mca_oob_tcp_component.tcp_listen_sd.
Unfortunately, as I am not allowed to use v4mapped addresses (not supported
by the Windows IPv6 stack, disabled by default on *BSD), this socket
is either AF_INET or AF_INET6, but not both (both means AF_INET6 *and*
accepting v4mapped addresses).
Do you agree to go on with two oob components, tcp and tcp6?
There is a lot of duplicated code, but we might refactor this
when everything else will be done.
On the other hand, this whole procedure might be totally useless:
two nodes may exchange IPv4-URIs via IPv6 containing identical
RFC1918 networks. One would prefer IPv4 due to less overhead,
but with IPv6, these v4-addresses might be at different locations
anywhere in the world.
In other words: IPv6 must be tried first or mixing with IPv4
cannot be reliable. In this case, a lot of code may be removed
and we'll end up with either two installations/DSOs (a mentioned
above) or with runtime detection of af_family (i.e. look for
global IPv6 addresses and iff found, disable IPv4 completely)
What do you think - which way is best? Use cases?
mail: adi_at_[hidden] http://adi.thur.de PGP: v2-key via keyserver
Was du tun willst, tue ganz! Oder halb. Oder laß es bleiben.