Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

LX brand setsockopt fails in IPv6 stack #351

Open
anilj opened this issue Jan 24, 2021 · 0 comments
Open

LX brand setsockopt fails in IPv6 stack #351

anilj opened this issue Jan 24, 2021 · 0 comments

Comments

@anilj
Copy link

anilj commented Jan 24, 2021

Seems like this is related to #167.
I am on joyent_20201217T173522Z.
More details on the specific configs I am using https://smartos.topicbox.com/groups/smartos-discuss/Tfa146744c5c443b1/lx-dns-resolution-socket-call-fails.

This is on image lx-dataset (20180323), it works before glibc is upgraded (Ignore the Network is unreachable error on IPv6, I did not configure the IPv6 route here... even if that's working, same error)

[root@0fcfb865-9b63-e22a-c36b-f35e3ec5adb5 ~]# strace -e socket,setsockopt,connect -f curl google.com
socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
strace: Process 32591 attached
[pid 32591] socket(AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
[pid 32591] connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
[pid 32591] socket(AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
[pid 32591] connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
[pid 32591] socket(AF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
[pid 32591] connect(3, {sa_family=AF_INET6, sin6_port=htons(53), inet_pton(AF_INET6, "2606:4700:4700::1111", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid 32591] socket(AF_INET6, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
[pid 32591] connect(3, {sa_family=AF_INET6, sin6_port=htons(53), inet_pton(AF_INET6, "2620:119:35::35", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid 32591] socket(AF_INET, SOCK_DGRAM|SOCK_NONBLOCK, IPPROTO_IP) = 3
[pid 32591] connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("8.8.8.8")}, 16) = 0
[pid 32591] socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE) = 3
[pid 32591] socket(AF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
[pid 32591] connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("216.58.195.78")}, 16) = 0
[pid 32591] socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
[pid 32591] connect(3, {sa_family=AF_INET6, sin6_port=htons(80), inet_pton(AF_INET6, "2607:f8b0:4005:807::200e", &sin6_addr), sin6_flowinfo=0, sin6_scope_id=0}, 28) = -1 ENETUNREACH (Network is unreachable)
[pid 32590] socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 3
[pid 32590] setsockopt(3, SOL_SOCKET, SO_KEEPALIVE, [1], 4) = 0
[pid 32590] setsockopt(3, SOL_TCP, TCP_KEEPIDLE, [60], 4) = 0
[pid 32590] setsockopt(3, SOL_TCP, TCP_KEEPINTVL, [60], 4) = 0
[pid 32590] connect(3, {sa_family=AF_INET, sin_port=htons(80), sin_addr=inet_addr("216.58.195.78")}, 16) = -1 EINPROGRESS (Operation now in progress)
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
[pid 32590] +++ exited with 0 +++
strace: wait4(__WALL): No child processes
strace: Process 32591 detached
[root@0fcfb865-9b63-e22a-c36b-f35e3ec5adb5 ~]#

Upgrade glibc:

[root@0fcfb865-9b63-e22a-c36b-f35e3ec5adb5 ~]# yum update glibc
...

Running transaction
  Updating   : glibc-2.17-317.el7.x86_64                                                                                                                                              1/4
warning: /etc/nsswitch.conf created as /etc/nsswitch.conf.rpmnew
  Updating   : glibc-common-2.17-317.el7.x86_64                                                                                                                                       2/4
  Cleanup    : glibc-2.17-196.el7_4.2.x86_64                                                                                                                                          3/4
  Cleanup    : glibc-common-2.17-196.el7_4.2.x86_64                                                                                                                                   4/4
  Verifying  : glibc-common-2.17-317.el7.x86_64                                                                                                                                       1/4
  Verifying  : glibc-2.17-317.el7.x86_64                                                                                                                                              2/4
  Verifying  : glibc-common-2.17-196.el7_4.2.x86_64                                                                                                                                   3/4
  Verifying  : glibc-2.17-196.el7_4.2.x86_64                                                                                                                                          4/4

Updated:
  glibc.x86_64 0:2.17-317.el7

Dependency Updated:
  glibc-common.x86_64 0:2.17-317.el7

Complete!

Now curl fails:

[root@0fcfb865-9b63-e22a-c36b-f35e3ec5adb5 ~]# strace -e socket,setsockopt,connect -f curl google.com
socket(AF_INET6, SOCK_DGRAM, IPPROTO_IP) = 3
strace: Process 32621 attached
[pid 32621] socket(AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
[pid 32621] connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
[pid 32621] socket(AF_LOCAL, SOCK_STREAM|SOCK_CLOEXEC|SOCK_NONBLOCK, 0) = 3
[pid 32621] connect(3, {sa_family=AF_LOCAL, sun_path="/var/run/nscd/socket"}, 110) = -1 ENOENT (No such file or directory)
[pid 32621] socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 3
[pid 32621] setsockopt(3, SOL_IPV6, IPV6_RECVERR, [1], 4) = -1 ENOPROTOOPT (Protocol not available)
[pid 32621] socket(AF_INET6, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 3
[pid 32621] setsockopt(3, SOL_IPV6, IPV6_RECVERR, [1], 4) = -1 ENOPROTOOPT (Protocol not available)
curl: (6) Could not resolve host: google.com; Unknown error
[pid 32620] +++ exited with 6 +++
strace: wait4(__WALL): No child processes
strace: Process 32621 detached
[root@0fcfb865-9b63-e22a-c36b-f35e3ec5adb5 ~]#
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant