nfs-utils: Remove all uses of AI_ADDRCONFIG
authorChuck Lever <chuck.lever@oracle.com>
Thu, 28 Oct 2010 16:12:12 +0000 (12:12 -0400)
committerSteve Dickson <steved@redhat.com>
Mon, 1 Nov 2010 12:05:14 +0000 (08:05 -0400)
commit1ea2c3be33f2eb4630c5cdb78edf2bb670b294ab
tree37422ba858cffebe289604c67c83ac8fb5047ff7
parentf8e315543b7f1db7f37a4bfe8ede3020cef62868
nfs-utils: Remove all uses of AI_ADDRCONFIG

It was reported that, if only "lo" is up,

  mount.nfs 127.0.0.1:/export /mount

fails with "Name or service not known".

"man 3 getaddrinfo" says this:

  If hints.ai_flags includes the AI_ADDRCONFIG flag, then IPv4
  addresses are returned in the list pointed to by res only if the
  local system has at least one IPv4 address configured, and IPv6
  addresses are only returned if the local system has at least
  one IPv6 address configured.

The man page oversimplifies here.  A review of glibc shows that
getaddrinfo(3) explicitly ignores loopback addresses when deciding
whether an IPv4 or IPv6 address is configured.

This behavior around loopback is a problem not just for mount.nfs,
but also for RPC daemons that have to start up before a system's
networking is fully configured and started.  Given the history of
other problems with AI_ADDRCONFIG and the unpredictable behavior it
introduces, let's just remove it everywhere in nfs-utils.

This fix addresses:

  https://bugzilla.linux-nfs.org/show_bug.cgi?id=191

Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Steve Dickson <steved@redhat.com>
support/export/hostname.c
tests/nsm_client/nsm_client.c
utils/mount/network.c
utils/mount/stropts.c
utils/statd/hostname.c
utils/statd/sm-notify.c