|
@@ -1272,7 +1272,13 @@ skip_linkparms:
|
|
|
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)
|
|
|
+ struct route_info *ri = (struct route_info *)p;
|
|
|
+#ifdef CONFIG_IPV6_NDISC_NODETYPE
|
|
|
+ if (skb->ndisc_nodetype == NDISC_NODETYPE_NODEFAULT &&
|
|
|
+ ri->prefix_len == 0)
|
|
|
+ continue;
|
|
|
+#endif
|
|
|
+ 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,
|
|
|
&ipv6_hdr(skb)->saddr);
|