1#ifndef SOURCEMETA_CORE_IP_H_
2#define SOURCEMETA_CORE_IP_H_
4#ifndef SOURCEMETA_CORE_IP_EXPORT
5#include <sourcemeta/core/ip_export.h>
21namespace sourcemeta::core {
35SOURCEMETA_CORE_IP_EXPORT
36auto is_ipv4(std::string_view address) -> bool;
51SOURCEMETA_CORE_IP_EXPORT
52auto is_ipv6(std::string_view address) -> bool;
87SOURCEMETA_CORE_IP_EXPORT
89 -> std::optional<IPAddressClass>;
103SOURCEMETA_CORE_IP_EXPORT
105 -> std::optional<IPAddressClass>;
119SOURCEMETA_CORE_IP_EXPORT
SOURCEMETA_CORE_IP_EXPORT auto is_ipv4(std::string_view address) -> bool
SOURCEMETA_CORE_IP_EXPORT auto is_ipv6(std::string_view address) -> bool
SOURCEMETA_CORE_IP_EXPORT auto ipv6_classify(const std::string_view address) -> std::optional< IPAddressClass >
IPAddressClass
Definition ip.h:56
SOURCEMETA_CORE_IP_EXPORT auto ipv4_classify(const std::string_view address) -> std::optional< IPAddressClass >
SOURCEMETA_CORE_IP_EXPORT auto ip_is_globally_routable(const std::string_view address) -> bool
@ Public
A globally reachable address.
Definition ip.h:58
@ Private
A private-use or shared address (RFC 1918, RFC 6598).
Definition ip.h:62
@ Loopback
A loopback address (RFC 1122, RFC 4291 Section 2.5.3).
Definition ip.h:60
@ Unspecified
Definition ip.h:73
@ LinkLocal
A link-local address (RFC 3927, RFC 4291 Section 2.5.6).
Definition ip.h:64
@ Reserved
An address reserved for future or special use (RFC 1112, RFC 5737).
Definition ip.h:70
@ UniqueLocal
A unique local address (RFC 4193).
Definition ip.h:66
@ Multicast
A multicast address (RFC 5771, RFC 4291 Section 2.7).
Definition ip.h:68