Sourcemeta Core 0.0.0
Loading...
Searching...
No Matches
ip.h
1#ifndef SOURCEMETA_CORE_IP_H_
2#define SOURCEMETA_CORE_IP_H_
3
4#ifndef SOURCEMETA_CORE_IP_EXPORT
5#include <sourcemeta/core/ip_export.h>
6#endif
7
8#include <cstdint> // std::uint8_t
9#include <optional> // std::optional
10#include <string_view> // std::string_view
11
20
21namespace sourcemeta::core {
22
35SOURCEMETA_CORE_IP_EXPORT
36auto is_ipv4(std::string_view address) -> bool;
37
51SOURCEMETA_CORE_IP_EXPORT
52auto is_ipv6(std::string_view address) -> bool;
53
75
87SOURCEMETA_CORE_IP_EXPORT
88auto ipv4_classify(const std::string_view address)
89 -> std::optional<IPAddressClass>;
90
103SOURCEMETA_CORE_IP_EXPORT
104auto ipv6_classify(const std::string_view address)
105 -> std::optional<IPAddressClass>;
106
119SOURCEMETA_CORE_IP_EXPORT
120auto ip_is_globally_routable(const std::string_view address) -> bool;
121
122} // namespace sourcemeta::core
123
124#endif
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