Bug 14413 - nsswitch doesn't implement getaddrinfo(), plugins cannot provide full getaddrinfo features
Summary: nsswitch doesn't implement getaddrinfo(), plugins cannot provide full getaddr...
Status: NEW
Alias: None
Product: glibc
Classification: Unclassified
Component: network (show other bugs)
Version: 2.17
: P2 normal
Target Milestone: ---
Assignee: Not yet assigned to anyone
URL:
Keywords:
Depends on: 19565
Blocks: 16826
  Show dependency treegraph
 
Reported: 2012-07-27 15:13 UTC by Pavel Šimerda
Modified: 2016-02-04 16:54 UTC (History)
5 users (show)

See Also:
Host:
Target:
Build:
Last reconfirmed:
fweimer: security-


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Pavel Šimerda 2012-07-27 15:13:10 UTC
GLIBC's name service switch doesn't provide a way to override getaddressinfo()
which is the only function that supports IPv6 link-local addresses.

IPv6 link-local addresses don't work without the interface name (when
written as text) that then translates to scope id.

http://tools.ietf.org/html/rfc2553

glibc-2.15-37.fc17.x86_64
Comment 1 Pavel Šimerda 2012-07-27 15:15:46 UTC
Fedora bug:

https://bugzilla.redhat.com/show_bug.cgi?id=843054

This is actually needed for link-local name resolution (whatever NSS plugin is used for it then).
Comment 2 Pavel Šimerda 2012-07-31 13:31:37 UTC
There's another usecase for getaddrinfo() in nsswitch and that is avoiding problems caused by solutions to bug 12377 including bug 12398. See discussions
in these two bug reports.
Comment 3 Alexandre Oliva 2014-06-02 03:32:38 UTC
Hi, Pavel,

I assume you're speaking of such addresses as ipv6%zone, as specified in RFC 4007.  That RFC only specifies (hex) numeric addresses in standard ipv6 format, folowed by a % and a zone id, that may be numeric, an interface name, or somesuch.

Since the address can only be numeric, without involving any lookups, and that and zone ids specified in that RFC are supported by existing getaddrinfo core implementation, what would the point be of introducing a getaddrinfo interface in the nss plugin interface?
Comment 4 Pavel Šimerda 2014-06-02 08:32:32 UTC
Hi Alexandre,

1) scope_id

There are name services that are capable of returning IPv6 link local addresses such as Multicast DNS. Those IPv6 link local addresses don't work as expected, though, as they miss the scope_id.

2) AI_ADDRCONFIG

There are name resolution protocols that should avoid querying for IPv4/IPv6 data according to the system configuration when AI_ADDRCONFIG is set. On the other hand, for literal address translations, Multicast DNS and /etc/hosts, this is counter-productive, see the linked bug reports.

3) __nss_gethostbyname*

The gethostbyname4 features are not superset of gethostbyname3 features which means the API is not satisfactory whichever of them is used.