Hide Forgot
Upstream PR - https://github.com/erlang/otp/pull/1487 [root@rhel7 ~]# export ERL_INET_GETHOST_DEBUG=5 [root@rhel7 ~]# export ERL_EPMD_ADDRESS=fd00::1 [root@rhel7 ~]# export ERL_INETRC=/tmp/inetrc [root@rhel7 ~]# cat /tmp/inetrc {inet6, true}. [root@rhel7 ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 52:54:00:13:f6:0e brd ff:ff:ff:ff:ff:ff inet 192.168.200.200/24 brd 192.168.200.255 scope global dynamic eth0 valid_lft 2951sec preferred_lft 2951sec inet6 fd00::1/128 scope global valid_lft forever preferred_lft forever inet6 fe80::5054:ff:fe13:f60e/64 scope link valid_lft forever preferred_lft forever Before applying patch: [root@rhel7 ~]# erl -sname foo -proto_dist inet6_tcp Erlang/OTP 18 [erts-7.3.1.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V7.3.1.3 (abort with ^G) (foo@rhel7)1> erl_epmd:port_please(foo,rhel7). inet_gethost[17311] (DEBUG):Saved domainname . inet_gethost[17311] (DEBUG):Created worker[17312] with fd 3 inet_gethost[17311] (DEBUG):Saved domainname . inet_gethost[17312] (DEBUG):Worker got request, op = 1, proto = 1, data = rhel7. inet_gethost[17312] (DEBUG):Starting gethostbyname(rhel7) inet_gethost[17312] (DEBUG):gethostbyname OK noport After applying patch: [root@rhel7 ~]# erl -sname foo -proto_dist inet6_tcp Erlang/OTP 18 [erts-7.3.1.3] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false] Eshell V7.3.1.3 (abort with ^G) (foo@rhel7)1> erl_epmd:port_please(foo,rhel7). inet_gethost[17263] (DEBUG):Saved domainname . inet_gethost[17263] (DEBUG):Created worker[17264] with fd 3 inet_gethost[17263] (DEBUG):Saved domainname . inet_gethost[17264] (DEBUG):Worker got request, op = 1, proto = 2, data = rhel7. inet_gethost[17264] (DEBUG):Starting getaddrinfo(rhel7, ...) inet_gethost[17264] (DEBUG):getaddrinfo returned 0 {port,40728,5}
You need a IPv6-enabled installation (no need to resolve anything to IPv6 or proper IPv6 routing, or something, just IPv6 addresses configured). [root@myhostname ~]# export ERL_EPMD_ADDRESS=fd00::1 [root@myhostname ~]# export ERL_INETRC=/tmp/inetrc [root@myhostname ~]# echo "{inet6, true}." > /tmp/inetrc Before applying patch: [root@myhostname ~]# erl -sname foo -proto_dist inet6_tcp (foo@myhostname)1> erl_epmd:port_please(foo,myhostname). noport ^^^ This won't let RabbitMQ (or any other Erlang application to form a cluster). After applying patch: (foo@myhostname)1> erl_epmd:port_please(foo,myhostname). {port,35113,5} So it will return proper port after we switch to IPv6.
Verified : (undercloud) [stack@undercloud ~]$ rhos-release -L Installed repositories (rhel-7.4): 12 rhel-7.4 $ cat core_puddle_version 2017-10-11.5 [root@controller-0 ~]# ip a show enp5s0f0: 2: enp5s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000 link/ether 44:1e:a1:73:39:90 brd ff:ff:ff:ff:ff:ff inet6 fe80::461e:a1ff:fe73:3990/64 scope link valid_lft forever preferred_lft forever [root@controller-0 ~]# export ERL_INET_GETHOST_DEBUG=5 [root@controller-0 ~]# export ERL_EPMD_ADDRESS=fd00::1 [root@controller-0 ~]# export ERL_INETRC=/tmp/inetrc [root@controller-0 ~]# cat >/root/inetrc<<EOF {inet6, true}. EOF [root@controller-0 ~]# cat >>/etc/hosts<<EOF > fd00::1 rhel7 EOF #erlang package ver. >= erlang-18.3.4.5-3.el7ost [root@controller-0 ~]# rpm -qa|grep erlang erlang-hipe-18.3.4.5-4.el7ost.x86_64 erlang-tools-18.3.4.5-4.el7ost.x86_64 ... #Actual == Expected results : [root@controller-0 ~]# erl -sname foo -proto_dist inet6_tcp inet_gethost[674815] (DEBUG):Saved domainname . inet_gethost[674815] (DEBUG):Created worker[674816] with fd 3 inet_gethost[674815] (DEBUG):Saved domainname . inet_gethost[674816] (DEBUG):Worker got request, op = 1, proto = 1, data = controller-0. inet_gethost[674816] (DEBUG):Starting gethostbyname(controller-0) inet_gethost[674816] (DEBUG):gethostbyname OK inet_gethost[674815] (DEBUG):End of file while reading from pipe. inet_gethost[674815] (DEBUG):Erlang has closed. Erlang/OTP 18 [erts-7.3.1.3] [source] [64-bit] [smp:12:12] [async-threads:10] [hipe] [kernel-poll:false] Eshell V7.3.1.3 (abort with ^G) (foo@controller-0)1> inet:gethostbyname("rhel7"). inet_gethost[675855] (DEBUG):Saved domainname . inet_gethost[675855] (DEBUG):Created worker[675856] with fd 3 inet_gethost[675855] (DEBUG):Saved domainname . inet_gethost[675856] (DEBUG):Worker got request, op = 1, proto = 2, data = rhel7. inet_gethost[675856] (DEBUG):Starting getaddrinfo(rhel7, ...) inet_gethost[675856] (DEBUG):getaddrinfo returned 0 {ok,{hostent,"rhel7",[],inet6,16,[{64768,0,0,0,0,0,0,1}]}}
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://access.redhat.com/errata/RHEA-2017:3462