diff mbox

ipv6: judge the accept_ra_defrtr before calling rt6_route_rcv

Message ID 529451F0.1060707@cn.fujitsu.com
State Accepted, archived
Delegated to: David Miller
Headers show

Commit Message

Duan Jiong Nov. 26, 2013, 7:46 a.m. UTC
when dealing with a RA message, if accept_ra_defrtr is false,
the kernel will not add the default route, and then deal with
the following route information options. Unfortunately, those
options maybe contain default route, so let's judge the
accept_ra_defrtr before calling rt6_route_rcv.

Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com>
---
 net/ipv6/ndisc.c | 3 +++
 1 file changed, 3 insertions(+)

Comments

Hannes Frederic Sowa Nov. 29, 2013, 6:09 a.m. UTC | #1
On Tue, Nov 26, 2013 at 03:46:56PM +0800, Duan Jiong wrote:
> 
> when dealing with a RA message, if accept_ra_defrtr is false,
> the kernel will not add the default route, and then deal with
> the following route information options. Unfortunately, those
> options maybe contain default route, so let's judge the
> accept_ra_defrtr before calling rt6_route_rcv.
> 
> Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com>

I am ambivalent regarding this change.

accept_ra_defrtr protected against adding default routers without routing
options and accept_ra_rt_info_max_plen == -1 disables the acceptance of any
routing options in router advertisments.

I don't have an idea why we need this distinction altough I once used it for
testing. But because this change makes it more understandable for users I am
ok with that.

Greetings,

  Hannes

--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
David Miller Dec. 2, 2013, 9:01 p.m. UTC | #2
From: Hannes Frederic Sowa <hannes@stressinduktion.org>
Date: Fri, 29 Nov 2013 07:09:45 +0100

> On Tue, Nov 26, 2013 at 03:46:56PM +0800, Duan Jiong wrote:
>> 
>> when dealing with a RA message, if accept_ra_defrtr is false,
>> the kernel will not add the default route, and then deal with
>> the following route information options. Unfortunately, those
>> options maybe contain default route, so let's judge the
>> accept_ra_defrtr before calling rt6_route_rcv.
>> 
>> Signed-off-by: Duan Jiong <duanj.fnst@cn.fujitsu.com>
> 
> I am ambivalent regarding this change.
> 
> accept_ra_defrtr protected against adding default routers without routing
> options and accept_ra_rt_info_max_plen == -1 disables the acceptance of any
> routing options in router advertisments.
> 
> I don't have an idea why we need this distinction altough I once used it for
> testing. But because this change makes it more understandable for users I am
> ok with that.

I've applied this, thanks everyone.
--
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c
index 3512177..3008651 100644
--- a/net/ipv6/ndisc.c
+++ b/net/ipv6/ndisc.c
@@ -1277,6 +1277,9 @@  skip_linkparms:
 			    ri->prefix_len == 0)
 				continue;
 #endif
+			if (ri->prefix_len == 0 &&
+			    !in6_dev->cnf.accept_ra_defrtr)
+				continue;
 			if (ri->prefix_len > in6_dev->cnf.accept_ra_rt_info_max_plen)
 				continue;
 			rt6_route_rcv(skb->dev, (u8*)p, (p->nd_opt_len) << 3,