Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

YOSHIFUJI Hideaki / 吉藤英明 and committed by
David S. Miller
91b2a3f9 e7db38c3

+6 -3
+6 -3
net/ipv6/sit.c
··· 1014 1014 ip6rd.prefixlen); 1015 1015 if (!ipv6_addr_equal(&prefix, &ip6rd.prefix)) 1016 1016 goto done; 1017 - relay_prefix = ip6rd.relay_prefix & 1018 - htonl(0xffffffffUL << 1019 - (32 - ip6rd.relay_prefixlen)); 1017 + if (ip6rd.relay_prefixlen) 1018 + relay_prefix = ip6rd.relay_prefix & 1019 + htonl(0xffffffffUL << 1020 + (32 - ip6rd.relay_prefixlen)); 1021 + else 1022 + relay_prefix = 0; 1020 1023 if (relay_prefix != ip6rd.relay_prefix) 1021 1024 goto done; 1022 1025