From: Alexander Aring <alex.aring@gmail.com>
To: linux-nfs@vger.kernel.org, netdev@vger.kernel.org,
werner@almesberger.net
Subject: Re: [PATCH] nfs: fix dead code of ipv6_addr_scope
Date: Sat, 21 Dec 2013 14:32:54 +0100 [thread overview]
Message-ID: <20131221133253.GA20745@omega> (raw)
In-Reply-To: <20131221124440.GG14073@order.stressinduktion.org>
Hi Hannes,
On Sat, Dec 21, 2013 at 01:44:40PM +0100, Hannes Frederic Sowa wrote:
> On Sat, Dec 21, 2013 at 05:39:04AM +0100, Alexander Aring wrote:
> > The correct way to check on IPV6_ADDR_SCOPE_LINKLOCAL is to check with
> > the ipv6_addr_src_scope function.
> >
> > Currently this can't be work, because ipv6_addr_scope returns a int with
> > a mask of IPV6_ADDR_SCOPE_MASK (0x00f0U) and IPV6_ADDR_SCOPE_LINKLOCAL
> > is 0x02. So the condition is always false.
> >
> > Signed-off-by: Alexander Aring <alex.aring@gmail.com>
> > ---
> > I think ipv6_addr_src_scope should be correct, can somebody from netdev ml
> > confirm this please?
> > I stumple over that and I did not compile and test it. Maybe this is something
> > for stable?
> >
> > fs/nfs/nfs4filelayoutdev.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c
> > index c7c295e5..efac602 100644
> > --- a/fs/nfs/nfs4filelayoutdev.c
> > +++ b/fs/nfs/nfs4filelayoutdev.c
> > @@ -95,7 +95,7 @@ same_sockaddr(struct sockaddr *addr1, struct sockaddr *addr2)
> > b6 = (struct sockaddr_in6 *)addr2;
> >
> > /* LINKLOCAL addresses must have matching scope_id */
> > - if (ipv6_addr_scope(&a6->sin6_addr) ==
> > + if (ipv6_addr_src_scope(&a6->sin6_addr) ==
> > IPV6_ADDR_SCOPE_LINKLOCAL &&
> > a6->sin6_scope_id != b6->sin6_scope_id)
> > return false;
>
> Good catch!
>
thanks.
I am still unsure if sctp is correct or not, I think it isn't correct.
Because we compare and don't check if any bit is set.
We don't use IPV6_ADDR_SCOPE_TYPE here. We use IPV6_ADDR_TYPE. But we can't
compare it.
Current implementation is:
v6scope = ipv6_addr_scope(&addr->v6.sin6_addr);
switch (v6scope) {
case IFA_HOST:
retval = SCTP_SCOPE_LOOPBACK;
break;
case IFA_LINK:
retval = SCTP_SCOPE_LINK;
break;
case IFA_SITE:
retval = SCTP_SCOPE_PRIVATE;
break;
default:
retval = SCTP_SCOPE_GLOBAL;
break;
}
and should be something like:
v6scope = ipv6_addr_src_scope(&addr->v6.sin6_addr);
switch (v6scope) {
case IPV6_ADDR_SCOPE_NODELOCAL:
retval = SCTP_SCOPE_LOOPBACK;
break;
case IPV6_ADDR_SCOPE_LINKLOCAL:
retval = SCTP_SCOPE_LINK;
break;
case IPV6_ADDR_SCOPE_SITELOCAL:
retval = SCTP_SCOPE_PRIVATE;
break;
case IPV6_ADDR_SCOPE_GLOBAL:
retval = SCTP_SCOPE_GLOBAL;
break;
default:
retval = SCTP_SCOPE_UNUSABLE;
break;
}
Looks this okay for you? Then we can handle SCTP_SCOPE_UNUSABLE, too.
- Alex
WARNING: multiple messages have this Message-ID (diff)
From: Alexander Aring <alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
To: linux-nfs-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
netdev-u79uwXL29TY76Z2rM5mHXA@public.gmane.org,
werner-SEdMjqphH88wryQfseakQg@public.gmane.org
Subject: Re: [PATCH] nfs: fix dead code of ipv6_addr_scope
Date: Sat, 21 Dec 2013 14:32:54 +0100 [thread overview]
Message-ID: <20131221133253.GA20745@omega> (raw)
In-Reply-To: <20131221124440.GG14073-5j1vdhnGyZutBveJljeh2VPnkB77EeZ12LY78lusg7I@public.gmane.org>
Hi Hannes,
On Sat, Dec 21, 2013 at 01:44:40PM +0100, Hannes Frederic Sowa wrote:
> On Sat, Dec 21, 2013 at 05:39:04AM +0100, Alexander Aring wrote:
> > The correct way to check on IPV6_ADDR_SCOPE_LINKLOCAL is to check with
> > the ipv6_addr_src_scope function.
> >
> > Currently this can't be work, because ipv6_addr_scope returns a int with
> > a mask of IPV6_ADDR_SCOPE_MASK (0x00f0U) and IPV6_ADDR_SCOPE_LINKLOCAL
> > is 0x02. So the condition is always false.
> >
> > Signed-off-by: Alexander Aring <alex.aring-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
> > ---
> > I think ipv6_addr_src_scope should be correct, can somebody from netdev ml
> > confirm this please?
> > I stumple over that and I did not compile and test it. Maybe this is something
> > for stable?
> >
> > fs/nfs/nfs4filelayoutdev.c | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/fs/nfs/nfs4filelayoutdev.c b/fs/nfs/nfs4filelayoutdev.c
> > index c7c295e5..efac602 100644
> > --- a/fs/nfs/nfs4filelayoutdev.c
> > +++ b/fs/nfs/nfs4filelayoutdev.c
> > @@ -95,7 +95,7 @@ same_sockaddr(struct sockaddr *addr1, struct sockaddr *addr2)
> > b6 = (struct sockaddr_in6 *)addr2;
> >
> > /* LINKLOCAL addresses must have matching scope_id */
> > - if (ipv6_addr_scope(&a6->sin6_addr) ==
> > + if (ipv6_addr_src_scope(&a6->sin6_addr) ==
> > IPV6_ADDR_SCOPE_LINKLOCAL &&
> > a6->sin6_scope_id != b6->sin6_scope_id)
> > return false;
>
> Good catch!
>
thanks.
I am still unsure if sctp is correct or not, I think it isn't correct.
Because we compare and don't check if any bit is set.
We don't use IPV6_ADDR_SCOPE_TYPE here. We use IPV6_ADDR_TYPE. But we can't
compare it.
Current implementation is:
v6scope = ipv6_addr_scope(&addr->v6.sin6_addr);
switch (v6scope) {
case IFA_HOST:
retval = SCTP_SCOPE_LOOPBACK;
break;
case IFA_LINK:
retval = SCTP_SCOPE_LINK;
break;
case IFA_SITE:
retval = SCTP_SCOPE_PRIVATE;
break;
default:
retval = SCTP_SCOPE_GLOBAL;
break;
}
and should be something like:
v6scope = ipv6_addr_src_scope(&addr->v6.sin6_addr);
switch (v6scope) {
case IPV6_ADDR_SCOPE_NODELOCAL:
retval = SCTP_SCOPE_LOOPBACK;
break;
case IPV6_ADDR_SCOPE_LINKLOCAL:
retval = SCTP_SCOPE_LINK;
break;
case IPV6_ADDR_SCOPE_SITELOCAL:
retval = SCTP_SCOPE_PRIVATE;
break;
case IPV6_ADDR_SCOPE_GLOBAL:
retval = SCTP_SCOPE_GLOBAL;
break;
default:
retval = SCTP_SCOPE_UNUSABLE;
break;
}
Looks this okay for you? Then we can handle SCTP_SCOPE_UNUSABLE, too.
- Alex
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
next prev parent reply other threads:[~2013-12-21 13:33 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-12-21 4:39 [PATCH] nfs: fix dead code of ipv6_addr_scope Alexander Aring
2013-12-21 4:39 ` Alexander Aring
2013-12-21 8:17 ` Alexander Aring
2013-12-21 12:44 ` Hannes Frederic Sowa
2013-12-21 12:44 ` Hannes Frederic Sowa
2013-12-21 13:32 ` Alexander Aring [this message]
2013-12-21 13:32 ` Alexander Aring
2013-12-22 2:30 ` Hannes Frederic Sowa
2013-12-22 2:30 ` Hannes Frederic Sowa
2013-12-22 12:30 ` Alexander Aring
2013-12-22 12:30 ` Alexander Aring
2013-12-22 12:38 ` Hannes Frederic Sowa
2013-12-22 12:38 ` Hannes Frederic Sowa
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=20131221133253.GA20745@omega \
--to=alex.aring@gmail.com \
--cc=linux-nfs@vger.kernel.org \
--cc=netdev@vger.kernel.org \
--cc=werner@almesberger.net \
/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.