Added Native (Bonjour API) Nat Port Forwarding to OSX.

* new classe p3zcNatAssist
 * moved some common ZeroConf functions / definitions around.
 * moved virtual tick() to parent class: pqiNetAssist
 * added zcNetAssist section to makefiles. (active for OSX build)
 * setup switch between p3zcNatAssist & upnphandler in rsinit.cc

NOTE: Still to test network restart, etc, and correct exchange of external Ip Address.




git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@4800 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
drbob 2012-01-14 16:41:00 +00:00
parent 2805d4ca1e
commit 79998dd70c
9 changed files with 589 additions and 16 deletions

View file

@ -429,7 +429,7 @@ void p3NetMgrIMPL::tick()
void p3NetMgrIMPL::slowTick()
{
netTick();
netAssistConnectTick();
netAssistTick();
updateNetStateBox_temporal();
if (mDhtStunner)
@ -1489,13 +1489,19 @@ bool p3NetMgrIMPL::netAssistSetAddress( struct sockaddr_in &/*laddr*/,
return true;
}
void p3NetMgrIMPL::netAssistConnectTick()
void p3NetMgrIMPL::netAssistTick()
{
std::map<uint32_t, pqiNetAssistConnect *>::iterator it;
for(it = mDhts.begin(); it != mDhts.end(); it++)
{
(it->second)->tick();
}
std::map<uint32_t, pqiNetAssistFirewall *>::iterator fit;
for(fit = mFwAgents.begin(); fit != mFwAgents.end(); fit++)
{
(fit->second)->tick();
}
return;
}

View file

@ -258,7 +258,9 @@ bool netAssistConnectEnabled();
bool netAssistConnectActive();
bool netAssistConnectShutdown();
bool netAssistConnectStats(uint32_t &netsize, uint32_t &localnetsize);
void netAssistConnectTick();
void netAssistTick();
/* Assist Firewall */
bool netAssistExtAddress(struct sockaddr_in &extAddr);
bool netAssistFirewallPorts(uint16_t iport, uint16_t eport);

View file

@ -60,6 +60,8 @@ virtual void restart() = 0;
virtual bool getEnabled() = 0;
virtual bool getActive() = 0;
virtual int tick() { return 0; } /* for internal accounting */
};
class pqiNetAssistFirewall: public pqiNetAssist
@ -135,8 +137,6 @@ class pqiNetAssistConnect: public pqiNetAssist
* for the DHT, and must be non-blocking and return quickly
*/
virtual int tick() = 0; /* for internal accounting */
/* add / remove peers */
virtual bool findPeer(std::string id) = 0;