@ -78,11 +78,7 @@ bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsign
aiHint . ai_socktype = SOCK_STREAM ;
aiHint . ai_socktype = SOCK_STREAM ;
aiHint . ai_protocol = IPPROTO_TCP ;
aiHint . ai_protocol = IPPROTO_TCP ;
# ifdef USE_IPV6
aiHint . ai_family = AF_UNSPEC ;
aiHint . ai_family = AF_UNSPEC ;
# else
aiHint . ai_family = AF_INET ;
# endif
# ifdef WIN32
# ifdef WIN32
aiHint . ai_flags = fAllowLookup ? 0 : AI_NUMERICHOST ;
aiHint . ai_flags = fAllowLookup ? 0 : AI_NUMERICHOST ;
# else
# else
@ -102,13 +98,11 @@ bool static LookupIntern(const char *pszName, std::vector<CNetAddr>& vIP, unsign
vIP . push_back ( CNetAddr ( ( ( struct sockaddr_in * ) ( aiTrav - > ai_addr ) ) - > sin_addr ) ) ;
vIP . push_back ( CNetAddr ( ( ( struct sockaddr_in * ) ( aiTrav - > ai_addr ) ) - > sin_addr ) ) ;
}
}
# ifdef USE_IPV6
if ( aiTrav - > ai_family = = AF_INET6 )
if ( aiTrav - > ai_family = = AF_INET6 )
{
{
assert ( aiTrav - > ai_addrlen > = sizeof ( sockaddr_in6 ) ) ;
assert ( aiTrav - > ai_addrlen > = sizeof ( sockaddr_in6 ) ) ;
vIP . push_back ( CNetAddr ( ( ( struct sockaddr_in6 * ) ( aiTrav - > ai_addr ) ) - > sin6_addr ) ) ;
vIP . push_back ( CNetAddr ( ( ( struct sockaddr_in6 * ) ( aiTrav - > ai_addr ) ) - > sin6_addr ) ) ;
}
}
# endif
aiTrav = aiTrav - > ai_next ;
aiTrav = aiTrav - > ai_next ;
}
}
@ -321,11 +315,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe
{
{
hSocketRet = INVALID_SOCKET ;
hSocketRet = INVALID_SOCKET ;
# ifdef USE_IPV6
struct sockaddr_storage sockaddr ;
struct sockaddr_storage sockaddr ;
# else
struct sockaddr sockaddr ;
# endif
socklen_t len = sizeof ( sockaddr ) ;
socklen_t len = sizeof ( sockaddr ) ;
if ( ! addrConnect . GetSockAddr ( ( struct sockaddr * ) & sockaddr , & len ) ) {
if ( ! addrConnect . GetSockAddr ( ( struct sockaddr * ) & sockaddr , & len ) ) {
LogPrintf ( " Cannot connect to %s: unsupported network \n " , addrConnect . ToString ( ) ) ;
LogPrintf ( " Cannot connect to %s: unsupported network \n " , addrConnect . ToString ( ) ) ;
@ -585,12 +575,10 @@ CNetAddr::CNetAddr(const struct in_addr& ipv4Addr)
memcpy ( ip + 12 , & ipv4Addr , 4 ) ;
memcpy ( ip + 12 , & ipv4Addr , 4 ) ;
}
}
# ifdef USE_IPV6
CNetAddr : : CNetAddr ( const struct in6_addr & ipv6Addr )
CNetAddr : : CNetAddr ( const struct in6_addr & ipv6Addr )
{
{
memcpy ( ip , & ipv6Addr , 16 ) ;
memcpy ( ip , & ipv6Addr , 16 ) ;
}
}
# endif
CNetAddr : : CNetAddr ( const char * pszIp , bool fAllowLookup )
CNetAddr : : CNetAddr ( const char * pszIp , bool fAllowLookup )
{
{
@ -764,11 +752,7 @@ std::string CNetAddr::ToStringIP() const
if ( IsTor ( ) )
if ( IsTor ( ) )
return EncodeBase32 ( & ip [ 6 ] , 10 ) + " .onion " ;
return EncodeBase32 ( & ip [ 6 ] , 10 ) + " .onion " ;
CService serv ( * this , 0 ) ;
CService serv ( * this , 0 ) ;
# ifdef USE_IPV6
struct sockaddr_storage sockaddr ;
struct sockaddr_storage sockaddr ;
# else
struct sockaddr sockaddr ;
# endif
socklen_t socklen = sizeof ( sockaddr ) ;
socklen_t socklen = sizeof ( sockaddr ) ;
if ( serv . GetSockAddr ( ( struct sockaddr * ) & sockaddr , & socklen ) ) {
if ( serv . GetSockAddr ( ( struct sockaddr * ) & sockaddr , & socklen ) ) {
char name [ 1025 ] = " " ;
char name [ 1025 ] = " " ;
@ -813,13 +797,11 @@ bool CNetAddr::GetInAddr(struct in_addr* pipv4Addr) const
return true ;
return true ;
}
}
# ifdef USE_IPV6
bool CNetAddr : : GetIn6Addr ( struct in6_addr * pipv6Addr ) const
bool CNetAddr : : GetIn6Addr ( struct in6_addr * pipv6Addr ) const
{
{
memcpy ( pipv6Addr , ip , 16 ) ;
memcpy ( pipv6Addr , ip , 16 ) ;
return true ;
return true ;
}
}
# endif
// get canonical identifier of an address' group
// get canonical identifier of an address' group
// no two connections will be attempted to addresses with the same group
// no two connections will be attempted to addresses with the same group
@ -993,23 +975,19 @@ CService::CService(const struct in_addr& ipv4Addr, unsigned short portIn) : CNet
{
{
}
}
# ifdef USE_IPV6
CService : : CService ( const struct in6_addr & ipv6Addr , unsigned short portIn ) : CNetAddr ( ipv6Addr ) , port ( portIn )
CService : : CService ( const struct in6_addr & ipv6Addr , unsigned short portIn ) : CNetAddr ( ipv6Addr ) , port ( portIn )
{
{
}
}
# endif
CService : : CService ( const struct sockaddr_in & addr ) : CNetAddr ( addr . sin_addr ) , port ( ntohs ( addr . sin_port ) )
CService : : CService ( const struct sockaddr_in & addr ) : CNetAddr ( addr . sin_addr ) , port ( ntohs ( addr . sin_port ) )
{
{
assert ( addr . sin_family = = AF_INET ) ;
assert ( addr . sin_family = = AF_INET ) ;
}
}
# ifdef USE_IPV6
CService : : CService ( const struct sockaddr_in6 & addr ) : CNetAddr ( addr . sin6_addr ) , port ( ntohs ( addr . sin6_port ) )
CService : : CService ( const struct sockaddr_in6 & addr ) : CNetAddr ( addr . sin6_addr ) , port ( ntohs ( addr . sin6_port ) )
{
{
assert ( addr . sin6_family = = AF_INET6 ) ;
assert ( addr . sin6_family = = AF_INET6 ) ;
}
}
# endif
bool CService : : SetSockAddr ( const struct sockaddr * paddr )
bool CService : : SetSockAddr ( const struct sockaddr * paddr )
{
{
@ -1017,11 +995,9 @@ bool CService::SetSockAddr(const struct sockaddr *paddr)
case AF_INET :
case AF_INET :
* this = CService ( * ( const struct sockaddr_in * ) paddr ) ;
* this = CService ( * ( const struct sockaddr_in * ) paddr ) ;
return true ;
return true ;
# ifdef USE_IPV6
case AF_INET6 :
case AF_INET6 :
* this = CService ( * ( const struct sockaddr_in6 * ) paddr ) ;
* this = CService ( * ( const struct sockaddr_in6 * ) paddr ) ;
return true ;
return true ;
# endif
default :
default :
return false ;
return false ;
}
}
@ -1093,7 +1069,6 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const
paddrin - > sin_port = htons ( port ) ;
paddrin - > sin_port = htons ( port ) ;
return true ;
return true ;
}
}
# ifdef USE_IPV6
if ( IsIPv6 ( ) ) {
if ( IsIPv6 ( ) ) {
if ( * addrlen < ( socklen_t ) sizeof ( struct sockaddr_in6 ) )
if ( * addrlen < ( socklen_t ) sizeof ( struct sockaddr_in6 ) )
return false ;
return false ;
@ -1106,7 +1081,6 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const
paddrin6 - > sin6_port = htons ( port ) ;
paddrin6 - > sin6_port = htons ( port ) ;
return true ;
return true ;
}
}
# endif
return false ;
return false ;
}
}