ipvs: Reject ipv6 link-local addresses for destinations
authorSven Wegener <sven.wegener@stealer.net>
Fri, 5 Sep 2008 14:53:49 +0000 (16:53 +0200)
committerSimon Horman <horms@verge.net.au>
Sun, 7 Sep 2008 23:34:45 +0000 (09:34 +1000)
We can't use non-local link-local addresses for destinations, without
knowing the interface on which we can reach the address. Reject them for
now.

Signed-off-by: Sven Wegener <sven.wegener@stealer.net>
Acked-by: Julius Volz <juliusv@google.com>
Signed-off-by: Simon Horman <horms@verge.net.au>
net/ipv4/ipvs/ip_vs_ctl.c

index d2dc05a843f50912ccc8c42686369db0ed6af124..e53efe41f01dd29740e857778b1cdc4a62f806e6 100644 (file)
@@ -838,7 +838,8 @@ ip_vs_new_dest(struct ip_vs_service *svc, struct ip_vs_dest_user_kern *udest,
 #ifdef CONFIG_IP_VS_IPV6
        if (svc->af == AF_INET6) {
                atype = ipv6_addr_type(&udest->addr.in6);
-               if (!(atype & IPV6_ADDR_UNICAST) &&
+               if ((!(atype & IPV6_ADDR_UNICAST) ||
+                       atype & IPV6_ADDR_LINKLOCAL) &&
                        !__ip_vs_addr_is_local_v6(&udest->addr.in6))
                        return -EINVAL;
        } else