(match_prefix): Don't treat IPv4 loopback address special when
converting to v4 mapped addressed.
This commit is contained in:
parent
af77c9b748
commit
5846c4e269
|
@ -3,6 +3,8 @@
|
||||||
[BZ #6472]
|
[BZ #6472]
|
||||||
* sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have
|
* sysdeps/posix/getaddrinfo.c (get_scope): Loopback addresses have
|
||||||
to be treated like link-local addresses.
|
to be treated like link-local addresses.
|
||||||
|
(match_prefix): Don't treat IPv4 loopback address special when
|
||||||
|
converting to v4 mapped addressed.
|
||||||
|
|
||||||
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Add _res_hconf_init
|
* sysdeps/posix/getaddrinfo.c (getaddrinfo): Add _res_hconf_init
|
||||||
if necessary.
|
if necessary.
|
||||||
|
|
|
@ -1248,20 +1248,14 @@ match_prefix (const struct sockaddr_in6 *in6,
|
||||||
{
|
{
|
||||||
const struct sockaddr_in *in = (const struct sockaddr_in *) in6;
|
const struct sockaddr_in *in = (const struct sockaddr_in *) in6;
|
||||||
|
|
||||||
/* Convert to IPv6 address. */
|
/* Construct a V4-to-6 mapped address. */
|
||||||
in6_mem.sin6_family = PF_INET6;
|
in6_mem.sin6_family = PF_INET6;
|
||||||
in6_mem.sin6_port = in->sin_port;
|
in6_mem.sin6_port = in->sin_port;
|
||||||
in6_mem.sin6_flowinfo = 0;
|
in6_mem.sin6_flowinfo = 0;
|
||||||
if (in->sin_addr.s_addr == htonl (0x7f000001))
|
memset (&in6_mem.sin6_addr, '\0', sizeof (in6_mem.sin6_addr));
|
||||||
in6_mem.sin6_addr = (struct in6_addr) IN6ADDR_LOOPBACK_INIT;
|
in6_mem.sin6_addr.s6_addr16[5] = 0xffff;
|
||||||
else
|
in6_mem.sin6_addr.s6_addr32[3] = in->sin_addr.s_addr;
|
||||||
{
|
in6_mem.sin6_scope_id = 0;
|
||||||
/* Construct a V4-to-6 mapped address. */
|
|
||||||
memset (&in6_mem.sin6_addr, '\0', sizeof (in6_mem.sin6_addr));
|
|
||||||
in6_mem.sin6_addr.s6_addr16[5] = 0xffff;
|
|
||||||
in6_mem.sin6_addr.s6_addr32[3] = in->sin_addr.s_addr;
|
|
||||||
in6_mem.sin6_scope_id = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
in6 = &in6_mem;
|
in6 = &in6_mem;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue