diff options
author | Duan Jiong <duanj.fnst@cn.fujitsu.com> | 2013-11-26 15:46:56 +0800 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2013-12-02 16:00:38 -0500 |
commit | 30e56918dd1e6d64350661f186657f6a6f2646e6 (patch) | |
tree | 8ff9e816cd40e17b5bf0d232448bb993e148310a /net | |
parent | a45299e72737c528975546a0680cace5d7364d27 (diff) | |
download | linux-30e56918dd1e6d64350661f186657f6a6f2646e6.tar.gz linux-30e56918dd1e6d64350661f186657f6a6f2646e6.tar.bz2 linux-30e56918dd1e6d64350661f186657f6a6f2646e6.zip |
ipv6: judge the accept_ra_defrtr before calling rt6_route_rcv
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>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net')
-rw-r--r-- | net/ipv6/ndisc.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 3512177deb4d..300865171394 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, |