|
|
|
|
@ -73,6 +73,7 @@ Node::Node(
|
|
|
|
|
_startTimeAfterInactivity(0), |
|
|
|
|
_lastPingCheck(0), |
|
|
|
|
_lastHousekeepingRun(0), |
|
|
|
|
_lastBeacon(0), |
|
|
|
|
_coreDesperation(0) |
|
|
|
|
{ |
|
|
|
|
_newestVersionSeen[0] = ZEROTIER_ONE_VERSION_MAJOR; |
|
|
|
|
@ -252,6 +253,15 @@ ZT1_ResultCode Node::processBackgroundTasks(uint64_t now,uint64_t *nextBackgroun
|
|
|
|
|
} catch ( ... ) { |
|
|
|
|
return ZT1_RESULT_FATAL_ERROR_INTERNAL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ((now - _lastBeacon) >= ZT_BEACON_INTERVAL) { |
|
|
|
|
_lastBeacon = now; |
|
|
|
|
char beacon[13]; |
|
|
|
|
*(reinterpret_cast<uint32_t *>(beacon)) = RR->prng->next32(); |
|
|
|
|
*(reinterpret_cast<uint32_t *>(beacon + 4)) = RR->prng->next32(); |
|
|
|
|
RR->identity.address().copyTo(beacon + 8,5); |
|
|
|
|
putPacket(ZT_DEFAULTS.v4Broadcast,beacon,13,0); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
if ((now - _lastHousekeepingRun) >= ZT_HOUSEKEEPING_PERIOD) { |
|
|
|
|
|