mirror of
https://github.com/savoirfairelinux/opendht.git
synced 2026-11-08 04:21:51 +00:00
sockaddr: add getMappedIPv6
This commit is contained in:
1 parent
738424b1ae
commit
d438d4ef1b
2 files changed
+17
No files matched your search
@@ -215,6 +215,22 @@ SockAddr::getMappedIPv4() const
|
||||
return ret;
|
||||
}
|
||||
|
||||
SockAddr
|
||||
SockAddr::getMappedIPv6() const
|
||||
{
|
||||
auto family = getFamily();
|
||||
if (family != AF_INET)
|
||||
return *this;
|
||||
SockAddr ret;
|
||||
ret.setFamily(AF_INET6);
|
||||
ret.setPort(getPort());
|
||||
auto addr4 = reinterpret_cast<const uint8_t*>(&getIPv4().sin_addr);
|
||||
auto addr6 = reinterpret_cast<uint8_t*>(&ret.getIPv6().sin6_addr);
|
||||
std::copy(MAPPED_IPV4_PREFIX.begin(), MAPPED_IPV4_PREFIX.end(), addr6);
|
||||
std::copy_n(addr4, sizeof(in_addr), addr6 + MAPPED_IPV4_PREFIX.size());
|
||||
return ret;
|
||||
}
|
||||
|
||||
bool operator==(const SockAddr& a, const SockAddr& b) {
|
||||
return a.equals(b);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user