llarp/net/ip.hpp
Namespaces
| Name |
|---|
| llarp [crypto.hpp] |
| llarp::net |
| llarp::net::detail |
Source code
#pragma once
#include "net_int.hpp"
#include <cstdint>
namespace llarp::net
{
huint128_t
In6ToHUInt(in6_addr addr);
in6_addr
HUIntToIn6(huint128_t x);
namespace detail
{
constexpr huint128_t
ExpandV4(huint32_t x)
{
return huint128_t{0x0000'ffff'0000'0000UL} | huint128_t{x.h};
}
constexpr huint128_t
ExpandV4Lan(huint32_t x)
{
return huint128_t{uint128_t{0xfd00'0000'0000'0000UL, 0UL}} | huint128_t{x.h};
}
constexpr huint32_t
TruncateV6(huint128_t x)
{
huint32_t ret = {0};
ret.h = (uint32_t)(x.h & 0x0000'0000'ffff'ffffUL);
return ret;
}
} // namespace detail
inline ipv6addr_t
ExpandV4(ipv4addr_t x)
{
return ToNet(detail::ExpandV4(ToHost(x)));
}
inline ipv6addr_t
ExpandV4Lan(ipv4addr_t x)
{
return ToNet(detail::ExpandV4Lan(ToHost(x)));
}
inline ipv4addr_t
TruncateV6(ipv6addr_t x)
{
return ToNet(detail::TruncateV6(ToHost(x)));
}
} // namespace llarp::net
Updated on 2026-01-10 at 22:49:45 +0000