59 [[nodiscard]]
static std::optional<ipv4_addr>
parse(std::string_view s)
noexcept;
92 constexpr ipv4_addr(uint8_t a, uint8_t b, uint8_t c, uint8_t d) noexcept
94 static_cast<uint32_t
>(a) | (
static_cast<uint32_t
>(b) << 8) | (
static_cast<uint32_t
>(c) << 16) |
95 (
static_cast<uint32_t
>(d) << 24)
103 [[nodiscard]]
constexpr uint32_t
addr() const noexcept {
return _addr; }
110 [[nodiscard]]
constexpr bool is_any() const noexcept {
return _addr == 0; }
152 [[nodiscard]]
static std::optional<ipv6_addr>
parse(std::string_view s)
noexcept;
180 constexpr explicit ipv6_addr(std::array<uint32_t, 4> words, uint8_t
zone = 0) noexcept
189 [[nodiscard]]
constexpr const std::array<uint32_t, 4>&
addr() const noexcept {
return _addr; }
196 [[nodiscard]]
constexpr uint8_t
zone() const noexcept {
return _zone; }
203 [[nodiscard]]
constexpr bool is_any() const noexcept {
204 return _addr[0] == 0 && _addr[1] == 0 && _addr[2] == 0 && _addr[3] == 0;
213 std::array<uint32_t, 4> _addr = {};
224concept ip_address = std::same_as<T, ipv4_addr> || std::same_as<T, ipv6_addr>;
265using ip4_addr [[deprecated(
"use ipv4_addr")]] =
ipv4_addr;
266using ip6_addr [[deprecated(
"use ipv6_addr")]] =
ipv6_addr;
267using ip4_info [[deprecated(
"use ipv4_info")]] =
ipv4_info;
268using ip6_info [[deprecated(
"use ipv6_info")]] =
ipv6_info;
319#include "sdkconfig.h"
320#ifdef CONFIG_IDFXX_STD_FORMAT
323#include <string_view>
332struct formatter<
idfxx::net::ipv4_addr> {
333 std::formatter<std::string_view> _underlying;
335 constexpr auto parse(format_parse_context& ctx) {
return _underlying.parse(ctx); }
337 template<
typename FormatContext>
344struct formatter<
idfxx::net::ipv6_addr> {
345 std::formatter<std::string_view> _underlying;
347 constexpr auto parse(format_parse_context& ctx) {
return _underlying.parse(ctx); }
349 template<
typename FormatContext>
356struct formatter<
idfxx::net::ipv4_info> {
357 std::formatter<std::string_view> _underlying;
359 constexpr auto parse(format_parse_context& ctx) {
return _underlying.parse(ctx); }
361 template<
typename FormatContext>
368struct formatter<
idfxx::net::ipv6_info> {
369 std::formatter<std::string_view> _underlying;
371 constexpr auto parse(format_parse_context& ctx) {
return _underlying.parse(ctx); }
373 template<
typename FormatContext>
constexpr uint32_t addr() const noexcept
Returns the raw address value in network byte order.
constexpr ipv4_addr(uint8_t a, uint8_t b, uint8_t c, uint8_t d) noexcept
Constructs an IPv4 address from individual octets.
constexpr bool operator==(const ipv4_addr &) const noexcept=default
Compares two IPv4 addresses for equality.
static constexpr ipv4_addr any() noexcept
Returns the IPv4 wildcard address (0.0.0.0).
constexpr ipv4_addr(uint32_t addr) noexcept
Constructs an IPv4 address from a raw network-byte-order value.
static std::optional< ipv4_addr > parse(std::string_view s) noexcept
Parses an IPv4 address from dotted-decimal notation.
constexpr bool is_any() const noexcept
Tests whether this is a zero (unset) address.
constexpr ipv4_addr() noexcept=default
Constructs a zero-initialized IPv4 address (0.0.0.0).
constexpr uint8_t zone() const noexcept
Returns the zone ID.
constexpr ipv6_addr() noexcept=default
Constructs a zero-initialized IPv6 address (::).
constexpr const std::array< uint32_t, 4 > & addr() const noexcept
Returns the four 32-bit words of the address.
constexpr bool is_any() const noexcept
Tests whether this is a zero (unset) address.
constexpr bool operator==(const ipv6_addr &) const noexcept=default
Compares two IPv6 addresses for equality (including zone).
static constexpr ipv6_addr any() noexcept
Returns the IPv6 wildcard address (::).
constexpr ipv6_addr(std::array< uint32_t, 4 > words, uint8_t zone=0) noexcept
Constructs an IPv6 address from four 32-bit words.
static std::optional< ipv6_addr > parse(std::string_view s) noexcept
Parses an IPv6 address from its text representation.
Concept matching either ipv4_addr or ipv6_addr.
std::string to_string(core_id c)
Returns a string representation of a CPU core identifier.
IPv4 network interface information.
constexpr bool operator==(const ipv4_info &) const noexcept=default
Compares two ipv4_info structs for equality.
IPv6 network interface information.
constexpr bool operator==(const ipv6_info &) const noexcept=default
Compares two ipv6_info structs for equality.