From: Kelly Anderson <kelly-lACMDn57031vQQPgy9v2K1aTQe2KTcn/@public.gmane.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: Linux NFS Mailing List <linux-nfs@vger.kernel.org>
Subject: Re: [NFS] Nfs4 over Ipv6 patch to fix ipv6 subnetting in /etc/exports
Date: Wed, 02 Dec 2009 17:16:04 -0700 [thread overview]
Message-ID: <4B170344.9070205@silka.with-linux.com> (raw)
In-Reply-To: <5A28692A-9683-4B49-A016-6639BD80E1BC@oracle.com>
On 12/02/2009 04:32 PM, Chuck Lever wrote:
> [Cc: correct mailing list]
>
> IPv6 support in mountd is entirely experimental (ie not guaranteed to
> work), and exists only my personal git repo, not in the official
> nfs-utils git repo. However, it looks like you are working against my
> code.
I got it from the following.
git://git.linux-nfs.org/projects/cel/nfs-utils.git
>
>
> Also, we prefer patches submitted inline, not as attachments, as that
> makes it easy to hit "reply" and comment on the content of the patch.
> A patch description and a Signed-off-by: line is required. Take a
> look in the archives of this mailing list for examples.
>
> Basically your patch misapplies the address mask in check_subnet_v6,
> so I don't think it's the right fix. Instead of "sin6 & mask" you
> have "sin6 & sin6" which basically means the mask is ignored, and the
> check will always succeed.
>
> Maybe the mask generation code in init_netmask() is not correct?
I think you missread the patch. So I posted the complete patched
function. The problem was sin6->sin6_addr.s6_addr should be
sin6->sin6_addr.s6_addr32. It doesn't make sense to compare an 8 bit
value with a 32 bit value. Notice it's really comparing "address" to
"sin6" so it's really ((address ^ sin6) & mask). sin6 is a poor choice
of variable names in this case since it makes it hard to interpret the code.
static int
check_subnet_v6(const struct sockaddr_in6 *address,
const struct sockaddr_in6 *mask, const struct addrinfo *ai)
{
for (; ai; ai = ai->ai_next) {
struct sockaddr_in6 *sin6 = (struct sockaddr_in6 *)ai->ai_addr;
if (sin6->sin6_family != AF_INET6)
continue;
if (mask_match(address->sin6_addr.s6_addr32[0],
sin6->sin6_addr.s6_addr32[0],
mask->sin6_addr.s6_addr32[0]) &&
mask_match(address->sin6_addr.s6_addr32[1],
sin6->sin6_addr.s6_addr32[1],
mask->sin6_addr.s6_addr32[1]) &&
mask_match(address->sin6_addr.s6_addr32[2],
sin6->sin6_addr.s6_addr32[2],
mask->sin6_addr.s6_addr32[2]) &&
mask_match(address->sin6_addr.s6_addr32[3],
sin6->sin6_addr.s6_addr32[3],
mask->sin6_addr.s6_addr32[3]))
return 1;
}
return 0;
}
--- ./support/export/client.c.orig 2009-11-30 08:06:18.000000000 -0700
+++ ./support/export/client.c 2009-12-02 15:16:55.361725808 -0700
@@ -505,16 +505,16 @@ check_subnet_v6(const struct sockaddr_in
continue;
if (mask_match(address->sin6_addr.s6_addr32[0],
- sin6->sin6_addr.s6_addr[0],
+ sin6->sin6_addr.s6_addr32[0],
mask->sin6_addr.s6_addr32[0]) &&
mask_match(address->sin6_addr.s6_addr32[1],
- sin6->sin6_addr.s6_addr[1],
+ sin6->sin6_addr.s6_addr32[1],
mask->sin6_addr.s6_addr32[1]) &&
mask_match(address->sin6_addr.s6_addr32[2],
- sin6->sin6_addr.s6_addr[2],
+ sin6->sin6_addr.s6_addr32[2],
mask->sin6_addr.s6_addr32[2]) &&
mask_match(address->sin6_addr.s6_addr32[3],
- sin6->sin6_addr.s6_addr[3],
+ sin6->sin6_addr.s6_addr32[3],
mask->sin6_addr.s6_addr32[3]))
return 1;
}
next prev parent reply other threads:[~2009-12-03 0:30 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-12-02 22:50 [NFS] Nfs4 over Ipv6 patch to fix ipv6 subnetting in /etc/exports Kelly Anderson
[not found] ` <4B16EF49.8040106-lACMDn57031vQQPgy9v2K1aTQe2KTcn/@public.gmane.org>
2009-12-02 23:32 ` Chuck Lever
2009-12-03 0:16 ` Kelly Anderson [this message]
[not found] ` <4B170344.9070205-lACMDn57031vQQPgy9v2K1aTQe2KTcn/@public.gmane.org>
2009-12-03 0:25 ` Chuck Lever
2009-12-11 18:19 ` Steve Dickson
[not found] ` <4B228D4B.7000007-AfCzQyP5zfLQT0dZR+AlfA@public.gmane.org>
2009-12-11 18:24 ` 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=4B170344.9070205@silka.with-linux.com \
--to=kelly-lacmdn57031vqqpgy9v2k1atqe2ktcn/@public.gmane.org \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.