summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--RELEASE-NOTES.md11
-rw-r--r--make-mac.mk4
-rw-r--r--osdep/ManagedRoute.cpp29
3 files changed, 17 insertions, 27 deletions
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index b54b7ea5..a08eda48 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -1,6 +1,17 @@
ZeroTier Release Notes
======
+# Version 1.2.4
+
+Version 1.2.4 is a minor bug fix and performance improvement release.
+
+ * Managed routes are now only bifurcated for the default route. This is a change in behavior, though few people will probably notice. Bifurcating all managed routes was causing more trouble than it was worth for most users.
+ * Up to 2X crypto speedup on x86-64 (except Windows, which will take some porting) and 32-bit ARM platforms due to integration of fast assembly language implementations of Salsa20/12 from the [supercop](http://bench.cr.yp.to/supercop.html) code base. These were written by Daniel J. Bernstein and are in the public domain.
+ * Refactored code that manages credentials to greatly reduce memory use in most cases. This may also result in a small performance improvement.
+ * Reworked and simplified path selection and priority logic to fix path instability and dead path persistence edge cases. There have been some sporadic reports of persistent path instabilities and dead paths hanging around that take minutes to resolve. These have proven difficult to reproduce in house, but hopefully this will fix them. In any case it seems to speed up path establishment in our tests and it makes the code simpler and more readable.
+ * Eliminated some unused cruft from the code around path management and in the peer class.
+ * Fixed an issue causing build problems on some MIPS architecture systems.
+
# 2017-03-17 -- Version 1.2.2
Version 1.2.2 fixes a few bugs discovered after the 1.2.0 release. These are:
diff --git a/make-mac.mk b/make-mac.mk
index fe832ae1..6676f457 100644
--- a/make-mac.mk
+++ b/make-mac.mk
@@ -61,11 +61,11 @@ endif
CXXFLAGS=$(CFLAGS) -std=c++11 -stdlib=libc++
+all: one macui
+
ext/x64-salsa2012-asm/salsa2012.o:
$(CC) $(CFLAGS) -c ext/x64-salsa2012-asm/salsa2012.s -o ext/x64-salsa2012-asm/salsa2012.o
-all: one macui
-
one: $(OBJS) service/OneService.o one.o
$(CXX) $(CXXFLAGS) -o zerotier-one $(OBJS) service/OneService.o one.o $(LIBS)
$(STRIP) zerotier-one
diff --git a/osdep/ManagedRoute.cpp b/osdep/ManagedRoute.cpp
index 1fc6c78e..f24b6b34 100644
--- a/osdep/ManagedRoute.cpp
+++ b/osdep/ManagedRoute.cpp
@@ -57,8 +57,6 @@
#define ZT_LINUX_IP_COMMAND "/sbin/ip"
#define ZT_LINUX_IP_COMMAND_2 "/usr/sbin/ip"
-// NOTE: BSD is mostly tested on Apple/Mac but is likely to work on other BSD too
-
namespace ZeroTier {
namespace {
@@ -351,7 +349,7 @@ static bool _winRoute(bool del,const NET_LUID &interfaceLuid,const NET_IFINDEX &
#endif // __WINDOWS__ --------------------------------------------------------
#ifndef ZT_ROUTING_SUPPORT_FOUND
-#error "ManagedRoute.cpp has no support for managing routes on this platform! You'll need to check and see if one of the existing ones will work and make sure proper defines are set, or write one. Please do a Github pull request if you do this for a new OS."
+#error "ManagedRoute.cpp has no support for managing routes on this platform! You'll need to check and see if one of the existing ones will work and make sure proper defines are set, or write one. Please do a GitHub pull request if you do this for a new OS."
#endif
} // anonymous namespace
@@ -378,9 +376,10 @@ bool ManagedRoute::sync()
return false;
#endif
- // Generate two more specific routes than target with one extra bit
InetAddress leftt,rightt;
- _forkTarget(_target,leftt,rightt);
+ if (_target.netmaskBits() == 0) // bifurcate only the default route
+ _forkTarget(_target,leftt,rightt);
+ else leftt = _target;
#ifdef __BSD__ // ------------------------------------------------------------
@@ -447,26 +446,6 @@ bool ManagedRoute::sync()
_routeCmd("change",rightt,_via,(const char *)0,(_via) ? (const char *)0 : _device);
}
- // Create a device-bound default target if there is none in the system. This
- // is to allow e.g. IPv6 default route to work even if there is no native
- // IPv6 on your LAN.
- /*
- if (_target.isDefaultRoute()) {
- if (_systemVia) {
- if (_applied.count(_target)) {
- _applied.erase(_target);
- _routeCmd("delete",_target,_via,_device,(_via) ? (const char *)0 : _device);
- }
- } else {
- if (!_applied.count(_target)) {
- _applied[_target] = true; // ifscoped
- _routeCmd("add",_target,_via,_device,(_via) ? (const char *)0 : _device);
- _routeCmd("change",_target,_via,_device,(_via) ? (const char *)0 : _device);
- }
- }
- }
- */
-
#endif // __BSD__ ------------------------------------------------------------
#ifdef __LINUX__ // ----------------------------------------------------------