diff options
author | YOSHIFUJI Hideaki / 吉藤英明 <yoshfuji@linux-ipv6.org> | 2009-10-10 23:45:13 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2009-10-12 02:41:10 -0400 |
commit | 91b2a3f9bb0fa8d64b365a10b0624b0341e1a338 (patch) | |
tree | 0152d7f1a7a38b74d6d55085fc34d01f86635e70 /net/ipv6/sit.c | |
parent | e7db38c38fe8df1d890ae772737e27308bdc5956 (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.c | 9 |
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 | ||