userver: userver/utils/ip.hpp File Reference
⚠️ This is the documentation for an old userver version. Click here to switch to the latest version.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
ip.hpp File Reference

IPv4 and IPv6 addresses and networks. More...

#include <array>
#include <exception>
#include <string>
#include <system_error>
#include <vector>
#include <sys/socket.h>
#include <fmt/format.h>
+ Include dependency graph for ip.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  utils::ip::AddressBase< N >
 Base class for IPv4/IPv6 addresses. More...
 
class  utils::ip::NetworkBase< Address, typename >
 Base class for IPv4/IPv6 network. More...
 
class  utils::ip::InetNetwork
 INET IPv4/IPv4 network. More...
 
class  utils::ip::AddressSystemError
 Invalid network or address. More...
 

Namespaces

namespace  utils
 Utilities.
 

Typedefs

using utils::ip::AddressV4 = AddressBase< 4 >
 IPv4 address in network bytes order.
 
using utils::ip::AddressV6 = AddressBase< 16 >
 IPv6 address in network bytes order.
 
using utils::ip::NetworkV4 = NetworkBase< AddressV4 >
 IPv4 network.
 
using utils::ip::NetworkV6 = NetworkBase< AddressV6 >
 IPv6 network.
 

Functions

AddressV4 utils::ip::AddressV4FromString (const std::string &str)
 Create an IPv4 address from an IP address string in dotted decimal form.
 
AddressV6 utils::ip::AddressV6FromString (const std::string &str)
 Create an IPv6 address from an IP address string in dotted decimal form.
 
std::string utils::ip::AddressV4ToString (const AddressV4 &address)
 Get the address as a string in dotted decimal format.
 
std::string utils::ip::AddressV6ToString (const AddressV6 &address)
 Get the address as a string in dotted decimal format.
 
NetworkV4 utils::ip::NetworkV4FromString (const std::string &str)
 Create an IPv4 network from a string containing IP address and prefix length.
 
NetworkV6 utils::ip::NetworkV6FromString (const std::string &str)
 Create an IPv6 network from a string containing IP address and prefix length.
 
std::string utils::ip::NetworkV4ToString (const NetworkV4 &network)
 Get the network as an address in dotted decimal format.
 
std::string utils::ip::NetworkV6ToString (const NetworkV6 &network)
 Get the network as an address in dotted decimal format.
 
NetworkV4 utils::ip::TransformToCidrFormat (NetworkV4 network)
 Convert NetworkV4 to CIDR format.
 
NetworkV6 utils::ip::TransformToCidrFormat (NetworkV6 network)
 Convert NetworkV4 to CIDR format.
 
NetworkV4 utils::ip::NetworkV4FromInetNetwork (const InetNetwork &inet_network)
 Convert InetNetwork to NetworkV4.
 
NetworkV6 utils::ip::NetworkV6FromInetNetwork (const InetNetwork &inet_network)
 Convert InetNetwork to NetworkV6.
 
InetNetwork utils::ip::NetworkV4ToInetNetwork (const NetworkV4 &network)
 Convert NetworkV4 to InetNetwork.
 
InetNetwork utils::ip::NetworkV6ToInetNetwork (const NetworkV6 &network)
 Convert NetworkV6 to InetNetwork.
 

Variables

template<typename T >
constexpr bool utils::ip::kIsAddressType
 

Detailed Description

IPv4 and IPv6 addresses and networks.

Definition in file ip.hpp.

Function Documentation

◆ AddressV4FromString()

AddressV4 utils::ip::AddressV4FromString ( const std::string &  str)

Create an IPv4 address from an IP address string in dotted decimal form.

Exceptions
AddressSystemError

◆ NetworkV4FromString()

NetworkV4 utils::ip::NetworkV4FromString ( const std::string &  str)

Create an IPv4 network from a string containing IP address and prefix length.

Exceptions
std::invalid_argument,AddressSystemError

Variable Documentation

◆ kIsAddressType

template<typename T >
constexpr bool utils::ip::kIsAddressType
inlineconstexpr
Initial value:
=
std::is_same_v<T, AddressV4> || std::is_same_v<T, AddressV6>

Definition at line 63 of file ip.hpp.