mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-19 21:17:52 +00:00
Merge branch 'dev' of https://github.com/zerotier/zerotierone into dev
This commit is contained in:
commit
8d21ae9813
@ -209,8 +209,30 @@ MacEthernetTap::MacEthernetTap(
|
|||||||
::_exit(-1);
|
::_exit(-1);
|
||||||
} else {
|
} else {
|
||||||
_agentPid = apid;
|
_agentPid = apid;
|
||||||
|
|
||||||
|
// Wait up to 10 seconds for the subprocess to actually create the device. This prevents
|
||||||
|
// things like routes from being created before the device exists.
|
||||||
|
for(int waitLoops=0;;++waitLoops) {
|
||||||
|
struct ifaddrs *ifa = (struct ifaddrs *)0;
|
||||||
|
if (!getifaddrs(&ifa)) {
|
||||||
|
struct ifaddrs *p = ifa;
|
||||||
|
while (p) {
|
||||||
|
if ((p->ifa_name)&&(!strcmp(devstr, p->ifa_name))) {
|
||||||
|
waitLoops = -1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
p = p->ifa_next;
|
||||||
|
}
|
||||||
|
freeifaddrs(ifa);
|
||||||
|
}
|
||||||
|
if (waitLoops == -1) {
|
||||||
|
break;
|
||||||
|
} else if (waitLoops >= 100) { // 10 seconds
|
||||||
|
throw std::runtime_error("feth device creation timed out");
|
||||||
|
}
|
||||||
|
Thread::sleep(100);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Thread::sleep(100); // this causes them to come up in a more user-friendly order on launch
|
|
||||||
|
|
||||||
_thread = Thread::start(this);
|
_thread = Thread::start(this);
|
||||||
}
|
}
|
||||||
|
@ -176,10 +176,10 @@ static void die()
|
|||||||
close(s_ndrvfd);
|
close(s_ndrvfd);
|
||||||
if (s_bpffd >= 0)
|
if (s_bpffd >= 0)
|
||||||
close(s_bpffd);
|
close(s_bpffd);
|
||||||
if (s_deviceName[0])
|
|
||||||
run("/sbin/ifconfig",s_deviceName,"destroy",(char *)0);
|
|
||||||
if (s_peerDeviceName[0])
|
if (s_peerDeviceName[0])
|
||||||
run("/sbin/ifconfig",s_peerDeviceName,"destroy",(char *)0);
|
run("/sbin/ifconfig",s_peerDeviceName,"destroy",(char *)0);
|
||||||
|
if (s_deviceName[0])
|
||||||
|
run("/sbin/ifconfig",s_deviceName,"destroy",(char *)0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void close_inherited_fds()
|
static inline void close_inherited_fds()
|
||||||
|
@ -405,9 +405,7 @@ ManagedRoute::ManagedRoute(const InetAddress &target,const InetAddress &via,cons
|
|||||||
}
|
}
|
||||||
|
|
||||||
ManagedRoute::~ManagedRoute()
|
ManagedRoute::~ManagedRoute()
|
||||||
{
|
{}
|
||||||
this->remove();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Linux NOTE: for default route override, some Linux distributions will
|
/* Linux NOTE: for default route override, some Linux distributions will
|
||||||
* require a change to the rp_filter parameter. A value of '1' will prevent
|
* require a change to the rp_filter parameter. A value of '1' will prevent
|
||||||
|
@ -542,10 +542,7 @@ public:
|
|||||||
~NetworkState()
|
~NetworkState()
|
||||||
{
|
{
|
||||||
this->managedRoutes.clear();
|
this->managedRoutes.clear();
|
||||||
#ifdef __APPLE__
|
|
||||||
Thread::sleep(10);
|
|
||||||
this->tap.reset();
|
this->tap.reset();
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<EthernetTap> tap;
|
std::shared_ptr<EthernetTap> tap;
|
||||||
|
Loading…
Reference in New Issue
Block a user