diff options
Diffstat (limited to 'net/ipv6/route.c')
| -rw-r--r-- | net/ipv6/route.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/net/ipv6/route.c b/net/ipv6/route.c index 35c58b669ebd..fb174b590fd3 100644 --- a/net/ipv6/route.c +++ b/net/ipv6/route.c | |||
| @@ -1854,6 +1854,10 @@ static struct rt6_info *ip6_route_info_create(struct fib6_config *cfg) | |||
| 1854 | int addr_type; | 1854 | int addr_type; |
| 1855 | int err = -EINVAL; | 1855 | int err = -EINVAL; |
| 1856 | 1856 | ||
| 1857 | /* RTF_PCPU is an internal flag; can not be set by userspace */ | ||
| 1858 | if (cfg->fc_flags & RTF_PCPU) | ||
| 1859 | goto out; | ||
| 1860 | |||
| 1857 | if (cfg->fc_dst_len > 128 || cfg->fc_src_len > 128) | 1861 | if (cfg->fc_dst_len > 128 || cfg->fc_src_len > 128) |
| 1858 | goto out; | 1862 | goto out; |
| 1859 | #ifndef CONFIG_IPV6_SUBTREES | 1863 | #ifndef CONFIG_IPV6_SUBTREES |
| @@ -3423,6 +3427,8 @@ static int rt6_fill_node(struct net *net, | |||
| 3423 | } | 3427 | } |
| 3424 | else if (rt->rt6i_flags & RTF_LOCAL) | 3428 | else if (rt->rt6i_flags & RTF_LOCAL) |
| 3425 | rtm->rtm_type = RTN_LOCAL; | 3429 | rtm->rtm_type = RTN_LOCAL; |
| 3430 | else if (rt->rt6i_flags & RTF_ANYCAST) | ||
| 3431 | rtm->rtm_type = RTN_ANYCAST; | ||
| 3426 | else if (rt->dst.dev && (rt->dst.dev->flags & IFF_LOOPBACK)) | 3432 | else if (rt->dst.dev && (rt->dst.dev->flags & IFF_LOOPBACK)) |
| 3427 | rtm->rtm_type = RTN_LOCAL; | 3433 | rtm->rtm_type = RTN_LOCAL; |
| 3428 | else | 3434 | else |
