aboutsummaryrefslogtreecommitdiffstats
path: root/net/ipv6/sit.c
diff options
context:
space:
mode:
authorYOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org>2009-10-10 23:45:13 -0400
committerDavid S. Miller <davem@davemloft.net>2009-10-12 02:41:10 -0400
commit91b2a3f9bb0fa8d64b365a10b0624b0341e1a338 (patch)
tree0152d7f1a7a38b74d6d55085fc34d01f86635e70 /net/ipv6/sit.c
parente7db38c38fe8df1d890ae772737e27308bdc5956 (diff)
ipv6 sit: Set relay to 0.0.0.0 directly if relay_prefixlen == 0.
ipv6 sit: Set relay to 0.0.0.0 directly if relay_prefixlen == 0. Do not use bit-shift if relay_prefixlen == 0; relay_prefix << 32 does not result in 0. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/ipv6/sit.c')
-rw-r--r--net/ipv6/sit.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/net/ipv6/sit.c b/net/ipv6/sit.c
index 193d0c6c5ce2..510d31f3cb96 100644
--- a/net/ipv6/sit.c
+++ b/net/ipv6/sit.c
@@ -1014,9 +1014,12 @@ ipip6_tunnel_ioctl (struct net_device *dev, struct ifreq *ifr, int cmd)
1014 ip6rd.prefixlen); 1014 ip6rd.prefixlen);
1015 if (!ipv6_addr_equal(&prefix, &ip6rd.prefix)) 1015 if (!ipv6_addr_equal(&prefix, &ip6rd.prefix))
1016 goto done; 1016 goto done;
1017 relay_prefix = ip6rd.relay_prefix & 1017 if (ip6rd.relay_prefixlen)
1018 htonl(0xffffffffUL << 1018 relay_prefix = ip6rd.relay_prefix &
1019 (32 - ip6rd.relay_prefixlen)); 1019 htonl(0xffffffffUL <<
1020 (32 - ip6rd.relay_prefixlen));
1021 else
1022 relay_prefix = 0;
1020 if (relay_prefix != ip6rd.relay_prefix) 1023 if (relay_prefix != ip6rd.relay_prefix)
1021 goto done; 1024 goto done;
1022 1025