add compile time option to disable IPv6 support
This commit is contained in:
parent
c85846a240
commit
1a6d2f86b9
|
@ -84,6 +84,8 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#define TORRENT_BSD
|
#define TORRENT_BSD
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define TORRENT_USE_IPV6 1
|
||||||
|
|
||||||
// should wpath or path be used?
|
// should wpath or path be used?
|
||||||
#if defined UNICODE && !defined BOOST_FILESYSTEM_NARROW_ONLY \
|
#if defined UNICODE && !defined BOOST_FILESYSTEM_NARROW_ONLY \
|
||||||
&& BOOST_VERSION >= 103400 && !defined __APPLE__
|
&& BOOST_VERSION >= 103400 && !defined __APPLE__
|
||||||
|
|
|
@ -125,8 +125,14 @@ namespace libtorrent
|
||||||
size_type total_upload() const;
|
size_type total_upload() const;
|
||||||
|
|
||||||
tcp::endpoint ip() const { return tcp::endpoint(addr, port); }
|
tcp::endpoint ip() const { return tcp::endpoint(addr, port); }
|
||||||
|
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
void set_ip(tcp::endpoint const& endp)
|
void set_ip(tcp::endpoint const& endp)
|
||||||
{ addr = endp.address(); port = endp.port(); }
|
{ addr = endp.address(); port = endp.port(); }
|
||||||
|
#else
|
||||||
|
void set_ip(tcp::endpoint const& endp)
|
||||||
|
{ addr = endp.address().to_v4(); port = endp.port(); }
|
||||||
|
#endif
|
||||||
|
|
||||||
// this is the accumulated amount of
|
// this is the accumulated amount of
|
||||||
// uploaded and downloaded data to this
|
// uploaded and downloaded data to this
|
||||||
|
@ -141,7 +147,11 @@ namespace libtorrent
|
||||||
size_type prev_amount_download;
|
size_type prev_amount_download;
|
||||||
|
|
||||||
// the ip address this peer is or was connected on
|
// the ip address this peer is or was connected on
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
address addr;
|
address addr;
|
||||||
|
#else
|
||||||
|
address_v4 addr;
|
||||||
|
#endif
|
||||||
|
|
||||||
// the time when this peer was optimistically unchoked
|
// the time when this peer was optimistically unchoked
|
||||||
// the last time.
|
// the last time.
|
||||||
|
|
|
@ -91,6 +91,7 @@ namespace libtorrent { namespace
|
||||||
return address_v4(b);
|
return address_v4(b);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
address inaddr6_to_address(in6_addr const* ina6)
|
address inaddr6_to_address(in6_addr const* ina6)
|
||||||
{
|
{
|
||||||
typedef asio::ip::address_v6::bytes_type bytes_t;
|
typedef asio::ip::address_v6::bytes_type bytes_t;
|
||||||
|
@ -98,13 +99,16 @@ namespace libtorrent { namespace
|
||||||
std::memcpy(&b[0], ina6, b.size());
|
std::memcpy(&b[0], ina6, b.size());
|
||||||
return address_v6(b);
|
return address_v6(b);
|
||||||
}
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
address sockaddr_to_address(sockaddr const* sin)
|
address sockaddr_to_address(sockaddr const* sin)
|
||||||
{
|
{
|
||||||
if (sin->sa_family == AF_INET)
|
if (sin->sa_family == AF_INET)
|
||||||
return inaddr_to_address(&((sockaddr_in const*)sin)->sin_addr);
|
return inaddr_to_address(&((sockaddr_in const*)sin)->sin_addr);
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
else if (sin->sa_family == AF_INET6)
|
else if (sin->sa_family == AF_INET6)
|
||||||
return inaddr6_to_address(&((sockaddr_in6 const*)sin)->sin6_addr);
|
return inaddr6_to_address(&((sockaddr_in6 const*)sin)->sin6_addr);
|
||||||
|
#endif
|
||||||
return address();
|
return address();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,7 +196,11 @@ namespace libtorrent { namespace
|
||||||
if (sa == 0
|
if (sa == 0
|
||||||
|| rti_info[RTAX_DST] == 0
|
|| rti_info[RTAX_DST] == 0
|
||||||
|| rti_info[RTAX_NETMASK] == 0
|
|| rti_info[RTAX_NETMASK] == 0
|
||||||
|| (sa->sa_family != AF_INET && sa->sa_family != AF_INET6))
|
|| (sa->sa_family != AF_INET
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
|
&& sa->sa_family != AF_INET6
|
||||||
|
#endif
|
||||||
|
))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
rt_info->gateway = sockaddr_to_address(rti_info[RTAX_GATEWAY]);
|
rt_info->gateway = sockaddr_to_address(rti_info[RTAX_GATEWAY]);
|
||||||
|
@ -209,8 +217,11 @@ namespace libtorrent { namespace
|
||||||
{
|
{
|
||||||
return (sin->sin_len == sizeof(sockaddr_in)
|
return (sin->sin_len == sizeof(sockaddr_in)
|
||||||
&& sin->sin_family == AF_INET)
|
&& sin->sin_family == AF_INET)
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
|| (sin->sin_len == sizeof(sockaddr_in6)
|
|| (sin->sin_len == sizeof(sockaddr_in6)
|
||||||
&& sin->sin_family == AF_INET6);
|
&& sin->sin_family == AF_INET6)
|
||||||
|
#endif
|
||||||
|
;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -274,7 +285,10 @@ namespace libtorrent
|
||||||
ifreq const& item = *reinterpret_cast<ifreq*>(ifr);
|
ifreq const& item = *reinterpret_cast<ifreq*>(ifr);
|
||||||
|
|
||||||
if (item.ifr_addr.sa_family == AF_INET
|
if (item.ifr_addr.sa_family == AF_INET
|
||||||
|| item.ifr_addr.sa_family == AF_INET6)
|
#if TORRENT_USE_IPV6
|
||||||
|
|| item.ifr_addr.sa_family == AF_INET6
|
||||||
|
#endif
|
||||||
|
)
|
||||||
{
|
{
|
||||||
ip_interface iface;
|
ip_interface iface;
|
||||||
iface.interface_address = sockaddr_to_address(&item.ifr_addr);
|
iface.interface_address = sockaddr_to_address(&item.ifr_addr);
|
||||||
|
|
|
@ -1183,7 +1183,11 @@ namespace libtorrent
|
||||||
policy::peer::peer(const tcp::endpoint& ip_, peer::connection_type t, int src)
|
policy::peer::peer(const tcp::endpoint& ip_, peer::connection_type t, int src)
|
||||||
: prev_amount_upload(0)
|
: prev_amount_upload(0)
|
||||||
, prev_amount_download(0)
|
, prev_amount_download(0)
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
, addr(ip_.address())
|
, addr(ip_.address())
|
||||||
|
#else
|
||||||
|
, addr(ip_.address().to_v4())
|
||||||
|
#endif
|
||||||
, last_optimistically_unchoked(min_time())
|
, last_optimistically_unchoked(min_time())
|
||||||
, connected(min_time())
|
, connected(min_time())
|
||||||
, connection(0)
|
, connection(0)
|
||||||
|
|
|
@ -725,6 +725,7 @@ namespace aux {
|
||||||
async_accept(s.sock);
|
async_accept(s.sock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if TORRENT_USE_IPV6
|
||||||
#ifdef TORRENT_WINDOWS
|
#ifdef TORRENT_WINDOWS
|
||||||
// only try to open the IPv6 port if IPv6 is installed
|
// only try to open the IPv6 port if IPv6 is installed
|
||||||
SOCKADDR_STORAGE storage;
|
SOCKADDR_STORAGE storage;
|
||||||
|
@ -746,6 +747,7 @@ namespace aux {
|
||||||
#ifdef TORRENT_WINDOWS
|
#ifdef TORRENT_WINDOWS
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
#endif // TORRENT_USE_IPV6
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue