userver: userver/utils/ip.hpp File Reference
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Modules Pages Concepts
ip.hpp File Reference

Your opinion will help to improve our service

Leave a feedback >

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>
#include <userver/utils/zstring_view.hpp>
+ 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.
 
namespace  utils::ip
 IP address and 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 (utils::zstring_view str)
 Create an IPv4 address from an IP address string in dotted decimal form.
 
AddressV6 utils::ip::AddressV6FromString (utils::zstring_view 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>