summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--controller/SqliteNetworkController.cpp12
-rw-r--r--make-linux.mk2
-rw-r--r--node/NetworkConfig.cpp8
-rw-r--r--osdep/LinuxEthernetTap.cpp13
-rw-r--r--osdep/ManagedRoute.hpp4
-rw-r--r--osdep/Phy.hpp2
6 files changed, 22 insertions, 19 deletions
diff --git a/controller/SqliteNetworkController.cpp b/controller/SqliteNetworkController.cpp
index eee9b7c7..62808de0 100644
--- a/controller/SqliteNetworkController.cpp
+++ b/controller/SqliteNetworkController.cpp
@@ -1769,13 +1769,15 @@ NetworkController::ResultCode SqliteNetworkController::_doNetworkConfigRequest(c
std::sort(allowedEtherTypes.begin(),allowedEtherTypes.end());
allowedEtherTypes.erase(std::unique(allowedEtherTypes.begin(),allowedEtherTypes.end()),allowedEtherTypes.end());
- for(long i=0,k=0;((i<(long)allowedEtherTypes.size())&&(k<ZT_MAX_NETWORK_RULES));++i) {
+ for(long i=0;i<(long)allowedEtherTypes.size();++i) {
+ if ((nc.ruleCount + 2) > ZT_MAX_NETWORK_RULES)
+ break;
if (allowedEtherTypes[i] > 0) {
- nc.rules[k].t = ZT_NETWORK_RULE_MATCH_ETHERTYPE;
- nc.rules[k].v.etherType = (uint16_t)allowedEtherTypes[i];
- ++k;
+ nc.rules[nc.ruleCount].t = ZT_NETWORK_RULE_MATCH_ETHERTYPE;
+ nc.rules[nc.ruleCount].v.etherType = (uint16_t)allowedEtherTypes[i];
+ ++nc.ruleCount;
}
- nc.rules[k++].t = ZT_NETWORK_RULE_ACTION_ACCEPT;
+ nc.rules[nc.ruleCount++].t = ZT_NETWORK_RULE_ACTION_ACCEPT;
}
/*
diff --git a/make-linux.mk b/make-linux.mk
index 7cacb4fa..52f7f625 100644
--- a/make-linux.mk
+++ b/make-linux.mk
@@ -107,7 +107,7 @@ else
CFLAGS?=-O3 -fstack-protector-strong
CFLAGS+=-Wall -fPIE -fvisibility=hidden -pthread $(INCLUDES) -DNDEBUG $(DEFS)
CXXFLAGS?=-O3 -fstack-protector-strong
- CXXFLAGS+=-Wall -Wreorder -fPIE -fvisibility=hidden -fno-rtti -pthread $(INCLUDES) -DNDEBUG $(DEFS)
+ CXXFLAGS+=-Wall -Wno-unused-result -Wreorder -fPIE -fvisibility=hidden -fno-rtti -pthread $(INCLUDES) -DNDEBUG $(DEFS)
LDFLAGS=-pie -Wl,-z,relro,-z,now
STRIP?=strip
STRIP+=--strip-all
diff --git a/node/NetworkConfig.cpp b/node/NetworkConfig.cpp
index a289eafa..fe4a5a0d 100644
--- a/node/NetworkConfig.cpp
+++ b/node/NetworkConfig.cpp
@@ -476,11 +476,9 @@ bool NetworkConfig::fromDictionary(const Dictionary &d)
}
}
- /*
- printf("~~~\n%s\n~~~\n",d.data());
- dump();
- printf("~~~\n");
- */
+ //printf("~~~\n%s\n~~~\n",d.data());
+ //dump();
+ //printf("~~~\n");
return true;
} catch ( ... ) {
diff --git a/osdep/LinuxEthernetTap.cpp b/osdep/LinuxEthernetTap.cpp
index 6a34f48d..c43c7bb7 100644
--- a/osdep/LinuxEthernetTap.cpp
+++ b/osdep/LinuxEthernetTap.cpp
@@ -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);
}
diff --git a/osdep/ManagedRoute.hpp b/osdep/ManagedRoute.hpp
index 86468a45..ca71b18b 100644
--- a/osdep/ManagedRoute.hpp
+++ b/osdep/ManagedRoute.hpp
@@ -32,6 +32,7 @@ public:
ManagedRoute(const ManagedRoute &r)
{
+ _applied = false;
*this = r;
}
@@ -40,7 +41,8 @@ public:
if ((!_applied)&&(!r._applied)) {
memcpy(this,&r,sizeof(ManagedRoute)); // InetAddress is memcpy'able
} else {
- throw std::runtime_error("Applied ManagedRoute is non-copyable!");
+ fprintf(stderr,"Applied ManagedRoute isn't copyable!\n");
+ abort();
}
return *this;
}
diff --git a/osdep/Phy.hpp b/osdep/Phy.hpp
index 1b08f30a..eab8a317 100644
--- a/osdep/Phy.hpp
+++ b/osdep/Phy.hpp
@@ -871,7 +871,7 @@ public:
#if defined(_WIN32) || defined(_WIN64)
::recv(_whackReceiveSocket,tmp,16,0);
#else
- (void)(::read(_whackReceiveSocket,tmp,16));
+ ::read(_whackReceiveSocket,tmp,16);
#endif
}