7#ifndef BOTAN_IPV4_ADDRESS_H_
8#define BOTAN_IPV4_ADDRESS_H_
10#include <botan/types.h>
27 static std::optional<IPv4Address> from_string(std::string_view str);
42 uint32_t
value()
const {
return m_ip; }
45 std::array<uint8_t, 4> to_bytes()
const;
56 std::optional<size_t> prefix_length()
const;
95 static std::optional<IPv4Subnet>
from_string(std::string_view str);
109 bool is_host()
const {
return m_prefix_length == 32; }
122 std::vector<uint8_t> serialize()
const;
128 uint8_t m_prefix_length;
#define BOTAN_PUBLIC_API(maj, min)
IPv4Address operator&(const IPv4Address &other) const
auto operator<=>(const IPv4Address &) const =default
uint32_t value() const
The address as a 32-bit big-endian integer.
static IPv4Address host_mask()
static IPv4Address netmask(size_t bits)
static std::optional< IPv4Subnet > from_address_and_mask(std::span< const uint8_t, 8 > addr_and_mask)
bool is_host() const
True iff prefix_length() == 32.
friend bool operator==(const IPv4Subnet &, const IPv4Subnet &)=default
IPv4Subnet(IPv4Address address, size_t prefix_length)
size_t prefix_length() const
Prefix length in [0, 32].
static IPv4Subnet host(IPv4Address address)
static std::optional< IPv4Subnet > from_string(std::string_view str)
const IPv4Address & address() const
The network address (host bits already zeroed).
std::string to_string(ErrorType type)
Convert an ErrorType to string.