11#include <promeki/config.h>
12#if PROMEKI_ENABLE_NETWORK
19PROMEKI_NAMESPACE_BEGIN
40 using List = ::promeki::List<Ipv6Subnet>;
53 static Result<Ipv6Subnet> fromString(
const String &str);
56 Ipv6Subnet() =
default;
63 Ipv6Subnet(
const Ipv6Address &addr,
int prefixLen) : _addr(addr), _prefixLen(prefixLen) {
64 if (_prefixLen < 0) _prefixLen = 0;
65 if (_prefixLen > 128) _prefixLen = 128;
72 const Ipv6Address &address()
const {
return _addr; }
75 int prefixLen()
const {
return _prefixLen; }
78 bool contains(
const Ipv6Address &addr)
const;
81 String toString()
const;
84 bool operator==(
const Ipv6Subnet &o)
const {
return _addr == o._addr && _prefixLen == o._prefixLen; }
86 bool operator!=(
const Ipv6Subnet &o)
const {
return !(*
this == o); }
95PROMEKI_FORMAT_VIA_TOSTRING(promeki::Ipv6Subnet);