|
|
|
|
@ -97,10 +97,10 @@ LinuxEthernetTap::LinuxEthernetTap(
|
|
|
|
|
std::string devmapbuf; |
|
|
|
|
Dictionary devmap; |
|
|
|
|
if (OSUtils::readFile((_homePath + ZT_PATH_SEPARATOR_S + "devicemap").c_str(),devmapbuf)) { |
|
|
|
|
devmap.fromString(devmapbuf); |
|
|
|
|
std::string desiredDevice(devmap.get(nwids,"")); |
|
|
|
|
if (desiredDevice.length() > 2) { |
|
|
|
|
Utils::scopy(ifr.ifr_name,sizeof(ifr.ifr_name),desiredDevice.c_str()); |
|
|
|
|
devmap.load(devmapbuf.c_str()); |
|
|
|
|
char desiredDevice[128]; |
|
|
|
|
if (devmap.get(nwids,desiredDevice,sizeof(desiredDevice)) > 0) { |
|
|
|
|
Utils::scopy(ifr.ifr_name,sizeof(ifr.ifr_name),desiredDevice); |
|
|
|
|
Utils::snprintf(procpath,sizeof(procpath),"/proc/sys/net/ipv4/conf/%s",ifr.ifr_name); |
|
|
|
|
recalledDevice = (stat(procpath,&sbuf) != 0); |
|
|
|
|
} |
|
|
|
|
@ -174,8 +174,9 @@ LinuxEthernetTap::LinuxEthernetTap(
|
|
|
|
|
|
|
|
|
|
(void)::pipe(_shutdownSignalPipe); |
|
|
|
|
|
|
|
|
|
devmap[nwids] = _dev; |
|
|
|
|
OSUtils::writeFile((_homePath + ZT_PATH_SEPARATOR_S + "devicemap").c_str(),devmap.toString()); |
|
|
|
|
devmap.erase(nwids); |
|
|
|
|
devmap.add(nwids,_dev.c_str()); |
|
|
|
|
OSUtils::writeFile((_homePath + ZT_PATH_SEPARATOR_S + "devicemap").c_str(),(const void *)devmap.data(),devmap.sizeBytes()); |
|
|
|
|
|
|
|
|
|
_thread = Thread::start(this); |
|
|
|
|
} |
|
|
|
|
|