Re: [PATCH] epmd: support IPv6 node registration
Fredrik <[email protected]>
| Newsgroups | gmane.comp.lang.erlang.patches |
|---|---|
| Message-ID | <[email protected]> |
On 05/03/2013 04:32 PM, Michael Santos wrote: > On Fri, May 03, 2013 at 04:04:13PM +0200, Fredrik wrote: >> On 05/03/2013 03:44 PM, Fredrik wrote: >>> On 05/03/2013 03:27 PM, Michael Santos wrote: >>>> On Wed, Feb 20, 2013 at 07:55:17AM -0500, Michael Santos wrote: >>>>> Allow IPv6 nodes to register with and query epmd. On systems with >>>>> IPv6 support: >>>>> >>>>> * epmd listens on both the IPv4 and IPv6 ANY or loopback sockets >>>>> >>>>> * the epmd cli client connects to epmd over the IPv6 loopback >>>>> >>>>> * distributed nodes started with "-proto_dist inet6_tcp" will register >>>>> with epmd over IPv6 >>>>> >>>>> The interaction between IPv4 and IPv6 sockets depends on the platform: >>>>> >>>>> * FreeBSD allows multiple "specific" sockets to bind the same >>>>> port (such >>>>> as 2 sockets listening to the same port on ANY and the loopback). >>>>> Binding port 4369 to IPv4 and IPv6 sockets simulataneously >>>>> is allowed. >>>>> >>>>> * Linux does not allow the same port to be bound by different sockets. >>>>> Setting the IPV6_V6ONLY socket option is required. >>>>> >>>>> * Windows >>>>> >>>>> The behaviour differs depending on the version of Windows: >>>>> >>>>> http://msdn.microsoft.com/en-us/library/windows/desktop/bb513665(v=vs.85).aspx >>>>> >>>>> According to the site, sockets on Windows XP with Service >>>>> Pack 1 (SP1) >>>>> and Windows Server 2003 will only listen on either IPv4 or IPv6, so >>>>> creating two sockets is required to service IPv4 and IPv6 traffic on >>>>> the same port. The IPV6_V6ONLY socket option is not supported. >>>>> >>>>> For Windows Vista and later, a single socket can handle >>>>> IPv4 and IPv6 >>>>> traffic for the same port. The IPV6_V6ONLY socket option is >>>>> supported >>>>> and is enabled for IPv6 sockets by default. >>>>> --- >>>>> erts/doc/src/epmd.xml | 2 +- >>>>> erts/doc/src/erl.xml | 22 +++++ >>>>> erts/epmd/src/epmd.c | 6 +- >>>>> erts/epmd/src/epmd_cli.c | 11 ++- >>>>> erts/epmd/src/epmd_int.h | 63 +++++++++---- >>>>> erts/epmd/src/epmd_srv.c | 184 >>>>> +++++++++++++++++++++++++------------ >>>>> erts/epmd/test/epmd_SUITE.erl | 33 ++++++- >>>>> lib/kernel/src/erl_epmd.erl | 18 ++-- >>>>> lib/kernel/src/inet6_tcp_dist.erl | 2 +- >>>>> 9 files changed, 248 insertions(+), 93 deletions(-) >>>> ping! >>>> _______________________________________________ >>>> erlang-patches mailing list >>>> [email protected] >>>> http://erlang.org/mailman/listinfo/erlang-patches >>> I thought that I've already mailed you back regarding this patch. >>> But now I don't seem to remember what I wanted you to do about it. >>> I will run it in 'pu' builds over the weekend. If it turns out OK >>> it will be reviewed. >>> >> Ok, >> Found out what I was suppose to mail you about: >> It does not build on windows; >> >> epmd_srv.o : error LNK2019: unresolved external symbol IN6_ARE_ADDR_EQUAL referenced in function conn_local_peer_check >> epmd_srv.o : error LNK2019: unresolved external symbol IN6_IS_ADDR_LOOPBACK referenced in function conn_local_peer_check >> ****/bin/win32/epmd.exe : fatal error LNK1120: 2 unresolved externals > I *think* the last version of the patch fixes the link error on Windows > (haven't tested it). It sets the Windows version as suggested by Patrik > Nyblom. > > Sorry for the confusion. I can re-send the patch or I can post it to > github. Please post it on github! :) -- BR Fredrik Gustafsson Erlang OTP Team _______________________________________________ erlang-patches mailing list [email protected] http://erlang.org/mailman/listinfo/erlang-patches