Dash Core Source Documentation (0.16.0.1)

Find detailed information regarding the Dash Core source code.

IP address (IPv6, or IPv4 using mapped IPv6 range (::FFFF:0:0/96)) More...

#include <netaddress.h>

+ Inheritance diagram for CNetAddr:

Public Member Functions

 CNetAddr ()
 
 CNetAddr (const struct in_addr &ipv4Addr)
 
void SetIP (const CNetAddr &ip)
 
bool SetInternal (const std::string &name)
 Transform an arbitrary string into a non-routable ipv6 address. More...
 
bool SetSpecial (const std::string &strName)
 
bool IsIPv4 () const
 
bool IsIPv6 () const
 
bool IsRFC1918 () const
 
bool IsRFC2544 () const
 
bool IsRFC6598 () const
 
bool IsRFC5737 () const
 
bool IsRFC3849 () const
 
bool IsRFC3927 () const
 
bool IsRFC3964 () const
 
bool IsRFC4193 () const
 
bool IsRFC4380 () const
 
bool IsRFC4843 () const
 
bool IsRFC4862 () const
 
bool IsRFC6052 () const
 
bool IsRFC6145 () const
 
bool IsTor () const
 
bool IsLocal () const
 
bool IsRoutable () const
 
bool IsInternal () const
 
bool IsValid () const
 
enum Network GetNetwork () const
 
std::string ToString () const
 
std::string ToStringIP (bool fUseGetnameinfo=true) const
 
unsigned int GetByte (int n) const
 
uint64_t GetHash () const
 
bool GetInAddr (struct in_addr *pipv4Addr) const
 
std::vector< unsigned char > GetGroup () const
 
int GetReachabilityFrom (const CNetAddr *paddrPartner=nullptr) const
 Calculates a metric for how reachable (*this) is from a given partner. More...
 
 CNetAddr (const struct in6_addr &pipv6Addr, const uint32_t scope=0)
 
bool GetIn6Addr (struct in6_addr *pipv6Addr) const
 
template<typename Stream , typename Operation >
void SerializationOp (Stream &s, Operation ser_action)
 

Public Attributes

 ADD_SERIALIZE_METHODS
 

Protected Attributes

unsigned char ip [16]
 
uint32_t scopeId
 

Private Member Functions

void SetRaw (Network network, const uint8_t *data)
 Set raw IPv4 or IPv6 address (in network byte order) More...
 

Friends

class CSubNet
 
bool operator== (const CNetAddr &a, const CNetAddr &b)
 
bool operator!= (const CNetAddr &a, const CNetAddr &b)
 
bool operator< (const CNetAddr &a, const CNetAddr &b)
 

Detailed Description

IP address (IPv6, or IPv4 using mapped IPv6 range (::FFFF:0:0/96))

Definition at line 33 of file netaddress.h.

Constructor & Destructor Documentation

◆ CNetAddr() [1/3]

CNetAddr::CNetAddr ( )

Definition at line 20 of file netaddress.cpp.

References ip, and scopeId.

◆ CNetAddr() [2/3]

CNetAddr::CNetAddr ( const struct in_addr &  ipv4Addr)
explicit

Definition at line 73 of file netaddress.cpp.

References NET_IPV4, and SetRaw().

◆ CNetAddr() [3/3]

CNetAddr::CNetAddr ( const struct in6_addr &  pipv6Addr,
const uint32_t  scope = 0 
)
explicit

Definition at line 78 of file netaddress.cpp.

References NET_IPV6, scopeId, and SetRaw().

Member Function Documentation

◆ GetByte()

unsigned int CNetAddr::GetByte ( int  n) const

◆ GetGroup()

◆ GetHash()

uint64_t CNetAddr::GetHash ( ) const

◆ GetIn6Addr()

bool CNetAddr::GetIn6Addr ( struct in6_addr *  pipv6Addr) const

Definition at line 311 of file netaddress.cpp.

References ip, and memcpy().

Referenced by CService::GetSockAddr().

◆ GetInAddr()

bool CNetAddr::GetInAddr ( struct in_addr *  pipv4Addr) const

Definition at line 303 of file netaddress.cpp.

References ip, IsIPv4(), and memcpy().

Referenced by CService::GetSockAddr().

◆ GetNetwork()

◆ GetReachabilityFrom()

int CNetAddr::GetReachabilityFrom ( const CNetAddr paddrPartner = nullptr) const

Calculates a metric for how reachable (*this) is from a given partner.

Definition at line 414 of file netaddress.cpp.

References GetExtNetwork(), IsInternal(), IsRFC3964(), IsRFC6052(), IsRFC6145(), IsRoutable(), NET_IPV4, NET_IPV6, NET_TEREDO, NET_TOR, NET_UNKNOWN, and NET_UNROUTABLE.

◆ IsInternal()

bool CNetAddr::IsInternal ( ) const

◆ IsIPv4()

◆ IsIPv6()

bool CNetAddr::IsIPv6 ( ) const

Definition at line 94 of file netaddress.cpp.

References IsInternal(), IsIPv4(), and IsTor().

Referenced by CConnman::BindListenPort(), and CService::GetSockAddr().

◆ IsLocal()

bool CNetAddr::IsLocal ( ) const

Definition at line 177 of file netaddress.cpp.

References GetByte(), ip, and IsIPv4().

Referenced by GetGroup(), IsRoutable(), and SendRejectsAndCheckIfBanned().

◆ IsRFC1918()

bool CNetAddr::IsRFC1918 ( ) const

Definition at line 99 of file netaddress.cpp.

References GetByte(), and IsIPv4().

Referenced by IsRoutable().

◆ IsRFC2544()

bool CNetAddr::IsRFC2544 ( ) const

Definition at line 107 of file netaddress.cpp.

References GetByte(), and IsIPv4().

Referenced by IsRoutable().

◆ IsRFC3849()

bool CNetAddr::IsRFC3849 ( ) const

Definition at line 129 of file netaddress.cpp.

References GetByte().

Referenced by IsValid().

◆ IsRFC3927()

bool CNetAddr::IsRFC3927 ( ) const

Definition at line 112 of file netaddress.cpp.

References GetByte(), and IsIPv4().

Referenced by IsRoutable().

◆ IsRFC3964()

bool CNetAddr::IsRFC3964 ( ) const

Definition at line 134 of file netaddress.cpp.

References GetByte().

Referenced by GetGroup(), and GetReachabilityFrom().

◆ IsRFC4193()

bool CNetAddr::IsRFC4193 ( ) const

Definition at line 156 of file netaddress.cpp.

References GetByte().

Referenced by IsRoutable().

◆ IsRFC4380()

bool CNetAddr::IsRFC4380 ( ) const

Definition at line 145 of file netaddress.cpp.

References GetByte().

Referenced by GetExtNetwork(), and GetGroup().

◆ IsRFC4843()

bool CNetAddr::IsRFC4843 ( ) const

Definition at line 167 of file netaddress.cpp.

References GetByte().

Referenced by IsRoutable().

◆ IsRFC4862()

bool CNetAddr::IsRFC4862 ( ) const

Definition at line 150 of file netaddress.cpp.

References ip.

Referenced by IsRoutable().

◆ IsRFC5737()

bool CNetAddr::IsRFC5737 ( ) const

Definition at line 122 of file netaddress.cpp.

References GetByte(), and IsIPv4().

Referenced by IsRoutable().

◆ IsRFC6052()

bool CNetAddr::IsRFC6052 ( ) const

Definition at line 139 of file netaddress.cpp.

References ip.

Referenced by GetGroup(), and GetReachabilityFrom().

◆ IsRFC6145()

bool CNetAddr::IsRFC6145 ( ) const

Definition at line 161 of file netaddress.cpp.

References ip.

Referenced by GetGroup(), and GetReachabilityFrom().

◆ IsRFC6598()

bool CNetAddr::IsRFC6598 ( ) const

Definition at line 117 of file netaddress.cpp.

References GetByte(), and IsIPv4().

Referenced by IsRoutable().

◆ IsRoutable()

◆ IsTor()

bool CNetAddr::IsTor ( ) const

Definition at line 172 of file netaddress.cpp.

References ip, and pchOnionCat.

Referenced by GetGroup(), GetNetwork(), IsIPv6(), IsRoutable(), ToStringIP(), and CService::ToStringIPPort().

◆ IsValid()

◆ SerializationOp()

template<typename Stream , typename Operation >
void CNetAddr::SerializationOp ( Stream &  s,
Operation  ser_action 
)
inline

Definition at line 98 of file netaddress.h.

References FLATDATA, ip, and READWRITE.

◆ SetInternal()

bool CNetAddr::SetInternal ( const std::string &  name)

Transform an arbitrary string into a non-routable ipv6 address.

Useful for mapping resolved addresses back to their source.

Definition at line 47 of file netaddress.cpp.

References g_internal_prefix, ip, memcpy(), name, and CSHA256::Write().

Referenced by CConnman::ThreadDNSAddressSeed(), and CConnman::ThreadOpenConnections().

◆ SetIP()

void CNetAddr::SetIP ( const CNetAddr ip)

Definition at line 26 of file netaddress.cpp.

References ip, and memcpy().

Referenced by AdvertiseLocal(), and ProcessMessage().

◆ SetRaw()

void CNetAddr::SetRaw ( Network  network,
const uint8_t *  data 
)
private

Set raw IPv4 or IPv6 address (in network byte order)

Note
Only NET_IPV4 and NET_IPV6 are allowed for network.

Definition at line 31 of file netaddress.cpp.

References ip, memcpy(), NET_IPV4, NET_IPV6, and pchIPv4.

Referenced by CNetAddr().

◆ SetSpecial()

bool CNetAddr::SetSpecial ( const std::string &  strName)

Definition at line 59 of file netaddress.cpp.

References DecodeBase32(), ip, memcpy(), and pchOnionCat.

Referenced by LookupIntern().

◆ ToString()

std::string CNetAddr::ToString ( ) const

Definition at line 288 of file netaddress.cpp.

References ToStringIP().

Referenced by CAddrMan::Add(), Discover(), and CSubNet::ToString().

◆ ToStringIP()

Friends And Related Function Documentation

◆ CSubNet

friend class CSubNet
friend

Definition at line 102 of file netaddress.h.

◆ operator!=

bool operator!= ( const CNetAddr a,
const CNetAddr b 
)
friend

Definition at line 92 of file netaddress.h.

◆ operator<

bool operator< ( const CNetAddr a,
const CNetAddr b 
)
friend

Definition at line 298 of file netaddress.cpp.

◆ operator==

bool operator== ( const CNetAddr a,
const CNetAddr b 
)
friend

Definition at line 293 of file netaddress.cpp.

Member Data Documentation

◆ ADD_SERIALIZE_METHODS

CNetAddr::ADD_SERIALIZE_METHODS

Definition at line 95 of file netaddress.h.

◆ ip

◆ scopeId

uint32_t CNetAddr::scopeId
protected

Definition at line 37 of file netaddress.h.

Referenced by CNetAddr(), and CService::GetSockAddr().


The documentation for this class was generated from the following files:
Released under the MIT license