SNode.C
Loading...
Searching...
No Matches
net::in6::config::ConfigAddress< ConfigAddressTypeT > Class Template Reference

#include <ConfigAddress.h>

Inheritance diagram for net::in6::config::ConfigAddress< ConfigAddressTypeT >:
Collaboration diagram for net::in6::config::ConfigAddress< ConfigAddressTypeT >:

Public Member Functions

SocketAddress getSocketAddress (const SocketAddress::SockAddr &sockAddr, SocketAddress::SockLen sockAddrLen)
 
ConfigAddresssetSocketAddress (const SocketAddress &socketAddress)
 
ConfigAddresssetHost (const std::string &ipOrHostname)
 
std::string getHost () const
 
ConfigAddresssetPort (uint16_t port)
 
uint16_t getPort () const
 
ConfigAddresssetNumeric (bool numeric=true)
 
bool getNumeric () const
 
ConfigAddresssetNumericReverse (bool numeric=true)
 
bool getNumericReverse () const
 

Protected Member Functions

 ConfigAddress (net::config::ConfigInstance *instance, const std::string &addressOptionName, const std::string &addressOptionDescription)
 
ConfigAddresssetIpv4Mapped (bool ipv4Mapped=true)
 
bool getIpv4Mapped () const
 
ConfigAddresssetAiFlags (int aiFlags)
 
int getAiFlags () const
 
ConfigAddresssetAiSockType (int aiSocktype)
 
int getAiSockType () const
 
ConfigAddresssetAiProtocol (int aiProtocol)
 
int getAiProtocol () const
 
ConfigAddresssetHostRequired (bool required=true)
 
ConfigAddresssetPortRequired (bool required=true)
 

Private Types

using Super = ConfigAddressTypeT<SocketAddress>
 

Private Member Functions

SocketAddressinit () final
 

Private Attributes

CLI::Option * hostOpt = nullptr
 
CLI::Option * portOpt = nullptr
 
CLI::Option * numericOpt = nullptr
 
CLI::Option * numericReverseOpt = nullptr
 
CLI::Option * ipv4MappedOpt = nullptr
 
int aiFlags = 0
 
int aiSockType = 0
 
int aiProtocol = 0
 

Detailed Description

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
class net::in6::config::ConfigAddress< ConfigAddressTypeT >

Definition at line 68 of file ConfigAddress.h.

Member Typedef Documentation

◆ Super

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
using net::in6::config::ConfigAddress< ConfigAddressTypeT >::Super = ConfigAddressTypeT<SocketAddress>
private

Definition at line 70 of file ConfigAddress.h.

Constructor & Destructor Documentation

◆ ConfigAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
net::in6::config::ConfigAddress< ConfigAddressType >::ConfigAddress ( net::config::ConfigInstance * instance,
const std::string & addressOptionName,
const std::string & addressOptionDescription )
explicitprotected

Definition at line 87 of file ConfigAddress.cpp.

90 : Super(instance, addressOptionName, addressOptionDescription) {
91 hostOpt = Super::addOption( //
92 "--host",
93 "Host name or IPv6 address",
94 "hostname|IPv6",
95 "::",
96 CLI::TypeValidator<std::string>());
97 portOpt = Super::addOption( //
98 "--port",
99 "Port number",
100 "port",
101 0,
102 CLI::Range(std::numeric_limits<uint16_t>::min(), std::numeric_limits<uint16_t>::max()));
103 numericOpt = Super::addFlag( //
104 "--numeric",
105 "Suppress host name lookup",
106 "bool",
107 XSTR(IPV6_NUMERIC),
108 CLI::IsMember({"true", "false"}));
109 numericReverseOpt = Super::addFlag( //
110 "--numeric-reverse",
111 "Suppress reverse host name lookup",
112 "bool",
113 XSTR(IPV6_NUMERIC_REVERSE),
114 CLI::IsMember({"true", "false"}));
115 ipv4MappedOpt = Super::addFlag( //
116 "--ipv4-mapped",
117 "Resolve IPv4-mapped IPv6 addresses also",
118 "bool",
119 XSTR(IPV4_MAPPED),
120 CLI::IsMember({"true", "false"}));
121 }
#define XSTR(s)
ConfigAddressTypeT< SocketAddress > Super

Member Function Documentation

◆ getAiFlags()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiFlags ( ) const
protected

Definition at line 249 of file ConfigAddress.cpp.

249 {
250 return aiFlags;
251 }

◆ getAiProtocol()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiProtocol ( ) const
protected

Definition at line 273 of file ConfigAddress.cpp.

273 {
274 return aiProtocol;
275 }

◆ getAiSockType()

template<template< typename SocketAddress > typename ConfigAddressType>
int net::in6::config::ConfigAddress< ConfigAddressType >::getAiSockType ( ) const
protected

Definition at line 261 of file ConfigAddress.cpp.

261 {
262 return aiSockType;
263 }

◆ getHost()

template<template< typename SocketAddress > typename ConfigAddressType>
std::string net::in6::config::ConfigAddress< ConfigAddressType >::getHost ( ) const

Definition at line 179 of file ConfigAddress.cpp.

179 {
180 return hostOpt->as<std::string>();
181 }

◆ getIpv4Mapped()

template<template< typename SocketAddress > typename ConfigAddressType>
bool net::in6::config::ConfigAddress< ConfigAddressType >::getIpv4Mapped ( ) const
protected

Definition at line 237 of file ConfigAddress.cpp.

237 {
238 return ipv4MappedOpt->as<bool>();
239 }

◆ getNumeric()

template<template< typename SocketAddress > typename ConfigAddressType>
bool net::in6::config::ConfigAddress< ConfigAddressType >::getNumeric ( ) const

Definition at line 212 of file ConfigAddress.cpp.

212 {
213 return numericOpt->as<bool>();
214 }

◆ getNumericReverse()

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
bool net::in6::config::ConfigAddress< ConfigAddressTypeT >::getNumericReverse ( ) const

◆ getPort()

template<template< typename SocketAddress > typename ConfigAddressType>
uint16_t net::in6::config::ConfigAddress< ConfigAddressType >::getPort ( ) const

Definition at line 196 of file ConfigAddress.cpp.

196 {
197 return portOpt->as<uint16_t>();
198 }

◆ getSocketAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
SocketAddress net::in6::config::ConfigAddress< ConfigAddressType >::getSocketAddress ( const SocketAddress::SockAddr & sockAddr,
SocketAddress::SockLen sockAddrLen )

Definition at line 142 of file ConfigAddress.cpp.

143 {
144 SocketAddress socketAddress;
145 try {
146 socketAddress = SocketAddress(sockAddr, sockAddrLen, numericReverseOpt->as<bool>());
147 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) {
148 try {
149 socketAddress = Super::getSocketAddress(sockAddr, sockAddrLen);
150 } catch ([[maybe_unused]] const SocketAddress::BadSocketAddress& badSocketAddress) { // cppcheck-suppress shadowVariable
151 throw;
152 }
153 }
154
155 return socketAddress;
156 }
SocketClient::SocketAddress SocketAddress

◆ init()

template<template< typename SocketAddress > typename ConfigAddressType>
SocketAddress * net::in6::config::ConfigAddress< ConfigAddressType >::init ( )
finalprivate

Definition at line 124 of file ConfigAddress.cpp.

124 {
125 SocketAddress* socketAddress = new SocketAddress(hostOpt->as<std::string>(), portOpt->as<uint16_t>());
126
127 try {
128 socketAddress->init({.aiFlags = (aiFlags & ~AI_NUMERICHOST) | (numericOpt->as<bool>() ? AI_NUMERICHOST : 0),
132 delete socketAddress;
133 socketAddress = nullptr;
134
135 throw;
136 }
137
138 return socketAddress;
139 }

◆ setAiFlags()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiFlags ( int aiFlags)
protected

Definition at line 242 of file ConfigAddress.cpp.

242 {
243 this->aiFlags = aiFlags;
244
245 return *this;
246 }

◆ setAiProtocol()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiProtocol ( int aiProtocol)
protected

Definition at line 266 of file ConfigAddress.cpp.

266 {
267 this->aiProtocol = aiProtocol;
268
269 return *this;
270 }

◆ setAiSockType()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setAiSockType ( int aiSocktype)
protected

Definition at line 254 of file ConfigAddress.cpp.

254 {
255 this->aiSockType = aiSockType;
256
257 return *this;
258 }

◆ setHost()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setHost ( const std::string & ipOrHostname)

Definition at line 167 of file ConfigAddress.cpp.

167 {
168 const utils::PreserveErrno preserveErrno;
169
170 hostOpt //
171 ->default_val(ipOrHostname)
172 ->clear();
173 Super::required(hostOpt, false);
174
175 return *this;
176 }

◆ setHostRequired()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setHostRequired ( bool required = true)
protected

Definition at line 278 of file ConfigAddress.cpp.

278 {
279 Super::required(hostOpt, required);
280
281 return *this;
282 }

◆ setIpv4Mapped()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setIpv4Mapped ( bool ipv4Mapped = true)
protected

Definition at line 226 of file ConfigAddress.cpp.

226 {
227 const utils::PreserveErrno preserveErrno;
228
230 ->default_val(ipv4Mapped)
231 ->clear();
232
233 return *this;
234 }

◆ setNumeric()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setNumeric ( bool numeric = true)

Definition at line 201 of file ConfigAddress.cpp.

201 {
202 const utils::PreserveErrno preserveErrno;
203
204 numericOpt //
205 ->default_str(numeric ? "true" : "false")
206 ->clear();
207
208 return *this;
209 }

◆ setNumericReverse()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setNumericReverse ( bool numeric = true)

Definition at line 217 of file ConfigAddress.cpp.

217 {
219 ->default_str(numeric ? "true" : "false")
220 ->clear();
221
222 return *this;
223 }

◆ setPort()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setPort ( uint16_t port)

Definition at line 184 of file ConfigAddress.cpp.

184 {
185 const utils::PreserveErrno preserveErrno;
186
187 portOpt //
188 ->default_val(port)
189 ->clear();
190 Super::required(portOpt, false);
191
192 return *this;
193 }

◆ setPortRequired()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setPortRequired ( bool required = true)
protected

Definition at line 285 of file ConfigAddress.cpp.

285 {
286 Super::required(portOpt, required);
287
288 return *this;
289 }

◆ setSocketAddress()

template<template< typename SocketAddress > typename ConfigAddressType>
ConfigAddress< ConfigAddressType > & net::in6::config::ConfigAddress< ConfigAddressType >::setSocketAddress ( const SocketAddress & socketAddress)

Definition at line 159 of file ConfigAddress.cpp.

159 {
160 setHost(socketAddress.getHost());
161 setPort(socketAddress.getPort());
162
163 return *this;
164 }
ConfigAddress & setPort(uint16_t port)
ConfigAddress & setHost(const std::string &ipOrHostname)

Member Data Documentation

◆ aiFlags

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiFlags = 0
private

Definition at line 121 of file ConfigAddress.h.

◆ aiProtocol

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiProtocol = 0
private

Definition at line 123 of file ConfigAddress.h.

◆ aiSockType

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
int net::in6::config::ConfigAddress< ConfigAddressTypeT >::aiSockType = 0
private

Definition at line 122 of file ConfigAddress.h.

◆ hostOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::hostOpt = nullptr
private

Definition at line 115 of file ConfigAddress.h.

◆ ipv4MappedOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::ipv4MappedOpt = nullptr
private

Definition at line 119 of file ConfigAddress.h.

◆ numericOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::numericOpt = nullptr
private

Definition at line 117 of file ConfigAddress.h.

◆ numericReverseOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::numericReverseOpt = nullptr
private

Definition at line 118 of file ConfigAddress.h.

◆ portOpt

template<template< typename SocketAddressT > typename ConfigAddressTypeT>
CLI::Option* net::in6::config::ConfigAddress< ConfigAddressTypeT >::portOpt = nullptr
private

Definition at line 116 of file ConfigAddress.h.


The documentation for this class was generated from the following files: