IPv4 (RFC 3986) and IPv6 (RFC 3986, RFC 4291) address validation. More...
Enumerations | |
| enum class | sourcemeta::core::IPAddressClass : std::uint8_t { IPAddressClass::Public , IPAddressClass::Loopback , IPAddressClass::Private , IPAddressClass::LinkLocal , IPAddressClass::UniqueLocal , IPAddressClass::Multicast , IPAddressClass::Reserved , IPAddressClass::Unspecified } |
Functions | |
| SOURCEMETA_CORE_IP_EXPORT auto | sourcemeta::core::is_ipv4 (std::string_view address) -> bool |
| SOURCEMETA_CORE_IP_EXPORT auto | sourcemeta::core::is_ipv6 (std::string_view address) -> bool |
| SOURCEMETA_CORE_IP_EXPORT auto | sourcemeta::core::ipv4_classify (const std::string_view address) -> std::optional< IPAddressClass > |
| SOURCEMETA_CORE_IP_EXPORT auto | sourcemeta::core::ipv6_classify (const std::string_view address) -> std::optional< IPAddressClass > |
| SOURCEMETA_CORE_IP_EXPORT auto | sourcemeta::core::ip_is_globally_routable (const std::string_view address) -> bool |
IPv4 (RFC 3986) and IPv6 (RFC 3986, RFC 4291) address validation.
This functionality is included as follows:
|
strong |
The reachability class of an IP address (RFC 6890).
| SOURCEMETA_CORE_IP_EXPORT auto sourcemeta::core::ip_is_globally_routable | ( | const std::string_view | address | ) | -> bool |
Whether an IPv4 or IPv6 address is globally reachable (RFC 6890), returning false both for an address that is not and for input that is not a valid address. For example:
| SOURCEMETA_CORE_IP_EXPORT auto sourcemeta::core::ipv4_classify | ( | const std::string_view | address | ) | -> std::optional< IPAddressClass > |
Classify an IPv4 address (RFC 6890), returning no value when the input is not a valid IPv4 address. For example:
| SOURCEMETA_CORE_IP_EXPORT auto sourcemeta::core::ipv6_classify | ( | const std::string_view | address | ) | -> std::optional< IPAddressClass > |
Classify an IPv6 address (RFC 6890), returning no value when the input is not a valid IPv6 address. An IPv4-mapped or IPv4-compatible address is classified as its embedded IPv4 address. For example:
| SOURCEMETA_CORE_IP_EXPORT auto sourcemeta::core::is_ipv4 | ( | std::string_view | address | ) | -> bool |
Check whether the given string is a valid IPv4 address per RFC 3986 Section 3.2.2. For example:
| SOURCEMETA_CORE_IP_EXPORT auto sourcemeta::core::is_ipv6 | ( | std::string_view | address | ) | -> bool |
Check whether the given string is a valid IPv6 address per RFC 3986 Section 3.2.2 and RFC 4291 Section 2.2. The input must not include surrounding brackets. For example: