mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-08-06 05:14:21 -04:00
0006 Removed abort if IPv6 (Patch from G10H4ck)
git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-IPv6@8030 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
e52d6a07b7
commit
b77f7cc361
7 changed files with 75 additions and 61 deletions
|
@ -181,7 +181,7 @@ int UdpLayer::reset(struct sockaddr_in &local)
|
|||
|
||||
/* stop the old thread */
|
||||
{
|
||||
bdStackMutex stack(sockMtx); /********** LOCK MUTEX *********/
|
||||
bdStackMutex stack(sockMtx); (void)stack; /********** LOCK MUTEX *********/
|
||||
#ifdef DEBUG_UDP_LAYER
|
||||
std::cerr << "UdpLayer::reset() setting stopThread flag" << std::endl;
|
||||
#endif
|
||||
|
@ -322,7 +322,7 @@ int UdpLayer::sendPkt(const void *data, int size, const sockaddr_in &to, int ttl
|
|||
}
|
||||
|
||||
/* setup connections */
|
||||
int UdpLayer::openSocket()
|
||||
int UdpLayer::openSocket()
|
||||
{
|
||||
sockMtx.lock(); /********** LOCK MUTEX *********/
|
||||
|
||||
|
@ -391,13 +391,12 @@ int UdpLayer::openSocket()
|
|||
|
||||
// start up our thread.
|
||||
{
|
||||
bdStackMutex stack(sockMtx); /********** LOCK MUTEX *********/
|
||||
bdStackMutex stack(sockMtx); (void)stack; /********** LOCK MUTEX *********/
|
||||
stopThread = false;
|
||||
}
|
||||
start();
|
||||
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
int UdpLayer::setTTL(int t)
|
||||
|
|
|
@ -193,7 +193,7 @@ int p3BitDht::addBadPeer(const struct sockaddr_storage &addr, uint32_t /*reason*
|
|||
{
|
||||
std::cerr << "p3BitDht::addBadPeer() cannot handle IPV6 Yet, aborting";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
return 0; // TODO:IPV6
|
||||
}
|
||||
struct sockaddr_in *ap = (struct sockaddr_in *) &addr;
|
||||
|
||||
|
@ -226,14 +226,14 @@ int p3BitDht::addKnownPeer(const RsPeerId &pid, const struct sockaddr_storage &a
|
|||
std::cerr << std::endl;
|
||||
sockaddr_clear(&addrv4);
|
||||
|
||||
#if 0
|
||||
|
||||
if (flags & NETASSIST_KNOWN_PEER_ONLINE)
|
||||
{
|
||||
std::cerr << "p3BitDht::addKnownPeer() Non IPv4 Address & ONLINE. Abort()ing.";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
return 0; // TODO:IPV6
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
}
|
||||
else
|
||||
|
|
|
@ -701,8 +701,7 @@ bool getPreferredInterface(const struct sockaddr_storage & existAddr, struct soc
|
|||
if (eaddr->sin_family != AF_INET)
|
||||
{
|
||||
std::cerr << "getPreferredInterface() ERROR only valid for IPv4 for now";
|
||||
abort();
|
||||
return false;
|
||||
return false; // TODO:IPV6
|
||||
}
|
||||
existing_addr = eaddr->sin_addr;
|
||||
}
|
||||
|
@ -732,8 +731,7 @@ bool getLocalInterfaces(struct sockaddr_storage &existAddr, std::list<struct soc
|
|||
if (eaddr->sin_family != AF_INET)
|
||||
{
|
||||
std::cerr << "getLocalInterfaces() ERROR only valid for IPv4 for now";
|
||||
abort();
|
||||
return false;
|
||||
return false; // TODO:IPV6
|
||||
}
|
||||
existing_addr = eaddr->sin_addr;
|
||||
}
|
||||
|
|
|
@ -151,7 +151,7 @@ int pqissludp::attach()
|
|||
|
||||
|
||||
// The Address determination is done centrally
|
||||
int pqissludp::Initiate_Connection()
|
||||
int pqissludp::Initiate_Connection()
|
||||
{
|
||||
int err;
|
||||
|
||||
|
@ -256,13 +256,13 @@ int pqissludp::Initiate_Connection()
|
|||
struct sockaddr_in proxyaddr;
|
||||
struct sockaddr_in remoteaddr;
|
||||
|
||||
if ((mConnectSrcAddr.ss_family != AF_INET) ||
|
||||
(mConnectProxyAddr.ss_family != AF_INET) ||
|
||||
(remote_addr.ss_family != AF_INET))
|
||||
if ( !( sockaddr_storage_ipv6_to_ipv4(mConnectSrcAddr) &&
|
||||
sockaddr_storage_ipv6_to_ipv4(mConnectProxyAddr) &&
|
||||
sockaddr_storage_ipv6_to_ipv4(remote_addr)))
|
||||
{
|
||||
std::cerr << "Error One Address is not IPv4. aborting";
|
||||
std::cerr << "pqissludp::Initiate_Connection() Error One Address is not IPv4. aborting";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
return 0; // TODO:IPV6
|
||||
}
|
||||
|
||||
struct sockaddr_in *rap = (struct sockaddr_in *) &remote_addr;
|
||||
|
|
|
@ -54,30 +54,33 @@ virtual bool resetAddress(struct sockaddr_in &local) { return false; }
|
|||
|
||||
class rsUdpStack: public UdpStack, public pqiNetListener
|
||||
{
|
||||
public:
|
||||
rsUdpStack(struct sockaddr_in &local)
|
||||
:UdpStack(local) { return; }
|
||||
public:
|
||||
rsUdpStack(struct sockaddr_in &local) :UdpStack(local) {}
|
||||
|
||||
rsUdpStack(int testmode, struct sockaddr_in &local)
|
||||
:UdpStack(testmode, local) { return; }
|
||||
rsUdpStack(int testmode, struct sockaddr_in &local) :UdpStack(testmode, local) {}
|
||||
|
||||
/* from pqiNetListener */
|
||||
virtual bool resetListener(const struct sockaddr_storage &local)
|
||||
virtual bool resetListener(const struct sockaddr_storage &local)
|
||||
{
|
||||
std::cerr << "rsUdpStack::resetListener(" << sockaddr_storage_tostring(local) << ")";
|
||||
std::cerr << std::endl;
|
||||
|
||||
if (local.ss_family != AF_INET)
|
||||
if ( local.ss_family != AF_INET )
|
||||
{
|
||||
std::cerr << "rsUdpStack::resetListener() NOT IPv4 ERROR";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
std::cerr << "rsUdpStack::resetListener() got non AF_INET sockaddr_storage, attempt to convert" << std::endl;
|
||||
|
||||
// FORCING NON CONST CHANGE THIS AS SOON AS POSSIBLE // TODO:IPV6
|
||||
if(!sockaddr_storage_ipv6_to_ipv4((sockaddr_storage &)local))
|
||||
{
|
||||
std::cerr << "rsUdpStack::resetListener() NOT IPv4 ERROR";
|
||||
std::cerr << std::endl;
|
||||
return false; // TODO:IPV6
|
||||
}
|
||||
}
|
||||
|
||||
struct sockaddr_in *addr = (struct sockaddr_in *) &local;
|
||||
return resetAddress(*addr);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
class rsFixedUdpStack: public UdpStack, public pqiNetListener
|
||||
|
|
|
@ -73,7 +73,7 @@ void sockaddr_clear(struct sockaddr_in *addr)
|
|||
}
|
||||
|
||||
|
||||
bool isValidNet(const struct in_addr *addr)
|
||||
bool isValidNet(const struct in_addr *addr)
|
||||
{
|
||||
// invalid address.
|
||||
if((*addr).s_addr == INADDR_NONE)
|
||||
|
@ -85,13 +85,13 @@ bool isValidNet(const struct in_addr *addr)
|
|||
}
|
||||
|
||||
|
||||
bool isLoopbackNet(const struct in_addr *addr)
|
||||
bool isLoopbackNet(const struct in_addr *addr)
|
||||
{
|
||||
in_addr_t taddr = ntohl(addr->s_addr);
|
||||
return (taddr == (127 << 24 | 1));
|
||||
}
|
||||
|
||||
bool isPrivateNet(const struct in_addr *addr)
|
||||
bool isPrivateNet(const struct in_addr *addr)
|
||||
{
|
||||
in_addr_t taddr = ntohl(addr->s_addr);
|
||||
|
||||
|
|
|
@ -29,6 +29,8 @@
|
|||
#include "util/rsstring.h"
|
||||
#include "pqi/pqinetwork.h"
|
||||
|
||||
#include "util/stacktrace.h"
|
||||
|
||||
/***************************** Internal Helper Fns ******************************/
|
||||
|
||||
/******************************** Casting **************************************/
|
||||
|
@ -814,22 +816,20 @@ bool sockaddr_storage_ipv6_same(const struct sockaddr_storage &addr, const struc
|
|||
|
||||
bool sockaddr_storage_ipv6_sameip(const struct sockaddr_storage &addr, const struct sockaddr_storage &addr2)
|
||||
{
|
||||
std::cerr << "sockaddr_storage_ipv6_sameip()";
|
||||
std::cerr << std::endl;
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv6_sameip(addr,addr2)" << std::endl;
|
||||
#endif
|
||||
|
||||
const struct sockaddr_in6 *ptr1 = to_const_ipv6_ptr(addr);
|
||||
const struct sockaddr_in6 *ptr2 = to_const_ipv6_ptr(addr2);
|
||||
|
||||
uint32_t *ip6addr1 = (uint32_t *) ptr1->sin6_addr.s6_addr;
|
||||
uint32_t *ip6addr2 = (uint32_t *) ptr2->sin6_addr.s6_addr;
|
||||
uint32_t *ip6addr1 = (uint32_t *) ptr1->sin6_addr.s6_addr;
|
||||
uint32_t *ip6addr2 = (uint32_t *) ptr2->sin6_addr.s6_addr;
|
||||
|
||||
for(int i = 0; i < 4; i++)
|
||||
{
|
||||
for(int i = 0; i < 4; i++)
|
||||
if (ip6addr1[i] != ip6addr2[i])
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -910,7 +910,7 @@ void sockaddr_storage_dump(const sockaddr_storage & addr)
|
|||
output << addr.__ss_padding;
|
||||
}}
|
||||
|
||||
std::cout << output.str() << std::endl;
|
||||
std::cerr << output.str() << std::endl;
|
||||
}
|
||||
|
||||
|
||||
|
@ -925,14 +925,10 @@ bool sockaddr_storage_ipv4_isnull(const struct sockaddr_storage &addr)
|
|||
#endif
|
||||
|
||||
const struct sockaddr_in *ptr1 = to_const_ipv4_ptr(addr);
|
||||
if (ptr1->sin_family != AF_INET)
|
||||
{
|
||||
|
||||
if (ptr1->sin_addr.s_addr == 0)
|
||||
return true;
|
||||
}
|
||||
if ((ptr1->sin_addr.s_addr == 0) || (ptr1->sin_addr.s_addr == 1))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -945,9 +941,8 @@ bool sockaddr_storage_ipv4_isValidNet(const struct sockaddr_storage &addr)
|
|||
|
||||
const struct sockaddr_in *ptr1 = to_const_ipv4_ptr(addr);
|
||||
if (ptr1->sin_family != AF_INET)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
return isValidNet(&(ptr1->sin_addr));
|
||||
}
|
||||
|
||||
|
@ -987,8 +982,7 @@ bool sockaddr_storage_ipv4_isPrivateNet(const struct sockaddr_storage &addr)
|
|||
bool sockaddr_storage_ipv4_isExternalNet(const struct sockaddr_storage &addr)
|
||||
{
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv4_isExternalNet()";
|
||||
std::cerr << std::endl;
|
||||
std::cerr << "sockaddr_storage_ipv4_isExternalNet()" << std::endl;
|
||||
#endif
|
||||
|
||||
const struct sockaddr_in *ptr1 = to_const_ipv4_ptr(addr);
|
||||
|
@ -1000,38 +994,58 @@ bool sockaddr_storage_ipv4_isExternalNet(const struct sockaddr_storage &addr)
|
|||
}
|
||||
|
||||
|
||||
bool sockaddr_storage_ipv6_isnull(const struct sockaddr_storage & )
|
||||
bool sockaddr_storage_ipv6_isnull(const struct sockaddr_storage & addr)
|
||||
{
|
||||
std::cerr << "sockaddr_storage_ipv6_isnull() TODO" << std::endl;
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv6_isnull()" << std::endl;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
const sockaddr_in6 & addr6 = (const sockaddr_in6 &) addr;
|
||||
bool isNull = (addr6.sin6_addr.s6_addr32[3] == 0x0);
|
||||
for (int i=0; isNull && i<3; ++i)
|
||||
isNull &= (addr6.sin6_addr.s6_addr32[i] == 0x0);
|
||||
|
||||
return isNull;
|
||||
}
|
||||
|
||||
bool sockaddr_storage_ipv6_isValidNet(const struct sockaddr_storage & )
|
||||
{
|
||||
std::cerr << "sockaddr_storage_ipv6_isValidNet() TODO" << std::endl;
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv6_isValidNet()" << std::endl;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool sockaddr_storage_ipv6_isLoopbackNet(const struct sockaddr_storage & )
|
||||
bool sockaddr_storage_ipv6_isLoopbackNet(const struct sockaddr_storage & addr )
|
||||
{
|
||||
std::cerr << "sockaddr_storage_ipv6_isLoopbackNet() TODO";
|
||||
std::cerr << std::endl;
|
||||
sockaddr_in6 & addr6 = (sockaddr_in6 &) addr;
|
||||
bool isLp = (addr6.sin6_addr.s6_addr32[3] == 0x1);
|
||||
for (int i=0; isLp && i<3; ++i)
|
||||
isLp &= (addr6.sin6_addr.s6_addr32[i] == 0x0);
|
||||
|
||||
return false;
|
||||
#ifdef SS_DEBUG
|
||||
sockaddr_storage_dump(addr);
|
||||
std::cerr << "sockaddr_storage_ipv6_isLoopbackNet() " << isLp << std::endl;
|
||||
#endif
|
||||
|
||||
return isLp;
|
||||
}
|
||||
|
||||
bool sockaddr_storage_ipv6_isPrivateNet(const struct sockaddr_storage &)
|
||||
{
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv6_isPrivateNet() TODO" << std::endl;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
bool sockaddr_storage_ipv6_isExternalNet(const struct sockaddr_storage &)
|
||||
{
|
||||
#ifdef SS_DEBUG
|
||||
std::cerr << "sockaddr_storage_ipv6_isExternalNet() TODO" << std::endl;
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue