[erlang-patches] [PATCH] epmd: support IPv6 node registration

Fredrik <>
Mon May 6 10:34:33 CEST 2013


On 05/03/2013 07:50 PM, Michael Santos wrote:
> On Fri, May 03, 2013 at 04:36:08PM +0200, Fredrik wrote:
>> 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
>>>>>> 
>>>>>> 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! :)
> Done!
>
> git fetch git://github.com/msantos/otp.git epmd-IPv6-node-reg
>
> https://github.com/msantos/otp/compare/erlang:maint...epmd-IPv6-node-reg
> https://github.com/msantos/otp/compare/erlang:maint...epmd-IPv6-node-reg.patch
Failing to 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



-- 

BR Fredrik Gustafsson
Erlang OTP Team



More information about the erlang-patches mailing list