ipv6: don't set DST_NOCOUNT for remotely added routes
authorSabrina Dubroca <sd@queasysnail.net>
Thu, 6 Mar 2014 16:51:57 +0000 (17:51 +0100)
committerBen Hutchings <ben@decadent.org.uk>
Wed, 30 Apr 2014 15:23:18 +0000 (16:23 +0100)
commit c88507fbad8055297c1d1e21e599f46960cbee39 upstream.

DST_NOCOUNT should only be used if an authorized user adds routes
locally. In case of routes which are added on behalf of router
advertisments this flag must not get used as it allows an unlimited
number of routes getting added remotely.

Signed-off-by: Sabrina Dubroca <sd@queasysnail.net>
Acked-by: Hannes Frederic Sowa <hannes@stressinduktion.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
[bwh: Backported to 3.2: adjust context]
Acked-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
net/ipv6/route.c

index 9a4f4377ce9241c374e7581ce6b568bb30259f34..39e11f923a73356a00268a04c90fc57a75d453f8 100644 (file)
@@ -1250,7 +1250,7 @@ int ip6_route_add(struct fib6_config *cfg)
                goto out;
        }
 
-       rt = ip6_dst_alloc(&net->ipv6.ip6_dst_ops, NULL, DST_NOCOUNT);
+       rt = ip6_dst_alloc(&net->ipv6.ip6_dst_ops, NULL, (cfg->fc_flags & RTF_ADDRCONF) ? 0 : DST_NOCOUNT);
 
        if (rt == NULL) {
                err = -ENOMEM;