2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "net/in6/SocketAddrInfo.h"
44#ifndef DOXYGEN_SHOULD_SKIP_THIS
46#include "log/Logger.h"
49#include <netinet/in.h>
61 int SocketAddrInfo::resolve(
const std::string& node,
const std::string& service,
const addrinfo& hints) {
87 : sockaddr_in6{.sin6_family = AF_INET6, .sin6_port{}, .sin6_flowinfo{}, .sin6_addr{}, .sin6_scope_id{}};
96 static char hostBfr[NI_MAXHOST];
97 static char servBfr[NI_MAXSERV];
98 std::memset(hostBfr, 0, NI_MAXHOST);
99 std::memset(servBfr, 0, NI_MAXSERV);
101 getnameinfo(currentAddrInfo->ai_addr,
102 currentAddrInfo->ai_addrlen,
107 NI_NUMERICHOST | NI_NUMERICSERV);
109 struct sockaddr_in* aiAddr =
reinterpret_cast<sockaddr_in*>(
currentAddrInfo->ai_addr);
111 const std::string format =
"AddressInfo:\n"
114 " ai_family = %v (PF_INET = %v, PF_INET6 = %v)\n"
115 " ai_socktype = %v (SOCK_STREAM = %v, SOCK_DGRAM = %v)\n"
116 " ai_protocol = %v (IPPROTO_TCP = %v, IPPROTO_UDP = %v)\n"
117 " ai_addrlen = %v (sockaddr_in = %v, "
118 "sockaddr_in6 = %v)\n"
119 " ai_addr = sin_family: %v (AF_INET = %v, "
124 el::Loggers::getLogger(
"default")->trace(format.c_str(),
137 sizeof(
struct sockaddr_in),
138 sizeof(
struct sockaddr_in6),
struct addrinfo * currentAddrInfo
struct addrinfo * addrInfo
std::string getCanonName()
sockaddr_in6 getSockAddr()
int getaddrinfo(const char *node, const char *service, const struct addrinfo *hints, struct addrinfo **res)