mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-07-22 22:21:09 -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
|
@ -136,14 +136,14 @@ bool p3BanList::recvBanItem(RsBanListItem *item)
|
|||
for(it = item->peerList.entries.begin(); it != item->peerList.entries.end(); it++)
|
||||
{
|
||||
// Order is important!.
|
||||
updated = (addBanEntry(item->PeerId(), it->addr, it->level,
|
||||
updated = (addBanEntry(item->PeerId(), it->addr.addr, it->level,
|
||||
it->reason, it->age) || updated);
|
||||
}
|
||||
return updated;
|
||||
}
|
||||
|
||||
/* overloaded from pqiNetAssistSharePeer */
|
||||
void p3BanList::updatePeer(std::string /*id*/, struct sockaddr_in addr, int /*type*/, int /*reason*/, int age)
|
||||
void p3BanList::updatePeer(std::string /*id*/, const struct sockaddr_storage &addr, int /*type*/, int /*reason*/, int age)
|
||||
{
|
||||
std::string ownId = mLinkMgr->getOwnId();
|
||||
|
||||
|
@ -160,7 +160,7 @@ void p3BanList::updatePeer(std::string /*id*/, struct sockaddr_in addr, int /*ty
|
|||
}
|
||||
|
||||
|
||||
bool p3BanList::addBanEntry(const std::string &peerId, const struct sockaddr_in &addr, int level, uint32_t reason, uint32_t age)
|
||||
bool p3BanList::addBanEntry(const std::string &peerId, const struct sockaddr_storage &addr, int level, uint32_t reason, uint32_t age)
|
||||
{
|
||||
RsStackMutex stack(mBanMtx); /****** LOCKED MUTEX *******/
|
||||
|
||||
|
@ -174,10 +174,10 @@ bool p3BanList::addBanEntry(const std::string &peerId, const struct sockaddr_in
|
|||
#endif
|
||||
|
||||
/* Only Accept it - if external address */
|
||||
if (!isExternalNet(&(addr.sin_addr)))
|
||||
if (!sockaddr_storage_isExternalNet(addr))
|
||||
{
|
||||
#ifdef DEBUG_BANLIST
|
||||
std::cerr << "p3BanList::addBanEntry() Ignoring Non External Addr: " << rs_inet_ntoa(addr.sin_addr);
|
||||
std::cerr << "p3BanList::addBanEntry() Ignoring Non External Addr: " << sockaddr_storage_iptostring(addr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
return false;
|
||||
|
@ -197,8 +197,14 @@ bool p3BanList::addBanEntry(const std::string &peerId, const struct sockaddr_in
|
|||
updated = true;
|
||||
}
|
||||
|
||||
std::map<uint32_t, BanListPeer>::iterator mit;
|
||||
mit = it->second.mBanPeers.find(addr.sin_addr.s_addr);
|
||||
// index is FAMILY + IP - the rest should be Zeros..
|
||||
struct sockaddr_storage bannedaddr;
|
||||
sockaddr_storage_clear(bannedaddr);
|
||||
sockaddr_storage_copyip(bannedaddr, addr);
|
||||
sockaddr_storage_setport(bannedaddr, 0);
|
||||
|
||||
std::map<struct sockaddr_storage, BanListPeer>::iterator mit;
|
||||
mit = it->second.mBanPeers.find(bannedaddr);
|
||||
if (mit == it->second.mBanPeers.end())
|
||||
{
|
||||
/* add in */
|
||||
|
@ -208,7 +214,8 @@ bool p3BanList::addBanEntry(const std::string &peerId, const struct sockaddr_in
|
|||
blp.level = level;
|
||||
blp.mTs = now - age;
|
||||
|
||||
it->second.mBanPeers[addr.sin_addr.s_addr] = blp;
|
||||
|
||||
it->second.mBanPeers[bannedaddr] = blp;
|
||||
it->second.mLastUpdate = now;
|
||||
updated = true;
|
||||
}
|
||||
|
@ -266,7 +273,7 @@ int p3BanList::condenseBanSources_locked()
|
|||
std::cerr << std::endl;
|
||||
#endif
|
||||
|
||||
std::map<uint32_t, BanListPeer>::const_iterator lit;
|
||||
std::map<struct sockaddr_storage, BanListPeer>::const_iterator lit;
|
||||
for(lit = it->second.mBanPeers.begin();
|
||||
lit != it->second.mBanPeers.end(); lit++)
|
||||
{
|
||||
|
@ -276,7 +283,7 @@ int p3BanList::condenseBanSources_locked()
|
|||
#ifdef DEBUG_BANLIST_CONDENSE
|
||||
std::cerr << "p3BanList::condenseBanSources_locked()";
|
||||
std::cerr << " Ignoring Out-Of-Date Entry for: ";
|
||||
std::cerr << rs_inet_ntoa(lit->second.addr.sin_addr);
|
||||
std::cerr << sockaddr_storage_iptostring(lit->second.addr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
continue;
|
||||
|
@ -289,19 +296,25 @@ int p3BanList::condenseBanSources_locked()
|
|||
lvl++;
|
||||
}
|
||||
|
||||
struct sockaddr_storage bannedaddr;
|
||||
sockaddr_storage_clear(bannedaddr);
|
||||
sockaddr_storage_copyip(bannedaddr, lit->second.addr);
|
||||
sockaddr_storage_setport(bannedaddr, 0);
|
||||
|
||||
|
||||
/* check if it exists in the Set already */
|
||||
std::map<uint32_t, BanListPeer>::iterator sit;
|
||||
sit = mBanSet.find(lit->second.addr.sin_addr.s_addr);
|
||||
std::map<struct sockaddr_storage, BanListPeer>::iterator sit;
|
||||
sit = mBanSet.find(bannedaddr);
|
||||
if ((sit == mBanSet.end()) || (lvl < sit->second.level))
|
||||
{
|
||||
BanListPeer bp = lit->second;
|
||||
bp.level = lvl;
|
||||
bp.addr.sin_port = 0;
|
||||
mBanSet[lit->second.addr.sin_addr.s_addr] = bp;
|
||||
sockaddr_storage_setport(bp.addr, 0);
|
||||
mBanSet[bannedaddr] = bp;
|
||||
#ifdef DEBUG_BANLIST_CONDENSE
|
||||
std::cerr << "p3BanList::condenseBanSources_locked()";
|
||||
std::cerr << " Added New Entry for: ";
|
||||
std::cerr << rs_inet_ntoa(lit->second.addr.sin_addr);
|
||||
std::cerr << sockaddr_storage_iptostring(bannedaddr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
}
|
||||
|
@ -310,7 +323,7 @@ int p3BanList::condenseBanSources_locked()
|
|||
#ifdef DEBUG_BANLIST_CONDENSE
|
||||
std::cerr << "p3BanList::condenseBanSources_locked()";
|
||||
std::cerr << " Merging Info for: ";
|
||||
std::cerr << rs_inet_ntoa(lit->second.addr.sin_addr);
|
||||
std::cerr << sockaddr_storage_iptostring(bannedaddr);
|
||||
std::cerr << std::endl;
|
||||
#endif
|
||||
/* update if necessary */
|
||||
|
@ -405,7 +418,7 @@ int p3BanList::sendBanSet(std::string peerid)
|
|||
|
||||
{
|
||||
RsStackMutex stack(mBanMtx); /****** LOCKED MUTEX *******/
|
||||
std::map<uint32_t, BanListPeer>::iterator it;
|
||||
std::map<struct sockaddr_storage, BanListPeer>::iterator it;
|
||||
for(it = mBanSet.begin(); it != mBanSet.end(); it++)
|
||||
{
|
||||
if (it->second.level >= RSBANLIST_SOURCE_FRIEND)
|
||||
|
@ -414,7 +427,7 @@ int p3BanList::sendBanSet(std::string peerid)
|
|||
}
|
||||
|
||||
RsTlvBanListEntry bi;
|
||||
bi.addr = it->second.addr;
|
||||
bi.addr.addr = it->second.addr;
|
||||
bi.reason = it->second.reason;
|
||||
bi.level = it->second.level;
|
||||
bi.age = now - it->second.mTs;
|
||||
|
@ -435,10 +448,10 @@ int p3BanList::printBanSet_locked(std::ostream &out)
|
|||
|
||||
time_t now = time(NULL);
|
||||
|
||||
std::map<uint32_t, BanListPeer>::iterator it;
|
||||
std::map<struct sockaddr_storage, BanListPeer>::iterator it;
|
||||
for(it = mBanSet.begin(); it != mBanSet.end(); it++)
|
||||
{
|
||||
out << "Ban: " << rs_inet_ntoa(it->second.addr.sin_addr);
|
||||
out << "Ban: " << sockaddr_storage_iptostring(it->second.addr);
|
||||
out << " Reason: " << it->second.reason;
|
||||
out << " Level: " << it->second.level;
|
||||
if (it->second.level > RSBANLIST_SOURCE_FRIEND)
|
||||
|
@ -465,12 +478,12 @@ int p3BanList::printBanSources_locked(std::ostream &out)
|
|||
out << " LastUpdate: " << now - it->second.mLastUpdate;
|
||||
out << std::endl;
|
||||
|
||||
std::map<uint32_t, BanListPeer>::const_iterator lit;
|
||||
std::map<struct sockaddr_storage, BanListPeer>::const_iterator lit;
|
||||
for(lit = it->second.mBanPeers.begin();
|
||||
lit != it->second.mBanPeers.end(); lit++)
|
||||
{
|
||||
out << "\t";
|
||||
out << "Ban: " << rs_inet_ntoa(lit->second.addr.sin_addr);
|
||||
out << "Ban: " << sockaddr_storage_iptostring(lit->second.addr);
|
||||
out << " Reason: " << lit->second.reason;
|
||||
out << " Level: " << lit->second.level;
|
||||
out << " Age: " << now - lit->second.mTs;
|
||||
|
|
|
@ -42,7 +42,7 @@ class BanListPeer
|
|||
{
|
||||
public:
|
||||
|
||||
struct sockaddr_in addr;
|
||||
struct sockaddr_storage addr;
|
||||
uint32_t reason; // Dup Self, Dup Friend
|
||||
int level; // LOCAL, FRIEND, FoF.
|
||||
time_t mTs;
|
||||
|
@ -54,7 +54,7 @@ class BanList
|
|||
|
||||
std::string mPeerId; /* from */
|
||||
time_t mLastUpdate;
|
||||
std::map<uint32_t, BanListPeer> mBanPeers;
|
||||
std::map<struct sockaddr_storage, BanListPeer> mBanPeers;
|
||||
};
|
||||
|
||||
|
||||
|
@ -74,7 +74,7 @@ class p3BanList: /* public RsBanList, */ public p3Service, public pqiNetAssistPe
|
|||
|
||||
/***** overloaded from pqiNetAssistPeerShare *****/
|
||||
|
||||
virtual void updatePeer(std::string id, struct sockaddr_in addr, int type, int reason, int age);
|
||||
virtual void updatePeer(std::string id, const struct sockaddr_storage &addr, int type, int reason, int age);
|
||||
|
||||
|
||||
/***** overloaded from p3Service *****/
|
||||
|
@ -93,7 +93,7 @@ class p3BanList: /* public RsBanList, */ public p3Service, public pqiNetAssistPe
|
|||
bool processIncoming();
|
||||
|
||||
bool recvBanItem(RsBanListItem *item);
|
||||
bool addBanEntry(const std::string &peerId, const struct sockaddr_in &addr,
|
||||
bool addBanEntry(const std::string &peerId, const struct sockaddr_storage &addr,
|
||||
int level, uint32_t reason, uint32_t age);
|
||||
void sendBanLists();
|
||||
int sendBanSet(std::string peerid);
|
||||
|
@ -123,7 +123,7 @@ class p3BanList: /* public RsBanList, */ public p3Service, public pqiNetAssistPe
|
|||
|
||||
time_t mSentListTime;
|
||||
std::map<std::string, BanList> mBanSources;
|
||||
std::map<uint32_t, BanListPeer> mBanSet;
|
||||
std::map<struct sockaddr_storage, BanListPeer> mBanSet;
|
||||
|
||||
p3LinkMgr *mLinkMgr;
|
||||
p3NetMgr *mNetMgr;
|
||||
|
|
|
@ -496,8 +496,8 @@ RsDiscReply *p3disc::createDiscReply(const std::string &to, const std::string &a
|
|||
rsPeerNetItem.netMode = detail.netMode;
|
||||
rsPeerNetItem.visState = detail.visState;
|
||||
rsPeerNetItem.lastContact = detail.lastcontact;
|
||||
rsPeerNetItem.currentlocaladdr = detail.localaddr;
|
||||
rsPeerNetItem.currentremoteaddr = detail.serveraddr;
|
||||
rsPeerNetItem.localAddr.addr = detail.localaddr;
|
||||
rsPeerNetItem.extAddr.addr = detail.serveraddr;
|
||||
rsPeerNetItem.dyndns = detail.dyndns;
|
||||
detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem.localAddrList);
|
||||
detail.ipAddrs.mExt.loadTlv(rsPeerNetItem.extAddrList);
|
||||
|
@ -526,8 +526,8 @@ RsDiscReply *p3disc::createDiscReply(const std::string &to, const std::string &a
|
|||
rsPeerNetItem.netMode = detail.netMode;
|
||||
rsPeerNetItem.visState = detail.visState;
|
||||
rsPeerNetItem.lastContact = time(NULL);
|
||||
rsPeerNetItem.currentlocaladdr = detail.localaddr;
|
||||
rsPeerNetItem.currentremoteaddr = detail.serveraddr;
|
||||
rsPeerNetItem.localAddr.addr = detail.localaddr;
|
||||
rsPeerNetItem.extAddr.addr = detail.serveraddr;
|
||||
rsPeerNetItem.dyndns = detail.dyndns;
|
||||
detail.ipAddrs.mLocal.loadTlv(rsPeerNetItem.localAddrList);
|
||||
detail.ipAddrs.mExt.loadTlv(rsPeerNetItem.extAddrList);
|
||||
|
@ -677,7 +677,7 @@ void p3disc::recvPeerDetails(RsDiscReply *item, const std::string &certGpgId)
|
|||
|
||||
bool new_info = false;
|
||||
addDiscoveryData(item->PeerId(), pit->pid,item_gpg_id,
|
||||
item->aboutId, pit->currentlocaladdr, pit->currentremoteaddr, 0, time(NULL),new_info);
|
||||
item->aboutId, pit->localAddr.addr, pit->extAddr.addr, 0, time(NULL),new_info);
|
||||
|
||||
if(new_info)
|
||||
should_notify_discovery = true ;
|
||||
|
@ -724,7 +724,7 @@ void p3disc::recvPeerDetails(RsDiscReply *item, const std::string &certGpgId)
|
|||
mNetMgr->netAssistFriend(pit->pid,false);
|
||||
|
||||
/* inform NetMgr that we know this peer */
|
||||
mNetMgr->netAssistKnownPeer(pit->pid, pit->currentremoteaddr,
|
||||
mNetMgr->netAssistKnownPeer(pit->pid, pit->extAddr.addr,
|
||||
NETASSIST_KNOWN_PEER_FOF | NETASSIST_KNOWN_PEER_OFFLINE);
|
||||
|
||||
continue;
|
||||
|
@ -752,10 +752,10 @@ void p3disc::recvPeerDetails(RsDiscReply *item, const std::string &certGpgId)
|
|||
if (mPeerMgr->setLocation(pit->pid, pit->location)) {
|
||||
peerDataChanged = true;
|
||||
}
|
||||
if (mPeerMgr->setLocalAddress(pit->pid, pit->currentlocaladdr)) {
|
||||
if (mPeerMgr->setLocalAddress(pit->pid, pit->localAddr.addr)) {
|
||||
peerDataChanged = true;
|
||||
}
|
||||
if (mPeerMgr->setExtAddress(pit->pid, pit->currentremoteaddr)) {
|
||||
if (mPeerMgr->setExtAddress(pit->pid, pit->extAddr.addr)) {
|
||||
peerDataChanged = true;
|
||||
}
|
||||
if (mPeerMgr->setVisState(pit->pid, pit->visState)) {
|
||||
|
@ -1024,7 +1024,7 @@ void p3disc::setGPGOperation(AuthGPGOperation *operation)
|
|||
/*************************************************************************************/
|
||||
/* Storing Network Graph */
|
||||
/*************************************************************************************/
|
||||
int p3disc::addDiscoveryData(const std::string& fromId, const std::string& aboutId,const std::string& from_gpg_id,const std::string& about_gpg_id, const struct sockaddr_in& laddr, const struct sockaddr_in& raddr, uint32_t flags, time_t ts,bool& new_info)
|
||||
int p3disc::addDiscoveryData(const std::string& fromId, const std::string& aboutId,const std::string& from_gpg_id,const std::string& about_gpg_id, const struct sockaddr_storage &laddr, const struct sockaddr_storage &raddr, uint32_t flags, time_t ts,bool& new_info)
|
||||
{
|
||||
RsStackMutex stack(mDiscMtx); /********** STACK LOCKED MTX ******/
|
||||
|
||||
|
|
|
@ -51,8 +51,8 @@ class autoserver
|
|||
:ts(0), discFlags(0) { return;}
|
||||
|
||||
std::string id;
|
||||
struct sockaddr_in localAddr;
|
||||
struct sockaddr_in remoteAddr;
|
||||
struct sockaddr_storage localAddr;
|
||||
struct sockaddr_storage remoteAddr;
|
||||
|
||||
time_t ts;
|
||||
uint32_t discFlags;
|
||||
|
@ -137,7 +137,7 @@ void removeFriend(std::string ssl_id); //keep tracks of removed friend so we're
|
|||
/* handle network shape */
|
||||
int addDiscoveryData(const std::string& fromId, const std::string& aboutId,
|
||||
const std::string& fromGPGId,const std::string& aboutGPGId,
|
||||
const struct sockaddr_in& laddr, const struct sockaddr_in& raddr,
|
||||
const struct sockaddr_storage &laddr, const struct sockaddr_storage &raddr,
|
||||
uint32_t flags, time_t ts,bool& new_info);
|
||||
|
||||
//int idServers();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue