diff options
| -rw-r--r-- | net/ipv6/ndisc.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/net/ipv6/ndisc.c b/net/ipv6/ndisc.c index 7968bfec6138..44e5b7f2a6c1 100644 --- a/net/ipv6/ndisc.c +++ b/net/ipv6/ndisc.c | |||
| @@ -1221,6 +1221,9 @@ static void ndisc_router_discovery(struct sk_buff *skb) | |||
| 1221 | if (!in6_dev->cnf.accept_ra_defrtr) | 1221 | if (!in6_dev->cnf.accept_ra_defrtr) |
| 1222 | goto skip_defrtr; | 1222 | goto skip_defrtr; |
| 1223 | 1223 | ||
| 1224 | if (ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr, NULL, 0)) | ||
| 1225 | goto skip_defrtr; | ||
| 1226 | |||
| 1224 | lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime); | 1227 | lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime); |
| 1225 | 1228 | ||
| 1226 | #ifdef CONFIG_IPV6_ROUTER_PREF | 1229 | #ifdef CONFIG_IPV6_ROUTER_PREF |
| @@ -1343,6 +1346,9 @@ skip_linkparms: | |||
| 1343 | goto out; | 1346 | goto out; |
| 1344 | 1347 | ||
| 1345 | #ifdef CONFIG_IPV6_ROUTE_INFO | 1348 | #ifdef CONFIG_IPV6_ROUTE_INFO |
| 1349 | if (ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr, NULL, 0)) | ||
| 1350 | goto skip_routeinfo; | ||
| 1351 | |||
| 1346 | if (in6_dev->cnf.accept_ra_rtr_pref && ndopts.nd_opts_ri) { | 1352 | if (in6_dev->cnf.accept_ra_rtr_pref && ndopts.nd_opts_ri) { |
| 1347 | struct nd_opt_hdr *p; | 1353 | struct nd_opt_hdr *p; |
| 1348 | for (p = ndopts.nd_opts_ri; | 1354 | for (p = ndopts.nd_opts_ri; |
| @@ -1360,6 +1366,8 @@ skip_linkparms: | |||
| 1360 | &ipv6_hdr(skb)->saddr); | 1366 | &ipv6_hdr(skb)->saddr); |
| 1361 | } | 1367 | } |
| 1362 | } | 1368 | } |
| 1369 | |||
| 1370 | skip_routeinfo: | ||
| 1363 | #endif | 1371 | #endif |
| 1364 | 1372 | ||
| 1365 | #ifdef CONFIG_IPV6_NDISC_NODETYPE | 1373 | #ifdef CONFIG_IPV6_NDISC_NODETYPE |
