]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - net/ipv6/ndisc.c
[IPV6]: ROUTE: Add accept_ra_rt_info_max_plen sysctl.
[net-next-2.6.git] / net / ipv6 / ndisc.c
index 1f6256909674307727408937e83d5c2280d81d4d..dfa20d3be9b69ec23db998c2e5268e38ab60a41a 100644 (file)
@@ -1214,11 +1214,13 @@ skip_defrtr:
        }
 
 #ifdef CONFIG_IPV6_ROUTE_INFO
-       if (ndopts.nd_opts_ri) {
+       if (in6_dev->cnf.accept_ra_rtr_pref && ndopts.nd_opts_ri) {
                struct nd_opt_hdr *p;
                for (p = ndopts.nd_opts_ri;
                     p;
                     p = ndisc_next_option(p, ndopts.nd_opts_ri_end)) {
+                       if (((struct route_info *)p)->prefix_len > in6_dev->cnf.accept_ra_rt_info_max_plen)
+                               continue;
                        rt6_route_rcv(skb->dev, (u8*)p, (p->nd_opt_len) << 3,
                                      &skb->nh.ipv6h->saddr);
                }