userver: userver/utils/ip.hpp File Reference
Loading...
Searching...
No Matches
ip.hpp File Reference

Detailed Description

IPv4 and IPv6 addresses and networks.

Definition in file ip.hpp.

Go to the source code of this file.

#include <array>
#include <cstddef>
#include <exception>
#include <string>
#include <system_error>
#include <vector>
#include <sys/socket.h>
#include <fmt/format.h>
+ This graph shows which files directly or indirectly include 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 = std::is_same_v<T, AddressV4> || std::is_same_v<T, AddressV6>
 

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 = std::is_same_v<T, AddressV4> || std::is_same_v<T, AddressV6>
inlineconstexpr

Definition at line 62 of file ip.hpp.