mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-19 22:40:36 -04:00
Massive commit - changing from sockaddr_in => sockaddr_storage.
In preparation for making RS support IPv6. NB: This breaks the build of retroshare-gui, as the sockaddr_storage_xxx fns are only defined as prototypes for now. All the aux libraries like udp / stun / tcponudp / dht have still to be converted. These changes will probably break various things and need to be tested thoroughly. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6735 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
fd071161bf
commit
6290d8fed9
66 changed files with 1182 additions and 1046 deletions
|
@ -349,7 +349,7 @@ bool p3BitDht::dropPeer(std::string pid)
|
|||
|
||||
/* extract current peer status */
|
||||
bool p3BitDht::getPeerStatus(std::string id,
|
||||
struct sockaddr_in &/*laddr*/, struct sockaddr_in &/*raddr*/,
|
||||
struct sockaddr_storage &/*laddr*/, struct sockaddr_storage &/*raddr*/,
|
||||
uint32_t &/*type*/, uint32_t &/*mode*/)
|
||||
{
|
||||
/* remove unused parameter warnings */
|
||||
|
@ -363,7 +363,7 @@ bool p3BitDht::getPeerStatus(std::string id,
|
|||
return false;
|
||||
}
|
||||
|
||||
bool p3BitDht::getExternalInterface(struct sockaddr_in &/*raddr*/,
|
||||
bool p3BitDht::getExternalInterface(struct sockaddr_storage &/*raddr*/,
|
||||
uint32_t &/*mode*/)
|
||||
{
|
||||
|
||||
|
|
|
@ -197,8 +197,8 @@ virtual bool getNetworkStats(uint32_t &netsize, uint32_t &localnetsize);
|
|||
virtual bool findPeer(std::string id);
|
||||
virtual bool dropPeer(std::string id);
|
||||
|
||||
virtual int addBadPeer(const struct sockaddr_in &addr, uint32_t reason, uint32_t flags, uint32_t age);
|
||||
virtual int addKnownPeer(const std::string &pid, const struct sockaddr_in &addr, uint32_t flags);
|
||||
virtual int addBadPeer(const struct sockaddr_storage &addr, uint32_t reason, uint32_t flags, uint32_t age);
|
||||
virtual int addKnownPeer(const std::string &pid, const struct sockaddr_storage &addr, uint32_t flags);
|
||||
//virtual int addFriend(const std::string pid);
|
||||
//virtual int addFriendOfFriend(const std::string pid);
|
||||
//virtual int addOther(const std::string pid);
|
||||
|
@ -208,10 +208,10 @@ virtual void ConnectionFeedback(std::string pid, int state);
|
|||
|
||||
/* extract current peer status */
|
||||
virtual bool getPeerStatus(std::string id,
|
||||
struct sockaddr_in &laddr, struct sockaddr_in &raddr,
|
||||
struct sockaddr_storage &laddr, struct sockaddr_storage &raddr,
|
||||
uint32_t &type, uint32_t &mode);
|
||||
|
||||
virtual bool getExternalInterface(struct sockaddr_in &raddr,
|
||||
virtual bool getExternalInterface(struct sockaddr_storage &raddr,
|
||||
uint32_t &mode);
|
||||
|
||||
|
||||
|
|
|
@ -72,7 +72,13 @@ int p3BitDht::InfoCallback(const bdId *id, uint32_t /*type*/, uint32_t /*flags*/
|
|||
|
||||
if (mPeerSharer)
|
||||
{
|
||||
mPeerSharer->updatePeer(rsid, addr, outtype, outreason, outage);
|
||||
struct sockaddr_storage tmpaddr;
|
||||
struct sockaddr_in *ap = (struct sockaddr_in *) &tmpaddr;
|
||||
ap->sin_family = AF_INET;
|
||||
ap->sin_addr = addr.sin_addr;
|
||||
ap->sin_port = addr.sin_port;
|
||||
|
||||
mPeerSharer->updatePeer(rsid, tmpaddr, outtype, outreason, outage);
|
||||
}
|
||||
|
||||
/* call to the Stunners to drop the address as well */
|
||||
|
@ -1768,14 +1774,25 @@ int p3BitDht::checkConnectionAllowed(const bdId *peerId, int mode)
|
|||
*/
|
||||
|
||||
|
||||
void p3BitDht::ConnectCalloutTCPAttempt(const std::string &peerId, struct sockaddr_in raddr)
|
||||
void p3BitDht::ConnectCalloutTCPAttempt(const std::string &peerId, struct sockaddr_in raddrv4)
|
||||
{
|
||||
struct sockaddr_in proxyaddr;
|
||||
struct sockaddr_in srcaddr;
|
||||
|
||||
sockaddr_clear(&proxyaddr);
|
||||
sockaddr_clear(&srcaddr);
|
||||
struct sockaddr_storage raddr;
|
||||
struct sockaddr_storage proxyaddr;
|
||||
struct sockaddr_storage srcaddr;
|
||||
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(srcaddr);
|
||||
|
||||
struct sockaddr_in *rap = (struct sockaddr_in *) &raddr;
|
||||
struct sockaddr_in *pap = (struct sockaddr_in *) &proxyaddr;
|
||||
struct sockaddr_in *sap = (struct sockaddr_in *) &srcaddr;
|
||||
|
||||
// only one to translate
|
||||
rap->sin_family = AF_INET;
|
||||
rap->sin_addr = raddrv4.sin_addr;
|
||||
rap->sin_port = raddrv4.sin_port;
|
||||
|
||||
uint32_t source = RS_CB_DHT;
|
||||
uint32_t connectFlags = RS_CB_FLAG_ORDER_UNSPEC | RS_CB_FLAG_MODE_TCP;
|
||||
uint32_t delay = 0;
|
||||
|
@ -1785,14 +1802,25 @@ void p3BitDht::ConnectCalloutTCPAttempt(const std::string &peerId, struct sockad
|
|||
}
|
||||
|
||||
|
||||
void p3BitDht::ConnectCalloutDirectOrProxy(const std::string &peerId, struct sockaddr_in raddr, uint32_t connectFlags, uint32_t delay)
|
||||
void p3BitDht::ConnectCalloutDirectOrProxy(const std::string &peerId, struct sockaddr_in raddrv4, uint32_t connectFlags, uint32_t delay)
|
||||
{
|
||||
struct sockaddr_in proxyaddr;
|
||||
struct sockaddr_in srcaddr;
|
||||
|
||||
sockaddr_clear(&proxyaddr);
|
||||
sockaddr_clear(&srcaddr);
|
||||
|
||||
struct sockaddr_storage raddr;
|
||||
struct sockaddr_storage proxyaddr;
|
||||
struct sockaddr_storage srcaddr;
|
||||
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(srcaddr);
|
||||
|
||||
struct sockaddr_in *rap = (struct sockaddr_in *) &raddr;
|
||||
struct sockaddr_in *pap = (struct sockaddr_in *) &proxyaddr;
|
||||
struct sockaddr_in *sap = (struct sockaddr_in *) &srcaddr;
|
||||
|
||||
// only one to translate
|
||||
rap->sin_family = AF_INET;
|
||||
rap->sin_addr = raddrv4.sin_addr;
|
||||
rap->sin_port = raddrv4.sin_port;
|
||||
|
||||
uint32_t source = RS_CB_DHT;
|
||||
uint32_t bandwidth = 0;
|
||||
|
||||
|
@ -1800,9 +1828,33 @@ void p3BitDht::ConnectCalloutDirectOrProxy(const std::string &peerId, struct soc
|
|||
}
|
||||
|
||||
void p3BitDht::ConnectCalloutRelay(const std::string &peerId,
|
||||
struct sockaddr_in srcaddr, struct sockaddr_in proxyaddr, struct sockaddr_in destaddr,
|
||||
struct sockaddr_in srcaddrv4, struct sockaddr_in proxyaddrv4, struct sockaddr_in destaddrv4,
|
||||
uint32_t connectFlags, uint32_t bandwidth)
|
||||
{
|
||||
struct sockaddr_storage destaddr;
|
||||
struct sockaddr_storage proxyaddr;
|
||||
struct sockaddr_storage srcaddr;
|
||||
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(proxyaddr);
|
||||
sockaddr_storage_clear(srcaddr);
|
||||
|
||||
struct sockaddr_in *dap = (struct sockaddr_in *) &destaddr;
|
||||
struct sockaddr_in *pap = (struct sockaddr_in *) &proxyaddr;
|
||||
struct sockaddr_in *sap = (struct sockaddr_in *) &srcaddr;
|
||||
|
||||
dap->sin_family = AF_INET;
|
||||
dap->sin_addr = destaddrv4.sin_addr;
|
||||
dap->sin_port = destaddrv4.sin_port;
|
||||
|
||||
pap->sin_family = AF_INET;
|
||||
pap->sin_addr = proxyaddrv4.sin_addr;
|
||||
pap->sin_port = proxyaddrv4.sin_port;
|
||||
|
||||
sap->sin_family = AF_INET;
|
||||
sap->sin_addr = srcaddrv4.sin_addr;
|
||||
sap->sin_port = srcaddrv4.sin_port;
|
||||
|
||||
uint32_t source = RS_CB_DHT;
|
||||
uint32_t delay = 0;
|
||||
|
||||
|
|
|
@ -184,26 +184,59 @@ bool p3BitDht::dropPeer(std::string pid)
|
|||
********************************* Basic Peer Details *************************************
|
||||
******************************************************************************************/
|
||||
|
||||
int p3BitDht::addBadPeer(const struct sockaddr_in &addr, uint32_t /*reason*/, uint32_t /*flags*/, uint32_t /*age*/)
|
||||
int p3BitDht::addBadPeer(const struct sockaddr_storage &addr, uint32_t /*reason*/, uint32_t /*flags*/, uint32_t /*age*/)
|
||||
{
|
||||
//mUdpBitDht->updateKnownPeer(&id, 0, bdflags);
|
||||
|
||||
struct sockaddr_in addrv4;
|
||||
if (addr.ss_family != AF_INET)
|
||||
{
|
||||
std::cerr << "p3BitDht::addBadPeer() cannot handle IPV6 Yet, aborting";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
}
|
||||
struct sockaddr_in *ap = (struct sockaddr_in *) &addr;
|
||||
|
||||
// convert.
|
||||
addrv4.sin_family = ap->sin_family;
|
||||
addrv4.sin_addr = ap->sin_addr;
|
||||
addrv4.sin_port = ap->sin_port;
|
||||
|
||||
|
||||
if (mDhtStunner)
|
||||
{
|
||||
mDhtStunner->dropStunPeer(addr);
|
||||
mDhtStunner->dropStunPeer(addrv4);
|
||||
}
|
||||
if (mProxyStunner)
|
||||
{
|
||||
mProxyStunner->dropStunPeer(addr);
|
||||
mProxyStunner->dropStunPeer(addrv4);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
int p3BitDht::addKnownPeer(const std::string &pid, const struct sockaddr_in &addr, uint32_t flags)
|
||||
int p3BitDht::addKnownPeer(const std::string &pid, const struct sockaddr_storage &addr, uint32_t flags)
|
||||
{
|
||||
|
||||
struct sockaddr_in addrv4;
|
||||
if (addr.ss_family != AF_INET)
|
||||
{
|
||||
std::cerr << "p3BitDht::addKnownPeer() cannot handle IPV6 Yet, aborting";
|
||||
std::cerr << std::endl;
|
||||
abort();
|
||||
}
|
||||
struct sockaddr_in *ap = (struct sockaddr_in *) &addr;
|
||||
|
||||
// convert.
|
||||
addrv4.sin_family = ap->sin_family;
|
||||
addrv4.sin_addr = ap->sin_addr;
|
||||
addrv4.sin_port = ap->sin_port;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
int p3type = 0;
|
||||
int bdflags = 0;
|
||||
bdId id;
|
||||
|
@ -262,13 +295,13 @@ int p3BitDht::addKnownPeer(const std::string &pid, const struct sockaddr_in &add
|
|||
|
||||
|
||||
id.id = dpd->mDhtId.id;
|
||||
id.addr = addr;
|
||||
id.addr = addrv4;
|
||||
}
|
||||
else
|
||||
{
|
||||
// shouldn't use own id without mutex - but it is static!
|
||||
id.id = mOwnDhtId;
|
||||
id.addr = addr;
|
||||
id.addr = addrv4;
|
||||
}
|
||||
|
||||
mUdpBitDht->updateKnownPeer(&id, 0, bdflags);
|
||||
|
|
|
@ -39,9 +39,21 @@ class stunAddrAssist: public pqiAddrAssist
|
|||
mStunner = stunner;
|
||||
}
|
||||
|
||||
virtual bool getExternalAddr(struct sockaddr_in &remote, uint8_t &stable)
|
||||
virtual bool getExternalAddr(struct sockaddr_storage &remote, uint8_t &stable)
|
||||
{
|
||||
return mStunner->externalAddr(remote, stable);
|
||||
// IPV4 ONLY.
|
||||
struct sockaddr_in remotev4;
|
||||
if (mStunner->externalAddr(remotev4, stable))
|
||||
{
|
||||
sockaddr_storage_clear(remote);
|
||||
struct sockaddr_in *addr = (struct sockaddr_in *) &remote;
|
||||
addr->sin_family = AF_INET;
|
||||
addr->sin_addr = remotev4.sin_addr;
|
||||
addr->sin_port = remotev4.sin_port;
|
||||
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
virtual int tick()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue