From: Brian Haley <brian.haley@hp.com>
To: David Miller <davem@davemloft.net>
Cc: dlstevens@us.ibm.com, enh@google.com, netdev@vger.kernel.org,
netdev-owner@vger.kernel.org
Subject: Re: linux kernel's IPV6_MULTICAST_HOPS default is 64; should be 1?
Date: Tue, 04 May 2010 10:40:58 -0400 [thread overview]
Message-ID: <4BE031FA.6040006@hp.com> (raw)
In-Reply-To: <20100504.005757.97355845.davem@davemloft.net>
David Miller wrote:
> From: David Stevens <dlstevens@us.ibm.com>
> Date: Tue, 4 May 2010 00:48:46 -0700
>
>> It's set to -1 by default, but the common code for unicast and
>> multicast in getsockopt is falling through to use the dst_entry.
>>
>> I believe (though I haven't actually tried it recently) it actually
>> uses "1" for the default value for multicast;
No, on-the-wire it's actually 64.
> It doesn't, all of the uses in the ipv6 stack say something like:
>
> if (multicast)
> hlimit = np->mcast_hops;
> else
> hlimit = np->hop_limit;
> if (hlimit < 0)
> hlimit = ip6_dst_hoplimit(dst);
>
> Therefore, the change suggested by Elliot and which I committed is the
> way to get the correct behavior and fix this.
Not exactly. It fixes the case where it's wrong by default, but
the corner case of setting it to -1 via setsockopt() says:
x == -1: use kernel default
But that will revert back to the kernel using 64 on the next transmit.
I can work on an update to this that makes a new mcast_hops per-interface
setting and makes ip6_dst_hoplimit() aware of it. Or even easier, just
have setsockopt() trap the -1 and set np->mcast_hops to 1. Built but
untested patch below.
-Brian
--
Specifying -1 for setsockopt(IPV6_MULTICAST_HOPS) should set the socket
value back to the system default value of IPV6_DEFAULT_MCASTHOPS (1).
Signed-off-by: Brian Haley <brian.haley@hp.com>
diff --git a/net/ipv6/ipv6_sockglue.c b/net/ipv6/ipv6_sockglue.c
index bd43f01..fa6875b 100644
--- a/net/ipv6/ipv6_sockglue.c
+++ b/net/ipv6/ipv6_sockglue.c
@@ -486,7 +486,10 @@ done:
goto e_inval;
if (val > 255 || val < -1)
goto e_inval;
- np->mcast_hops = val;
+ if (val == -1)
+ np->mcast_hops = IPV6_DEFAULT_MCASTHOPS;
+ else
+ np->mcast_hops = val;
retv = 0;
break;
next prev parent reply other threads:[~2010-05-04 14:41 UTC|newest]
Thread overview: 23+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-05-04 1:33 linux kernel's IPV6_MULTICAST_HOPS default is 64; should be 1? enh
2010-05-04 2:16 ` Brian Haley
2010-05-04 3:58 ` enh
2010-05-04 6:05 ` David Miller
2010-05-04 6:19 ` enh
2010-05-04 6:22 ` David Miller
2010-05-04 6:27 ` enh
2010-05-04 6:42 ` David Miller
2010-05-04 7:48 ` David Stevens
2010-05-04 7:57 ` David Miller
2010-05-04 14:40 ` Brian Haley [this message]
2010-05-04 16:12 ` David Stevens
2010-05-04 16:43 ` Brian Haley
2010-05-04 17:05 ` David Stevens
2010-05-04 21:39 ` David Miller
2010-05-04 21:38 ` David Miller
2010-05-04 21:46 ` David Miller
2010-05-04 22:26 ` enh
2010-05-04 23:07 ` David Miller
2010-05-05 15:36 ` Brian Haley
2010-05-05 22:00 ` David Miller
2010-05-06 1:50 ` Brian Haley
2010-05-06 7:10 ` 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=4BE031FA.6040006@hp.com \
--to=brian.haley@hp.com \
--cc=davem@davemloft.net \
--cc=dlstevens@us.ibm.com \
--cc=enh@google.com \
--cc=netdev-owner@vger.kernel.org \
--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 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.