From: Brian Haley <brian.haley@hp.com>
To: David Stevens <dlstevens@us.ibm.com>
Cc: David Miller <davem@davemloft.net>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org>
Subject: Re: [PATCH] [IPv6]: IPV6_MULTICAST_IF setting is ignored on link-local connect()
Date: Tue, 18 Dec 2007 17:34:11 -0500 [thread overview]
Message-ID: <47684AE3.7080007@hp.com> (raw)
In-Reply-To: <OF87295D1E.4B69B8F8-ON882573B5.00755AB2-882573B5.0078619A@us.ibm.com>
David Stevens wrote:
> Brian Haley <brian.haley@hp.com> wrote on 12/18/2007 12:57:54 PM:
>
>> Trying to connect() to an IPv6 link-local multicast address by
>> specifying the outgoing multicast interface doesn't work, you have to
>> bind to a device first with an SO_BINDTODEVICE setsockopt() call.
Other OSes allow this operation, like FreeBSD, Tru64 UNIX and Solaris.
> No, you simply have to specify sin6_scope_id for link-scope
> addresses, like you do in unicast cases.
But isn't this why IPV6_MULTICAST_IF exists? So you don't have to bind
to an interface or use the scope id? RFC 3493 does not mention having
to set a scope id in order to send multicast packets:
IPv6 applications may send multicast packets by simply specifying an
IPv6 multicast address as the destination address, for example in the
destination address argument of the sendto() function.
> Your patch requires them
> to match (if specified), but I don't think IPV6_MULTICAST_IF should
> override or require a match for a valid sin6_scope_id (or be an error).
The patch won't override sk_bound_dev_if, or sin6_scope_id, it's a last
resort for link-local multicast. As far as matching, I think they
should if you set both SO_BINDTODEVICE/sin6_scope_id and
IPV6_MULTICAST_IF. I can relax that check if you like.
The one thing my patch does do is set sk_bound_dev_if, which it never
did - that seemed like the right thing to do since that's what the scope
id path does, and makes sure we always continue to use this interface.
> If I read it correctly, the existing code uses IPV6_MULTICAST_IF
> if the sin6_scope_id is not set, otherwise honors the interface specified
> in the connect. That seems like correct behaviour to me, and RFC 3493
> doesn't address the relative precedence of the two that I see. This is
> in the "linklocal" branch, and all unicast linklocal's require specifying
> sin6_scope_id. Multicast doesn't if require a scope_id in the case where
> you've done an IPV6_MULTICAST_IF, but it should still allow a different
> scope_id when you have used IPV6_MULTICAST_IF.
The IPV6_ADDR_MULTICAST check is inside the sin6_scope_id if()
statement, so will never get checked if the scope hasn't been specified,
that's the bug. Since that isn't required for multicast we always get
an EINVAL here.
> Do you have application code that you believe is correct that
> doesn't work?
Yes, a customer does.
-Brian
next prev parent reply other threads:[~2007-12-18 22:34 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2007-12-18 20:57 [PATCH] [IPv6]: IPV6_MULTICAST_IF setting is ignored on link-local connect() Brian Haley
2007-12-18 21:52 ` David Stevens
2007-12-18 22:34 ` Brian Haley [this message]
2007-12-18 23:56 ` David Stevens
2007-12-19 15:20 ` Vlad Yasevich
2007-12-19 18:18 ` David Stevens
2007-12-19 19:02 ` Vlad Yasevich
2007-12-19 19:14 ` Brian Haley
2007-12-19 15:35 ` Brian Haley
2007-12-19 18:57 ` David Stevens
2007-12-19 19:15 ` Brian Haley
2007-12-19 19:28 ` David Stevens
2008-01-07 17:03 ` Brian Haley
2008-01-08 1:18 ` David Stevens
2008-01-09 7:53 ` David Miller
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=47684AE3.7080007@hp.com \
--to=brian.haley@hp.com \
--cc=davem@davemloft.net \
--cc=dlstevens@us.ibm.com \
--cc=netdev@vger.kernel.org \
--cc=yoshfuji@linux-ipv6.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.