diff --git a/configure.ac b/configure.ac index 34cc691e1..5528c4e21 100644 --- a/configure.ac +++ b/configure.ac @@ -62,13 +62,6 @@ AC_ARG_ENABLE([upnp-default], [use_upnp_default=$enableval], [use_upnp_default=no]) -dnl enable ipv6 support -AC_ARG_ENABLE([ipv6], - [AS_HELP_STRING([--enable-ipv6], - [enable ipv6 (default is yes)])], - [use_ipv6=$enableval], - [use_ipv6=yes]) - AC_ARG_ENABLE(tests, AS_HELP_STRING([--enable-tests],[compile tests (default is yes)]), [use_tests=$enableval], @@ -560,27 +553,6 @@ AC_MSG_RESULT($build_bitcoin_cli) dnl sets $bitcoin_enable_qt, $bitcoin_enable_qt_test, $bitcoin_enable_qt_dbus BITCOIN_QT_CONFIGURE([$use_pkgconfig], [qt4]) - -if test x$use_ipv6 = xyes; then - dnl Check for ipv6 build requirements - AC_MSG_CHECKING(for operating system IPv6 support) - AC_TRY_LINK([ - #if defined(_WINDOWS) - #include - #else - #include - #include - #include - #endif - ],[ - #if !defined(_WINDOWS) - struct in6_addr ipv6Addr; - struct sockaddr_in6 addr; - #endif - int temp = socket(AF_INET6, SOCK_STREAM, 0);], - [AC_MSG_RESULT(yes); have_ipv6=yes; AC_DEFINE(HAVE_IPV6, 1, [Define this symbol if you have operating system IPv6 support])], - [AC_MSG_RESULT(no)]; have_ipv6=no) -fi AC_LANG_POP if test "x$use_ccache" != "xno"; then @@ -609,22 +581,6 @@ else AC_MSG_RESULT(no) fi -dnl enable ipv6 support -AC_MSG_CHECKING([whether to build with support for IPv6]) -if test x$have_ipv6 = xno; then - if test x$use_ipv6 = xyes; then - AC_MSG_ERROR([IPv6 requested, but cannot be built. use --disable-ipv6]) - fi - AC_MSG_RESULT(no) -else - if test x$use_ipv6 = xyes; then - AC_MSG_RESULT(yes) - AC_DEFINE([USE_IPV6],[1],[Define if IPv6 support should be compiled in]) - else - AC_MSG_RESULT(no) - fi -fi - dnl enable upnp support AC_MSG_CHECKING([whether to build with support for UPnP]) if test x$have_miniupnpc = xno; then @@ -730,7 +686,6 @@ AC_SUBST(COPYRIGHT_YEAR, _COPYRIGHT_YEAR) AC_SUBST(USE_UPNP) AC_SUBST(USE_QRCODE) -AC_SUBST(USE_IPV6) AC_SUBST(INCLUDES) AC_SUBST(BOOST_LIBS) AC_SUBST(TESTDEFS) diff --git a/doc/build-unix.md b/doc/build-unix.md index 253c09492..957c5c30d 100644 --- a/doc/build-unix.md +++ b/doc/build-unix.md @@ -32,10 +32,6 @@ turned off by default. See the configure options for upnp behavior desired: --disable-upnp-default (the default) UPnP support turned off by default at runtime --enable-upnp-default UPnP support turned on by default at runtime -IPv6 support may be disabled by setting: - - --disable-ipv6 Disable IPv6 support - Licenses of statically linked libraries: Berkeley DB New BSD license with additional requirement that linked software must be free open source diff --git a/src/init.cpp b/src/init.cpp index 24c365799..0daa11dbd 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -720,12 +720,6 @@ bool AppInit2(boost::thread_group& threadGroup) SetLimited(net); } } -#if defined(USE_IPV6) -#if ! USE_IPV6 - else - SetLimited(NET_IPV6); -#endif -#endif CService addrProxy; bool fProxy = false; @@ -737,10 +731,8 @@ bool AppInit2(boost::thread_group& threadGroup) if (!IsLimited(NET_IPV4)) SetProxy(NET_IPV4, addrProxy, nSocksVersion); if (nSocksVersion > 4) { -#ifdef USE_IPV6 if (!IsLimited(NET_IPV6)) SetProxy(NET_IPV6, addrProxy, nSocksVersion); -#endif SetNameProxy(addrProxy, nSocksVersion); } fProxy = true; @@ -782,9 +774,7 @@ bool AppInit2(boost::thread_group& threadGroup) else { struct in_addr inaddr_any; inaddr_any.s_addr = INADDR_ANY; -#ifdef USE_IPV6 fBound |= Bind(CService(in6addr_any, GetListenPort()), BF_NONE); -#endif fBound |= Bind(CService(inaddr_any, GetListenPort()), !fBound ? BF_REPORT_ERROR : BF_NONE); } if (!fBound) diff --git a/src/net.cpp b/src/net.cpp index f53fb2271..01815ff5c 100644 --- a/src/net.cpp +++ b/src/net.cpp @@ -915,11 +915,7 @@ void ThreadSocketHandler() BOOST_FOREACH(SOCKET hListenSocket, vhListenSocket) if (hListenSocket != INVALID_SOCKET && FD_ISSET(hListenSocket, &fdsetRecv)) { -#ifdef USE_IPV6 struct sockaddr_storage sockaddr; -#else - struct sockaddr sockaddr; -#endif socklen_t len = sizeof(sockaddr); SOCKET hSocket = accept(hListenSocket, (struct sockaddr*)&sockaddr, &len); CAddress addr; @@ -1580,11 +1576,7 @@ bool BindListenPort(const CService &addrBind, string& strError) int nOne = 1; // Create socket for listening for incoming connections -#ifdef USE_IPV6 struct sockaddr_storage sockaddr; -#else - struct sockaddr sockaddr; -#endif socklen_t len = sizeof(sockaddr); if (!addrBind.GetSockAddr((struct sockaddr*)&sockaddr, &len)) { @@ -1625,7 +1617,6 @@ bool BindListenPort(const CService &addrBind, string& strError) return false; } -#ifdef USE_IPV6 // some systems don't have IPV6_V6ONLY but are always v6only; others do have the option // and enable it by default or not. Try to enable it, if possible. if (addrBind.IsIPv6()) { @@ -1643,7 +1634,6 @@ bool BindListenPort(const CService &addrBind, string& strError) setsockopt(hListenSocket, IPPROTO_IPV6, nParameterId, (const char*)&nProtLevel, sizeof(int)); #endif } -#endif if (::bind(hListenSocket, (struct sockaddr*)&sockaddr, len) == SOCKET_ERROR) { @@ -1710,7 +1700,6 @@ void static Discover(boost::thread_group& threadGroup) if (AddLocal(addr, LOCAL_IF)) LogPrintf("IPv4 %s: %s\n", ifa->ifa_name, addr.ToString()); } -#ifdef USE_IPV6 else if (ifa->ifa_addr->sa_family == AF_INET6) { struct sockaddr_in6* s6 = (struct sockaddr_in6*)(ifa->ifa_addr); @@ -1718,7 +1707,6 @@ void static Discover(boost::thread_group& threadGroup) if (AddLocal(addr, LOCAL_IF)) LogPrintf("IPv6 %s: %s\n", ifa->ifa_name, addr.ToString()); } -#endif } freeifaddrs(myaddrs); } diff --git a/src/netbase.cpp b/src/netbase.cpp index 2b300e5dd..ec275f738 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -78,11 +78,7 @@ bool static LookupIntern(const char *pszName, std::vector& vIP, unsign aiHint.ai_socktype = SOCK_STREAM; aiHint.ai_protocol = IPPROTO_TCP; -#ifdef USE_IPV6 aiHint.ai_family = AF_UNSPEC; -#else - aiHint.ai_family = AF_INET; -#endif #ifdef WIN32 aiHint.ai_flags = fAllowLookup ? 0 : AI_NUMERICHOST; #else @@ -102,13 +98,11 @@ bool static LookupIntern(const char *pszName, std::vector& vIP, unsign vIP.push_back(CNetAddr(((struct sockaddr_in*)(aiTrav->ai_addr))->sin_addr)); } -#ifdef USE_IPV6 if (aiTrav->ai_family == AF_INET6) { assert(aiTrav->ai_addrlen >= sizeof(sockaddr_in6)); vIP.push_back(CNetAddr(((struct sockaddr_in6*)(aiTrav->ai_addr))->sin6_addr)); } -#endif aiTrav = aiTrav->ai_next; } @@ -321,11 +315,7 @@ bool static ConnectSocketDirectly(const CService &addrConnect, SOCKET& hSocketRe { hSocketRet = INVALID_SOCKET; -#ifdef USE_IPV6 struct sockaddr_storage sockaddr; -#else - struct sockaddr sockaddr; -#endif socklen_t len = sizeof(sockaddr); if (!addrConnect.GetSockAddr((struct sockaddr*)&sockaddr, &len)) { 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); } -#ifdef USE_IPV6 CNetAddr::CNetAddr(const struct in6_addr& ipv6Addr) { memcpy(ip, &ipv6Addr, 16); } -#endif CNetAddr::CNetAddr(const char *pszIp, bool fAllowLookup) { @@ -764,11 +752,7 @@ std::string CNetAddr::ToStringIP() const if (IsTor()) return EncodeBase32(&ip[6], 10) + ".onion"; CService serv(*this, 0); -#ifdef USE_IPV6 struct sockaddr_storage sockaddr; -#else - struct sockaddr sockaddr; -#endif socklen_t socklen = sizeof(sockaddr); if (serv.GetSockAddr((struct sockaddr*)&sockaddr, &socklen)) { char name[1025] = ""; @@ -813,13 +797,11 @@ bool CNetAddr::GetInAddr(struct in_addr* pipv4Addr) const return true; } -#ifdef USE_IPV6 bool CNetAddr::GetIn6Addr(struct in6_addr* pipv6Addr) const { memcpy(pipv6Addr, ip, 16); return true; } -#endif // get canonical identifier of an address' 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) { } -#endif CService::CService(const struct sockaddr_in& addr) : CNetAddr(addr.sin_addr), port(ntohs(addr.sin_port)) { 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)) { assert(addr.sin6_family == AF_INET6); } -#endif bool CService::SetSockAddr(const struct sockaddr *paddr) { @@ -1017,11 +995,9 @@ bool CService::SetSockAddr(const struct sockaddr *paddr) case AF_INET: *this = CService(*(const struct sockaddr_in*)paddr); return true; -#ifdef USE_IPV6 case AF_INET6: *this = CService(*(const struct sockaddr_in6*)paddr); return true; -#endif default: return false; } @@ -1093,7 +1069,6 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const paddrin->sin_port = htons(port); return true; } -#ifdef USE_IPV6 if (IsIPv6()) { if (*addrlen < (socklen_t)sizeof(struct sockaddr_in6)) return false; @@ -1106,7 +1081,6 @@ bool CService::GetSockAddr(struct sockaddr* paddr, socklen_t *addrlen) const paddrin6->sin6_port = htons(port); return true; } -#endif return false; } diff --git a/src/netbase.h b/src/netbase.h index af40aee94..95b179576 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -77,10 +77,8 @@ class CNetAddr int GetReachabilityFrom(const CNetAddr *paddrPartner = NULL) const; void print() const; -#ifdef USE_IPV6 CNetAddr(const struct in6_addr& pipv6Addr); bool GetIn6Addr(struct in6_addr* pipv6Addr) const; -#endif friend bool operator==(const CNetAddr& a, const CNetAddr& b); friend bool operator!=(const CNetAddr& a, const CNetAddr& b); @@ -121,10 +119,8 @@ class CService : public CNetAddr std::string ToStringIPPort() const; void print() const; -#ifdef USE_IPV6 CService(const struct in6_addr& ipv6Addr, unsigned short port); CService(const struct sockaddr_in6& addr); -#endif IMPLEMENT_SERIALIZE (