#include <C4NetIO.h>
|
union { |
sockaddr | gen |
|
sockaddr_in | v4 |
|
sockaddr_in6 | v6 |
|
}; | |
|
Definition at line 135 of file C4NetIO.h.
◆ AddressFamily
Enumerator |
---|
IPv6 | |
IPv4 | |
UnknownFamily | |
Definition at line 70 of file C4NetIO.h.
◆ SpecialAddress
Enumerator |
---|
Loopback | |
Any | |
AnyIPv4 | |
Definition at line 76 of file C4NetIO.h.
◆ ToStringFlags
Enumerator |
---|
TSF_SkipZoneId | |
TSF_SkipPort | |
Definition at line 83 of file C4NetIO.h.
◆ EndpointAddress() [1/5]
C4NetIO::EndpointAddress::EndpointAddress |
( |
| ) |
|
|
inline |
◆ EndpointAddress() [2/5]
◆ EndpointAddress() [3/5]
◆ EndpointAddress() [4/5]
◆ EndpointAddress() [5/5]
C4NetIO::EndpointAddress::EndpointAddress |
( |
const StdStrBuf & |
addr | ) |
|
|
inlineexplicit |
◆ AsIPv4()
◆ AsIPv6()
◆ Clear()
void C4NetIO::EndpointAddress::Clear |
( |
| ) |
|
◆ CompileFunc()
void C4NetIO::EndpointAddress::CompileFunc |
( |
StdCompiler * |
comp | ) |
|
◆ GetAddrLen()
size_t C4NetIO::HostAddress::GetAddrLen |
( |
| ) |
const |
|
inherited |
◆ GetFamily()
◆ GetHost()
HostAddress C4NetIO::EndpointAddress::GetHost |
( |
| ) |
const |
|
inline |
◆ GetPort()
uint16_t C4NetIO::EndpointAddress::GetPort |
( |
| ) |
const |
◆ GetScopeId()
int C4NetIO::HostAddress::GetScopeId |
( |
| ) |
const |
|
inherited |
◆ IsLocal()
bool C4NetIO::HostAddress::IsLocal |
( |
| ) |
const |
|
inherited |
Definition at line 260 of file C4NetIO.cpp.
262 if (gen.sa_family == AF_INET6)
263 return IN6_IS_ADDR_LINKLOCAL(&v6.sin6_addr) != 0;
◆ IsLoopback()
bool C4NetIO::HostAddress::IsLoopback |
( |
| ) |
const |
|
inherited |
Definition at line 251 of file C4NetIO.cpp.
253 if (gen.sa_family == AF_INET6)
254 return IN6_IS_ADDR_LOOPBACK(&v6.sin6_addr) != 0;
255 if (gen.sa_family == AF_INET)
256 return (ntohl(v4.sin_addr.s_addr) >> 24) == 127;
Referenced by C4NetIO::GetLocalAddresses().
◆ IsMulticast()
bool C4NetIO::HostAddress::IsMulticast |
( |
| ) |
const |
|
inherited |
◆ IsNull()
bool C4NetIO::EndpointAddress::IsNull |
( |
| ) |
const |
◆ IsNullHost()
bool C4NetIO::EndpointAddress::IsNullHost |
( |
| ) |
const |
|
inline |
◆ IsPrivate()
bool C4NetIO::HostAddress::IsPrivate |
( |
| ) |
const |
|
inherited |
Definition at line 270 of file C4NetIO.cpp.
273 if (gen.sa_family == AF_INET6)
274 return (v6.sin6_addr.s6_addr[0] & 0xfe) == 0xfc;
275 if (gen.sa_family == AF_INET)
277 uint32_t addr = ntohl(v4.sin_addr.s_addr);
278 uint32_t
s = (addr >> 16) & 0xff;
281 case 10:
return true;
282 case 172:
return s >= 16 &&
s <= 31;
283 case 192:
return s == 168;
References s.
◆ operator sockaddr()
C4NetIO::EndpointAddress::operator sockaddr |
( |
| ) |
const |
|
inline |
◆ operator sockaddr_in()
C4NetIO::EndpointAddress::operator sockaddr_in |
( |
| ) |
const |
|
inline |
Definition at line 202 of file C4NetIO.h.
202 { assert(gen.sa_family == AF_INET);
return v4; }
◆ operator sockaddr_in6()
C4NetIO::EndpointAddress::operator sockaddr_in6 |
( |
| ) |
const |
|
inline |
Definition at line 203 of file C4NetIO.h.
203 { assert(gen.sa_family == AF_INET6);
return v6; }
◆ operator!=() [1/2]
bool C4NetIO::EndpointAddress::operator!= |
( |
const EndpointAddress & |
rhs | ) |
const |
|
inline |
Definition at line 198 of file C4NetIO.h.
198 {
return !(*
this == rhs); }
◆ operator!=() [2/2]
bool C4NetIO::HostAddress::operator!= |
( |
const HostAddress & |
rhs | ) |
const |
|
inlineinherited |
Definition at line 123 of file C4NetIO.h.
123 {
return !(*
this == rhs); }
◆ operator&() [1/2]
Definition at line 229 of file C4NetIO.cpp.
friend class EndpointAddressPtr
◆ operator&() [2/2]
◆ operator=()
◆ operator==() [1/2]
bool C4NetIO::EndpointAddress::operator== |
( |
const EndpointAddress & |
rhs | ) |
const |
Definition at line 572 of file C4NetIO.cpp.
574 if (!HostAddress::operator==(rhs))
return false;
575 if (gen.sa_family == AF_INET)
577 return v4.sin_port == rhs.v4.sin_port;
579 else if (gen.sa_family == AF_INET6)
581 return v6.sin6_port == rhs.v6.sin6_port &&
582 v6.sin6_scope_id == rhs.v6.sin6_scope_id;
584 assert(!
"Shouldn't reach this");
◆ operator==() [2/2]
bool C4NetIO::HostAddress::operator== |
( |
const HostAddress & |
rhs | ) |
const |
|
inherited |
Definition at line 558 of file C4NetIO.cpp.
561 if (gen.sa_family != rhs.gen.sa_family)
563 if (gen.sa_family == AF_INET)
564 return v4.sin_addr.s_addr == rhs.v4.sin_addr.s_addr;
565 if (gen.sa_family == AF_INET6)
566 return memcmp(&v6.sin6_addr, &rhs.v6.sin6_addr,
sizeof(v6.sin6_addr)) == 0 &&
567 v6.sin6_scope_id == rhs.v6.sin6_scope_id;
568 assert(!
"Shouldn't reach this");
References C4NetIO::HostAddress::AsIPv6().
◆ SetAddress() [1/5]
◆ SetAddress() [2/5]
◆ SetAddress() [3/5]
void C4NetIO::EndpointAddress::SetAddress |
( |
const sockaddr * |
addr | ) |
|
Definition at line 364 of file C4NetIO.cpp.
366 switch (addr->sa_family)
368 case AF_INET: memcpy(&v4, addr,
sizeof(v4));
break;
369 case AF_INET6: memcpy(&v6, addr,
sizeof(v6));
break;
371 assert(!
"Unexpected address family");
372 memcpy(&gen, addr,
sizeof(gen));
break;
Referenced by C4Network2Client::AddLocalAddrs(), C4Network2IRCClient::Connect(), EndpointAddress(), C4NetIOTCP::Socket::GetAddress(), C4Network2IODiscover::Init(), C4Network2IODiscoverClient::Init(), C4NetIOUDP::InitBroadcast(), C4Network2::InitPuncher(), C4NetIOUDP::BinAddr::operator C4NetIO::addr_t(), operator=(), C4AulDebug::SetAllowed(), and C4Network2Address::SetIP().
◆ SetAddress() [4/5]
Definition at line 419 of file C4NetIO.cpp.
423 if (addr.
isNull())
return;
425 const char *begin = addr.
getData();
426 const char *end = begin + addr.
getLength();
428 const char *ab = begin;
429 const char *ae = end;
431 const char *pb = end;
432 const char *pe = end;
440 const char *cbracket = std::find(ab, ae,
']');
445 if (cbracket != end && cbracket[0] ==
':')
456 else if (std::count(ab, ae,
':') > 1)
463 const char *colon = std::find(ab, ae,
':');
474 addrinfo hints = addrinfo();
475 hints.ai_family = family;
477 addrinfo *addresses =
nullptr;
478 if (getaddrinfo(std::string(ab, ae).c_str(), pb != end ? std::string(pb, pe).c_str() :
nullptr, &hints, &addresses) != 0)
482 freeaddrinfo(addresses);
const char * getData() const
References StdStrBuf::getData(), StdStrBuf::getLength(), and StdStrBuf::isNull().
◆ SetAddress() [5/5]
◆ SetDefaultPort()
void C4NetIO::EndpointAddress::SetDefaultPort |
( |
uint16_t |
port | ) |
|
◆ SetHost() [1/5]
void C4NetIO::HostAddress::SetHost |
( |
const HostAddress & |
host | ) |
|
|
inherited |
◆ SetHost() [2/5]
void C4NetIO::HostAddress::SetHost |
( |
const sockaddr * |
addr | ) |
|
|
inherited |
Definition at line 346 of file C4NetIO.cpp.
349 if (addr->sa_family == AF_INET6)
351 v6.sin6_family = ((
const sockaddr_in6*)addr)->sin6_family;
352 v6.sin6_flowinfo = ((
const sockaddr_in6*)addr)->sin6_flowinfo;
353 memcpy(&v6.sin6_addr, &((
const sockaddr_in6*)addr)->sin6_addr,
sizeof(v6.sin6_addr));
354 v6.sin6_scope_id = ((
const sockaddr_in6*)addr)->sin6_scope_id;
356 else if (addr->sa_family == AF_INET)
358 v4.sin_family = ((
const sockaddr_in*)addr)->sin_family;
359 v4.sin_addr.s_addr = ((
const sockaddr_in*)addr)->sin_addr.s_addr;
360 memset(&v4.sin_zero, 0,
sizeof(v4.sin_zero));
Referenced by C4HTTPClient::Execute(), C4NetIO::GetLocalAddresses(), and C4NetIO::HostAddress::HostAddress().
◆ SetHost() [3/5]
Definition at line 407 of file C4NetIO.cpp.
409 addrinfo hints = addrinfo();
410 hints.ai_family = family;
411 addrinfo *addresses =
nullptr;
412 if (getaddrinfo(addr.getData(),
nullptr, &hints, &addresses) != 0)
416 freeaddrinfo(addresses);
References StdStrBuf::getData().
◆ SetHost() [4/5]
Definition at line 376 of file C4NetIO.cpp.
381 v6.sin6_family = AF_INET6;
382 memset(&v6.sin6_addr, 0,
sizeof(v6.sin6_addr));
383 v6.sin6_flowinfo = 0;
384 v6.sin6_scope_id = 0;
387 v4.sin_family = AF_INET;
388 v4.sin_addr.s_addr = 0;
389 memset(&v4.sin_zero, 0,
sizeof(v4.sin_zero));
392 v6.sin6_family = AF_INET6;
393 memset(&v6.sin6_addr, 0,
sizeof(v6.sin6_addr)); v6.sin6_addr.s6_addr[15] = 1;
394 v6.sin6_flowinfo = 0;
395 v6.sin6_scope_id = 0;
References ControllerKeys::Any().
◆ SetHost() [5/5]
void C4NetIO::HostAddress::SetHost |
( |
uint32_t |
host | ) |
|
|
inherited |
Definition at line 400 of file C4NetIO.cpp.
402 v4.sin_family = AF_INET;
403 v4.sin_addr.s_addr = v4addr;
404 memset(&v4.sin_zero, 0,
sizeof(v4.sin_zero));
◆ SetPort()
void C4NetIO::EndpointAddress::SetPort |
( |
uint16_t |
port | ) |
|
Definition at line 531 of file C4NetIO.cpp.
533 switch (gen.sa_family)
535 case AF_INET: v4.sin_port = htons(port);
break;
536 case AF_INET6: v6.sin6_port = htons(port);
break;
537 default: assert(!
"Shouldn't reach this");
break;
Referenced by C4Network2Client::AddAddrFromPuncher(), C4Network2Client::AddLocalAddrs(), C4Network2Client::DoTCPSimultaneousOpen(), EndpointAddress(), C4NetIOSimpleUDP::Init(), C4Network2IODiscover::Init(), C4Network2IODiscoverClient::Init(), C4NetIOUDP::InitBroadcast(), C4NetIOTCP::Listen(), C4Network2IODiscoverClient::OnPacket(), C4NetIOUDP::BinAddr::operator C4NetIO::addr_t(), and C4Network2Address::SetPort().
◆ SetScopeId()
void C4NetIO::HostAddress::SetScopeId |
( |
int |
scopeId | ) |
|
|
inherited |
◆ ToString()
StdStrBuf C4NetIO::EndpointAddress::ToString |
( |
int |
flags = 0 | ) |
const |
Definition at line 604 of file C4NetIO.cpp.
613 default: assert(!
"Shouldn't reach this");
StdStrBuf FormatString(const char *szFmt,...)
StdStrBuf ToString(int flags=0) const
References FormatString(), and C4NetIO::HostAddress::ToString().
Referenced by C4Network2IO::ConnectWithSocket(), C4Network2Client::DoTCPSimultaneousOpen(), C4Network2::HandleConn(), C4Network2::HandleConnRe(), C4Network2IO::HandlePacket(), C4Network2IO::OnConn(), C4Network2::OnConnect(), C4Network2::OnConnectFail(), C4Network2IO::OnDisconn(), C4Network2::OnDisconnect(), C4Network2IO::OnPacket(), C4NetIOUDP::BinAddr::ToString(), C4Network2Address::toString(), and C4Network2ClientDlg::UpdateText().
◆ EndpointAddressPtr
◆ IPPORT_NONE
const uint16_t C4NetIO::EndpointAddress::IPPORT_NONE = 0 |
|
static |
The documentation for this struct was generated from the following files: