Bug 1461494 - inet:gethostbyname returns IPv4 results when IPv6 is configured [OSP-9]
Summary: inet:gethostbyname returns IPv4 results when IPv6 is configured [OSP-9]
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat OpenStack
Classification: Red Hat
Component: erlang
Version: 9.0 (Mitaka)
Hardware: Unspecified
OS: Unspecified
high
high
Target Milestone: zstream
: 9.0 (Mitaka)
Assignee: Peter Lemenkov
QA Contact: pkomarov
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2017-06-14 15:11 UTC by John Eckersberg
Modified: 2023-09-14 03:59 UTC (History)
11 users (show)

Fixed In Version: erlang-18.3.4.5-3.el7ost.1
Doc Type: If docs needed, set a value
Doc Text:
Clone Of: 1461190
Environment:
Last Closed: 2017-10-05 14:02:51 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Github erlang otp pull 1065 0 None closed Make inet:gethostbyname respect resolver option `inet6` 2020-01-28 13:41:00 UTC
Red Hat Product Errata RHBA-2017:2862 0 normal SHIPPED_LIVE Red Hat OpenStack Platform 9 Bug Fix and Enhancement Advisory 2017-10-05 18:02:30 UTC

Description John Eckersberg 2017-06-14 15:11:12 UTC
+++ This bug was initially created as a clone of Bug #1461190 +++

Description of problem:
If IPv6 is configured via proto_dist and/or inetrc, inet:gethostbyname will still prefer IPv4 addresses.  This breaks epmd lookups if epmd is forced to listen only on IPv6.

Version-Release number of selected component (if applicable):
erlang-erts-18.3.4.4-3.el7ost.x86_64

How reproducible:
Always

Steps to Reproduce:
[root@rhel7 ~]# env | grep ERL                                                                                                                                                                                       
ERL_INET_GETHOST_DEBUG=5
ERL_INETRC=/root/inetrc
ERL_EPMD_ADDRESS=fd00::1
[root@rhel7 ~]# cat /root/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 2881sec preferred_lft 2881sec
    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
[root@rhel7 ~]# cat /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
fd00::1     rhel7


Actual results:
[root@rhel7 ~]# erl -sname foo -proto_dist inet6_tcp
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3.1.2  (abort with ^G)
(foo@rhel7)1> inet:gethostbyname("rhel7").
inet_gethost[7615] (DEBUG):Saved domainname .
inet_gethost[7615] (DEBUG):Saved domainname .
inet_gethost[7616] (DEBUG):Worker got request, op = 1, proto = 1, data = rhel7.
inet_gethost[7616] (DEBUG):Starting gethostbyname(rhel7)
inet_gethost[7616] (DEBUG):gethostbyname OK
{ok,{hostent,"rhel7.example.org",[],inet,4,
             [{192,168,200,200}]}}


Expected results:
[root@rhel7 ~]# erl -sname foo -proto_dist inet6_tcp
Erlang/OTP 18 [erts-7.3.1.2] [source] [64-bit] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V7.3.1.2  (abort with ^G)
(foo@rhel7)1> inet:gethostbyname("rhel7").
inet_gethost[7694] (DEBUG):Saved domainname .
inet_gethost[7694] (DEBUG):Created worker[7695] with fd 3
inet_gethost[7694] (DEBUG):Saved domainname .
inet_gethost[7695] (DEBUG):Worker got request, op = 1, proto = 2, data = rhel7.
inet_gethost[7695] (DEBUG):Starting getaddrinfo(rhel7, ...)
inet_gethost[7695] (DEBUG):getaddrinfo returned 0
{ok,{hostent,"rhel7",[],inet6,16,[{64768,0,0,0,0,0,0,1}]}}


Additional info:
Upstream fix on OTP 19 - https://github.com/erlang/otp/commit/5d7dcfc2e0de7e93b29d01f07a2f970720d62f9d
Backport for OTP 18.3.4.4 - https://github.com/jeckersb/otp/commit/5ceafb8276b2d920abb3724450e87d8724d21f8e

Comment 1 Peter Lemenkov 2017-07-14 15:20:26 UTC
Different build (against RHEL 7.3) - erlang-18.3.4.5-3.el7ost.1

Comment 4 Marian Krcmarik 2017-09-21 14:25:00 UTC
Verified on erlang-18.3.4.5-3.el7ost.1

Comment 6 errata-xmlrpc 2017-10-05 14:02:51 UTC
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/RHBA-2017:2862

Comment 7 Red Hat Bugzilla 2023-09-14 03:59:11 UTC
The needinfo request[s] on this closed bug have been removed as they have been unresolved for 1000 days


Note You need to log in before you can comment on or make changes to this bug.