mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 02:06:43 +07:00
ipv6 sit: Fix 6rd relay address.
ipv6 sit: Fix 6rd relay address. Relay's address should be extracted from real IPv6 address instead of configured prefix. Signed-off-by: YOSHIFUJI Hideaki <yoshfuji@linux-ipv6.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
e0c9394815
commit
e7db38c38f
@ -569,12 +569,12 @@ __be32 try_6rd(struct in6_addr *v6dst, struct ip_tunnel *tunnel)
|
||||
pbw0 = tunnel->ip6rd.prefixlen >> 5;
|
||||
pbi0 = tunnel->ip6rd.prefixlen & 0x1f;
|
||||
|
||||
d = (ntohl(tunnel->ip6rd.prefix.s6_addr32[pbw0]) << pbi0) >>
|
||||
d = (ntohl(v6dst->s6_addr32[pbw0]) << pbi0) >>
|
||||
tunnel->ip6rd.relay_prefixlen;
|
||||
|
||||
pbi1 = pbi0 - tunnel->ip6rd.relay_prefixlen;
|
||||
if (pbi1 > 0)
|
||||
d |= ntohl(tunnel->ip6rd.prefix.s6_addr32[pbw0 + 1]) >>
|
||||
d |= ntohl(v6dst->s6_addr32[pbw0 + 1]) >>
|
||||
(32 - pbi1);
|
||||
|
||||
dst = tunnel->ip6rd.relay_prefix | htonl(d);
|
||||
|
Loading…
Reference in New Issue
Block a user