From: Brian Haley <brian.haley@hp.com>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: netdev@vger.kernel.org
Subject: Re: ipv6_addr_type() and mapped IPv4 loopback
Date: Tue, 04 Nov 2008 16:16:48 -0500 [thread overview]
Message-ID: <4910BBC0.1060309@hp.com> (raw)
In-Reply-To: <443B1A57-9994-4555-BCE6-B66B8F406DA2@oracle.com>
Chuck Lever wrote:
> Hi Brian-
>
> On Nov 3, 2008, at Nov 3, 2008, 9:33 PM, Brian Haley wrote:
>> Chuck Lever wrote:
>>> The __ipv6_addr_type() function does not recognize the mapped IPv4
>>> loopback address:
>>> ::ffff:7f00:0001
>>> as type IPV6_ADDR_LOOPBACK. Is this intentional?
>>
>> I would think that since the IPv6 loopback address is ::1, and
>> ipv4-mapped is ::ffff:* that this would be IPV6_ADDR_MAPPED. That's
>> what RFC 4291 seems to say.
>
> So the answer to my original question is then "yes, this is
> intentional," correct?
I didn't design the Linux IPv6 stack, but it looks right to me.
> On a system with an AF_INET6 listener, legacy applications use 127.0.0.1
> to contact a local listener. The incoming source address will be
> ::ffff:7f00:0001, not ::1. This means IPv6-enabled applications have to
> perform a separate check for ::ffff:7f00:0001 if they are looking for
> loopback addresses.
Right, applications have to see if it's really an IPv4 address if
necessary. If you're just looking for loopback and it's in the kernel,
it's only about this much code:
if (ipv6_addr_type(addr->sin6_addr) == IPV6_ADDR_MAPPED) {
__be32 v4addr = addr->sin6_addr.s6_addr32[3];
if (ipv4_is_loopback(v4addr)) {
/* it's 127.0.0.* */
}
}
There's the IN6_IS_ADDR_V4MAPPED() macro for user-space as well.
> The kernel's lockd must verify that an NLM request comes from the local
> user space. It's not a lot of extra logic, but it is a subtlety.
Agreed.
-Brian
next prev parent reply other threads:[~2008-11-04 21:16 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-11-03 23:01 ipv6_addr_type() and mapped IPv4 loopback Chuck Lever
2008-11-04 2:33 ` Brian Haley
2008-11-04 16:44 ` Chuck Lever
2008-11-04 20:19 ` David Stevens
2008-11-04 21:16 ` Brian Haley [this message]
2008-11-04 21:33 ` Chuck Lever
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4910BBC0.1060309@hp.com \
--to=brian.haley@hp.com \
--cc=chuck.lever@oracle.com \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).