Network/Socket: Fix IPv6 decoding on posix
This commit is contained in:
parent
c869967928
commit
63ee3ca8d4
|
|
@ -59,24 +59,13 @@ namespace Nz
|
||||||
|
|
||||||
IpAddress::IPv6 convertSockaddr6ToIPv6(const in6_addr& addr)
|
IpAddress::IPv6 convertSockaddr6ToIPv6(const in6_addr& addr)
|
||||||
{
|
{
|
||||||
union byteToInt
|
auto& rawIpV6 = addr.s6_addr;
|
||||||
{
|
|
||||||
UInt8 b[sizeof(uint32_t)];
|
|
||||||
uint32_t i;
|
|
||||||
};
|
|
||||||
|
|
||||||
IpAddress::IPv6 ipv6Addr;
|
IpAddress::IPv6 ipv6;
|
||||||
|
for (unsigned int i = 0; i < 8; ++i)
|
||||||
|
ipv6[i] = rawIpV6[i * 2] << 8 | rawIpV6[i * 2 + 1];
|
||||||
|
|
||||||
for (auto i = 0; i < 4; ++i)
|
return ipv6;
|
||||||
{
|
|
||||||
byteToInt hostOrder;
|
|
||||||
hostOrder.i = 0;
|
|
||||||
std::copy(addr.s6_addr + 4 * i, addr.s6_addr + 4 * (i + 1), hostOrder.b);
|
|
||||||
ipv6Addr[2 * i] = (hostOrder.b[3] << 8) + hostOrder.b[2];
|
|
||||||
ipv6Addr[2 * i + 1] = (hostOrder.b[1] << 8) + hostOrder.b[0];
|
|
||||||
}
|
|
||||||
|
|
||||||
return ipv6Addr;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue