mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-04-16 03:56:54 +02:00
Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev
This commit is contained in:
commit
bc2c4cf80a
3 changed files with 25 additions and 1 deletions
|
@ -223,6 +223,8 @@ void Peer::received(
|
|||
if (sinceLastPush >= ((hops == 0) ? ZT_DIRECT_PATH_PUSH_INTERVAL_HAVEPATH : ZT_DIRECT_PATH_PUSH_INTERVAL)) {
|
||||
_lastDirectPathPushSent = now;
|
||||
std::vector<InetAddress> pathsToPush(RR->node->directPaths());
|
||||
std::vector<InetAddress> ma = RR->sa->whoami();
|
||||
pathsToPush.insert(pathsToPush.end(), ma.begin(), ma.end());
|
||||
if (!pathsToPush.empty()) {
|
||||
std::vector<InetAddress>::const_iterator p(pathsToPush.begin());
|
||||
while (p != pathsToPush.end()) {
|
||||
|
@ -452,7 +454,7 @@ void Peer::sendHELLO(void *tPtr,const int64_t localSocket,const InetAddress &atA
|
|||
if (atAddress) {
|
||||
outp.armor(_key,false,nullptr); // false == don't encrypt full payload, but add MAC
|
||||
RR->node->expectReplyTo(outp.packetId());
|
||||
RR->node->putPacket(tPtr,localSocket,atAddress,outp.data(),outp.size());
|
||||
RR->node->putPacket(tPtr,-1,atAddress,outp.data(),outp.size());
|
||||
} else {
|
||||
RR->node->expectReplyTo(outp.packetId());
|
||||
RR->sw->send(tPtr,outp,false); // false == don't encrypt full payload, but add MAC
|
||||
|
|
|
@ -99,6 +99,21 @@ void SelfAwareness::iam(void *tPtr,const Address &reporter,const int64_t receive
|
|||
}
|
||||
}
|
||||
|
||||
std::vector<InetAddress> SelfAwareness::whoami()
|
||||
{
|
||||
std::vector<InetAddress> surfaceAddresses;
|
||||
Mutex::Lock _l(_phy_m);
|
||||
Hashtable< PhySurfaceKey,PhySurfaceEntry >::Iterator i(_phy);
|
||||
PhySurfaceKey *k = (PhySurfaceKey *)0;
|
||||
PhySurfaceEntry *e = (PhySurfaceEntry *)0;
|
||||
while (i.next(k,e)) {
|
||||
if (std::find(surfaceAddresses.begin(), surfaceAddresses.end(), e->mySurface) == surfaceAddresses.end()) {
|
||||
surfaceAddresses.push_back(e->mySurface);
|
||||
}
|
||||
}
|
||||
return surfaceAddresses;
|
||||
}
|
||||
|
||||
void SelfAwareness::clean(int64_t now)
|
||||
{
|
||||
Mutex::Lock _l(_phy_m);
|
||||
|
|
|
@ -44,6 +44,13 @@ public:
|
|||
*/
|
||||
void iam(void *tPtr,const Address &reporter,const int64_t receivedOnLocalSocket,const InetAddress &reporterPhysicalAddress,const InetAddress &myPhysicalAddress,bool trusted,int64_t now);
|
||||
|
||||
/**
|
||||
* Return all known external surface addresses reported by peers
|
||||
*
|
||||
* @return A vector of InetAddress(es)
|
||||
*/
|
||||
std::vector<InetAddress> whoami();
|
||||
|
||||
/**
|
||||
* Clean up database periodically
|
||||
*
|
||||
|
|
Loading…
Add table
Reference in a new issue