Compare commits

...
2435 Commits
Author SHA1 Message Date
Adam Ierymenko ae491c277e VERSION 1.1.14: bug fixes!
This version fixes two bugs: a possible infinite loop when using network-specific relays,
and a bug causing a crash on Android.
2016-07-21 20:29:15 -07:00
Adam Ierymenko ebe7e15475 sys/sysctl.h is required on OSX and probably other BSD 2016-07-21 19:21:51 -07:00
Adam Ierymenko dced40361b Bump version in most places to 1.1.14 2016-07-21 19:15:03 -07:00
Adam Ierymenko faf864b8a2 Merge branch 'master' into dev 2016-07-21 19:07:50 -07:00
Adam Ierymenko 8a23d764de Merge branch 'master' of http://10.6.6.2/zerotier/ZeroTierOne 2016-07-21 19:06:31 -07:00
Adam Ierymenko f21af60a13 Init trusted path count to zero. Meh. 2016-07-21 19:06:18 -07:00
Adam Ierymenko 10564d8e14 Init trusted path count to zero. Meh. 2016-07-21 19:05:14 -07:00
Adam Ierymenko 095aef5f30 Merge pull request #348 from the-maldridge/remove-sysctl
Remove explicit sys/sysctl.h includes
2016-07-21 15:16:22 -07:00
Adam Ierymenko 145ac31c8a Merge pull request #362 from mwarning/space-between-literal-and-string-macro
C++11 requires a space between literal and string macro
2016-07-21 15:16:05 -07:00
Adam Ierymenko b7a5f783ba Merge pull request #364 from mwarning/fortify-source-needs-optimization-flag
fix _FORTIFY_SOURCE warning
2016-07-21 15:15:42 -07:00
Adam Ierymenko 3d25a2ea02 Merge pull request #363 from mwarning/move-declaration-out-of-scope
move sourceAddress out of scope
2016-07-21 15:15:27 -07:00
Moritz Warning 76b785c90f fix _FORTIFY_SOURCE warning
warning: #warning _FORTIFY_SOURCE requires compiling with optimization (-O) [-Wcpp]
2016-07-21 23:08:58 +02:00
Moritz Warning b3073f44a2 move sourceAddress out of scope
sourceAddress is used in the catch block
2016-07-21 23:03:04 +02:00
Moritz Warning bcdd158ad8 C++11 requires a space between literal and string macro 2016-07-21 22:41:02 +02:00
Adam Ierymenko 6320879fe1 Fix for GitHub issue #358 and bump version to 1.1.13 (dev) 2016-07-18 10:56:33 -07:00
Grant Limberg 2afe3d89d0 Merge branch 'master' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne 2016-07-14 19:29:10 -07:00
Grant Limberg 8a15b42dab switch to GCC for Android 2016-07-14 19:29:00 -07:00
Adam Ierymenko 4b9e84f42f docs 2016-07-14 17:47:32 -07:00
Adam Ierymenko ba87640e4c Release howto for internal use. 2016-07-14 17:46:22 -07:00
Adam Ierymenko a5400e0162 Windows installer now installs a batch file and Path variable settings to make zerotier-cli work in the Windows CLI (1.1.12 MSI updated on web for this too) and a Chocolatey packaging job for ZeroTier One. 2016-07-14 17:09:40 -07:00
Adam Ierymenko bdc3b0834b VERSION 1.1.12: yet another minor fix to managed routes
This version just contains another minor fix to managed routes for
GitHub issue #352.
2016-07-12 15:09:44 -07:00
Adam Ierymenko 1a285e5342 Version bump again. Slack has updated their client twice in one day so its okay. 2016-07-12 15:03:06 -07:00
Adam Ierymenko 8912515011 Fix to fix to GitHub issue #352 2016-07-12 15:00:30 -07:00
Adam Ierymenko 6ec3464ee9 JSON fix for trusted paths (does not affect normal op) 2016-07-12 13:58:15 -07:00
Adam Ierymenko 4b5e43ab0d VERSION 1.1.10: minor managed route fixes
Version 1.1.10 is a minor bug fix release. It fixes the following two issues:

 * Routes are no longer added 'via' IP addresses of the current node's ZT interface.
 * IPv6 default route is now fixed on Mac.
 * IP addresses are now deleted before new ones are added to allow changes to netmask
   on Mac and some other platforms.

This version also quietly introduces a feature called trusted paths. We'll be
documenting this in our community section soon. This is an experimental feature
for in-LAN SDN use.
2016-07-12 13:37:38 -07:00
Adam Ierymenko a6d9ae3a36 Man page fix on fedora-22 2016-07-12 13:30:15 -07:00
Adam Ierymenko 34e7c8652a Version bumps. 2016-07-12 12:30:35 -07:00
Adam Ierymenko 1861f67fa7 Version bump to 1.1.10 2016-07-12 12:21:36 -07:00
Adam Ierymenko b5e9d3f6f4 Rename file to be intuitive. 2016-07-12 11:41:19 -07:00
Adam Ierymenko 9785fde32a Trusted paths work! 2016-07-12 11:40:45 -07:00
Adam Ierymenko 9657675755 Plumbing through trusted path stuff to OneService. 2016-07-12 11:30:22 -07:00
Adam Ierymenko 5d7174b162 Go back to bundling libhttp-parser on Debian, at least for our own internally-created packages, since this library has a massively unstable ABI and causes nothing but problems if referenced from the distro. 2016-07-12 10:11:00 -07:00
Adam Ierymenko cdb5ceac7b Should remove old IPs before trying to add new ones. 2016-07-12 09:43:12 -07:00
Adam Ierymenko 23391ff9da More OSX IPv6 fixes. 2016-07-12 09:22:04 -07:00
Adam Ierymenko 3f2b21ce71 Do not shadow our own route twice on Mac if there is no default route. (Fix for issue found during IPv6 default route override testing.) 2016-07-12 08:55:57 -07:00
Adam Ierymenko 6535730255 GitHub issue #352 2016-07-12 08:42:36 -07:00
Adam Ierymenko 765082fdb6 Trusted path support, and version bump to 1.1.9 2016-07-12 08:29:50 -07:00
Adam Ierymenko aff62e9e10 Version bump in Mac pkg. 2016-07-08 14:28:34 -07:00
Adam Ierymenko 2d598dd433 Automatically add symlinks to redhat distro. 2016-07-08 14:25:25 -07:00
Adam Ierymenko f86e9b7df2 Bump version in RPM spec and DEB. 2016-07-08 13:57:16 -07:00
Adam Ierymenko 898d889537 VERSION 1.1.8: minor Linux bug fix, controller fixes, controller doc improvements
1.1.8 is a very minor update. It contains a small fix to IP address management
on Linux but other than that there are no changes to the regular ZeroTier One
code.

The 1.1.8 controller contains several fixes and improvements:

 * Network authorizedMemberCount works again
 * Managed IP addresses are pushed as long as they fall within a LAN-local managed
   route. The v4AssignMode and v6AssignMode settings only control automatic IP
   assignment from pools. In previous versions v4AssignMode had to be on for IPs
   to be pushed at all, making it impossible to just manually assign IPs.
 * IPv6 now has an auto-assign mode ('zt' to match V4) that can work alongside the
   special RFC4193 and 6PLANE modes (though it is not NDP emulated). If this is
   enabled IPv6 addresses will be auto-assigned from IPv6 ranges in the assignment
   pool list.
 * Controller documentation is MUCH better! See controller/README.md for actual
   useful information!

Finally 1.1.8 has several improvements to linux-build-farm including Debian wheezy
support.
2016-07-08 13:53:37 -07:00
Adam Ierymenko 0e2964261f docs 2016-07-08 13:42:04 -07:00
Adam Ierymenko ffe7d8d024 docs 2016-07-08 13:40:21 -07:00
Adam Ierymenko c01ebbcbde docs 2016-07-08 13:38:47 -07:00
Adam Ierymenko a6e5914aa7 docs 2016-07-08 13:37:51 -07:00
Adam Ierymenko 6d8de214eb Docs and controller API version 2016-07-08 13:10:02 -07:00
Adam Ierymenko 5bf3c54cd3 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-07-08 10:08:06 -07:00
Adam Ierymenko 959b64777f 1.1.8 bump 2016-07-08 10:08:01 -07:00
Grant Limberg be0af135bc update JNI code for 1.1.6 2016-07-07 20:07:07 -07:00
Adam Ierymenko 2d7c58540f v6AssignMode bug fix 2016-07-07 17:05:12 -07:00
Adam Ierymenko 951038a304 Ignore /bits in IP assignments and just copy it from the corresponding LAN-local route. Having each managed IP assignment have its own bits field was just a source of user error and poor UX and was completely worthless. 2016-07-07 16:28:43 -07:00
Adam Ierymenko 912ee199ed Tiny fixes to LinuxEthernetTap 2016-07-07 16:10:36 -07:00
Adam Ierymenko b9329dc49a Fix to IPv6 picking for small ranges. 2016-07-07 15:55:40 -07:00
Adam Ierymenko 6e08e1ae97 A few controller changes: (1) assign managed IPs that are assigned regardless of "assign mode" which now only controls auto-assignment or special addressing, (2) support proper issuing of managed IPv6 IPs, (3) support IPv6 auto-assign ranges 2016-07-07 15:42:10 -07:00
Adam Ierymenko dd1d2b4d00 GitHub issue #343 -- fix authorizedMemberCount 2016-07-07 14:49:54 -07:00
Adam Ierymenko f6d53cc568 . 2016-07-06 18:12:31 -07:00
Adam Ierymenko b6cc815447 . 2016-07-06 18:07:42 -07:00
Adam Ierymenko ddbbb8afec Wheezy stuff 2016-07-06 18:04:13 -07:00
Adam Ierymenko a8a497c621 Debian wheezy work. 2016-07-06 17:59:08 -07:00
Michael Aldridge 1a89694980 Remove explicit sys/sysctl.h includes
Explicitly including sys/sysctl.h breaks the ability to build
against muslc.
2016-07-06 02:38:23 -05:00
Adam Ierymenko 5c03416e84 Actually remove http-parser-devel 2016-07-05 14:28:58 -07:00
Adam Ierymenko b732c445b8 Xenial fix (clang broken) and bundle http-parser even in Fedora because it is so version sensitive. 2016-07-05 14:09:33 -07:00
Adam Ierymenko 97ec88e346 . 2016-07-05 12:30:58 -07:00
Adam Ierymenko 192bc4fcf0 More repo work. 2016-07-05 10:54:07 -07:00
Adam Ierymenko fc4ea57a9c debian-stretch 2016-06-30 18:03:06 -07:00
Adam Ierymenko 751497a748 aptly script 2016-06-30 16:44:22 -07:00
Adam Ierymenko c714e8baa6 Get rid of broken test code for controller so selftest build works with controller enabled. 2016-06-30 08:30:45 -07:00
Adam Ierymenko 2331a00555 Fedora-22 32-bit fix. 2016-06-29 18:53:31 -07:00
Adam Ierymenko 4218cd13d5 VERSION 1.1.6: route management, default route override, new IPv6 mode for Docker, and more!
(Retagged due to silly one-line bug and left over debug line... doh!)

Version 1.1.6 contains several significant improvements for use in complex network
environments along with some minor bug fixes and improvements to path stability and
dead path detection.

ROUTE MANAGEMENT AND FULL TUNNEL SUPPORT

1.1.6 is the first version of ZeroTier One to permit "full tunnel" (default route
override) operation on Linux, Mac, and Windows. This allows all Internet traffic
to be tunneled through ZeroTier while allowing ZeroTier peer-to-peer traffic to
continue to use the physical interface. 1.1.6 also brings route management support
and permissions settings for local networks to control whether networks are allowed
to modify the routing table or override default routing.

This is currently considered a beta/experimental feature and must be enabled via
the command line interface.

Route management and default route override requires support at the network controller.
When my.zerotier.com is updated and ready, we will post more information and testing
instructions at: https://www.zerotier.com/community

HIGHLY SCALABLE CONTAINER NETWORKING

1.1.6 also brings a new multicast-free (NDP emulated) IPv6 private addressing scheme
called "6plane." 6plane provides each host with a private IPv6 /80 and routes *all*
IPv6 traffic for this subnet to the host via transparent NDP emulation. This /80 can
then be assigned to Docker or other container/VM managers to assign a network-wide
IPv6 /128 to every container. Since NDP is emulated and multicast isn't needed, this
system can scale to millions of containers or more on a single backplane network with
a high degree of efficiency and reliability.

6plane also requires controller support. Look for it at my.zerotier.com once we have
upgraded our core infrastructure and web UIs.

(All hosts must be running 1.1.6 for 6plane to work properly. Other IPv6 addresses
or addressing modes are not affected and normal IPv6 NDP will continue to work
alongside 6plane in the same network.)

OTHER CHANGES

 * Upgraded bundled miniupnpc, libnatpmp, and http-parser.
 * New Debian and RPM packaging that is closer to compliance with distribution
   guidelines, and a new Dockerized Linux package build system in linux-build-farm/
   that can build every package on actual images of the correct distribution.
 * Improvements to dead path detection.
 * IPv6 now uses keepalive because a significant number of stateful IPv6 edge
   routers have very short timeouts (30 seconds or less!).
 * Significant performance improvements to network controllers under high load.
 * Enable -fstack-protector-strong for better stack canary (security) support
   in binaries. Note that this may require newer gcc/g++ or clang.

COMING SOON

The next version of ZeroTier One should have a new Mac UI. It's a system tray app
that looks and behaves a lot like the Mac WiFi pulldown menu. We'll also be adding
GUI support for default route and route management options and other new features.

Shortly after that we plan on adding full OpenFlow-like SDN rules engine support
to the ZeroTier core, making our planetary Ethernet switch a fully manageable smart
switch and enabling sophisticated security and flow rule management.
2016-06-29 18:16:58 -07:00
Adam Ierymenko 030dfde38e Unused printf removal while we are at it. 2016-06-29 18:14:49 -07:00
Adam Ierymenko 901e2fd692 Fix silly one-liner bug... retag time. 2016-06-29 18:12:35 -07:00
Adam Ierymenko c03ca3c278 VERSION 1.1.6: route management, default route override, new IPv6 mode for Docker, and more!
Version 1.1.6 contains several significant improvements for use in complex network
environments along with some minor bug fixes and improvements to path stability and
dead path detection.

ROUTE MANAGEMENT AND FULL TUNNEL SUPPORT

1.1.6 is the first version of ZeroTier One to permit "full tunnel" (default route
override) operation on Linux, Mac, and Windows. This allows all Internet traffic
to be tunneled through ZeroTier while allowing ZeroTier peer-to-peer traffic to
continue to use the physical interface. 1.1.6 also brings route management support
and permissions settings for local networks to control whether networks are allowed
to modify the routing table or override default routing.

This is currently considered a beta/experimental feature and must be enabled via
the command line interface.

Route management and default route override requires support at the network controller.
When my.zerotier.com is updated and ready, we will post more information and testing
instructions at: https://www.zerotier.com/community

HIGHLY SCALABLE CONTAINER NETWORKING

1.1.6 also brings a new multicast-free (NDP emulated) IPv6 private addressing scheme
called "6plane." 6plane provides each host with a private IPv6 /80 and routes *all*
IPv6 traffic for this subnet to the host via transparent NDP emulation. This /80 can
then be assigned to Docker or other container/VM managers to assign a network-wide
IPv6 /128 to every container. Since NDP is emulated and multicast isn't needed, this
system can scale to millions of containers or more on a single backplane network with
a high degree of efficiency and reliability.

6plane also requires controller support. Look for it at my.zerotier.com once we have
upgraded our core infrastructure and web UIs.

(All hosts must be running 1.1.6 for 6plane to work properly. Other IPv6 addresses
or addressing modes are not affected and normal IPv6 NDP will continue to work
alongside 6plane in the same network.)

OTHER CHANGES

 * Upgraded bundled miniupnpc, libnatpmp, and http-parser.
 * New Debian and RPM packaging that is closer to compliance with distribution
   guidelines, and a new Dockerized Linux package build system in linux-build-farm/
   that can build every package on actual images of the correct distribution.
 * Improvements to dead path detection.
 * IPv6 now uses keepalive because a significant number of stateful IPv6 edge
   routers have very short timeouts (30 seconds or less!).
 * Significant performance improvements to network controllers under high load.
 * Enable -fstack-protector-strong for better stack canary (security) support
   in binaries. Note that this may require newer gcc/g++ or clang.

COMING SOON

The next version of ZeroTier One should have a new Mac UI. It's a system tray app
that looks and behaves a lot like the Mac WiFi pulldown menu. We'll also be adding
GUI support for default route and route management options and other new features.

Shortly after that we plan on adding full OpenFlow-like SDN rules engine support
to the ZeroTier core, making our planetary Ethernet switch a fully manageable smart
switch and enabling sophisticated security and flow rule management.
2016-06-29 15:53:46 -07:00
Adam Ierymenko af2268ebd7 docs 2016-06-29 15:33:18 -07:00
Adam Ierymenko b9876d1809 docs 2016-06-29 15:30:49 -07:00
Adam Ierymenko e64909cdcd docs 2016-06-29 15:24:45 -07:00
Adam Ierymenko ce2ad69e5f Get rid of aptly script. 2016-06-29 14:44:29 -07:00
Adam Ierymenko 56fb08621e amazon-2016.03 docker image 2016-06-29 14:35:53 -07:00
Adam Ierymenko 4457c8218d Auto-detect miniupnpc 2.0 and use it on Linux if present. 2016-06-29 13:27:10 -07:00
Adam Ierymenko c862f199e3 Windows: ship it! 2016-06-29 13:22:04 -07:00
Adam Ierymenko 7918b26f65 Hack settings into old CLI. 2016-06-29 12:22:37 -07:00
Adam Ierymenko df00d3b046 Going to have to continue to use the old MAC web-container-based UI on Macs prior to 10.10 even when the new UI comes out, and the new UI is not ready yet anyway, so resurrect this. 2016-06-29 12:00:16 -07:00
Adam Ierymenko 19735e7050 Revert backgrounding of controller requests hack. Controller code is not really parallel anyway and we fixed the perf problem. 2016-06-29 11:43:22 -07:00
Adam Ierymenko bb63646682 Fix broken SQL in controller. 2016-06-29 11:37:28 -07:00
Adam Ierymenko b4fcf2ee60 Fix a valgrind warning. 2016-06-29 11:11:16 -07:00
Adam Ierymenko d9eacd1616 Controller fixes... 2016-06-29 17:02:03 +00:00
Adam Ierymenko 5309c7e082 Merge branch 'dev' of https://github.com/zerotier/ZeroTierOne into dev 2016-06-29 16:47:57 +00:00
Adam Ierymenko dbe57742e6 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-29 09:45:05 -07:00
Adam Ierymenko 928c625e2c docs 2016-06-29 09:45:02 -07:00
Adam Ierymenko 1e00603241 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-28 16:09:41 -07:00
Adam Ierymenko f6442f2752 fedora-22 2016-06-28 16:09:36 -07:00
Adam Ierymenko 7b7ab823b0 Fix getPeer(self) bug if I am the controller. 2016-06-28 22:49:01 +00:00
Adam Ierymenko 0410fd4824 Refactor recent member request history to fix performance problem in controller. 2016-06-28 12:44:47 -07:00
Adam Ierymenko 02fa32422a Dockerfile ordering 2016-06-27 20:07:35 -07:00
Adam Ierymenko 12037961ff small perf improvement in sqlite db. 2016-06-27 18:48:02 -07:00
Adam Ierymenko 8c572dead1 Query optimization. 2016-06-27 18:28:18 -07:00
Adam Ierymenko 3ddfebe742 dead code removal 2016-06-27 17:15:39 -07:00
Adam Ierymenko 972bbb7e06 Allow further concurrency on network controller. 2016-06-27 17:14:47 -07:00
Adam Ierymenko 45f315e603 Defer NETWORK_CONFIG_REQUEST packets and allow multithreaded processing. 2016-06-27 17:09:04 -07:00
Adam Ierymenko b9e86103cf Docker build farm seems to work! 2016-06-27 16:38:08 -07:00
Adam Ierymenko 0588589d57 . 2016-06-27 16:21:55 -07:00
Adam Ierymenko 4d30f60bbe . 2016-06-27 16:12:17 -07:00
Adam Ierymenko d58dcf29cc For now go back to bundling http-parser etc. in our official RPM builds since this introduces an EPEL dependency for CentOS which would only make sense if we are actually in EPEL. Probably will eventually have two spec files: one for official and one for our own. 2016-06-27 15:46:54 -07:00
Adam Ierymenko 809457599a CentOS7 fixes. 2016-06-27 15:21:24 -07:00
Adam Ierymenko 2d19fb7f8c More RPM fixes. 2016-06-27 15:08:51 -07:00
Adam Ierymenko 2c9401ed74 CentOS6 fix. 2016-06-27 14:56:40 -07:00
Adam Ierymenko af23596c34 Put everything in /usr/sbin on Linux. 2016-06-27 14:45:38 -07:00
Adam Ierymenko 233945e60f More Dockerfile fixes, and do not use "ln -r" since it is not supported on older Linux distributions. 2016-06-27 14:36:58 -07:00
Adam Ierymenko 147f735333 More build fixes. 2016-06-27 14:21:54 -07:00
Adam Ierymenko 8de5b2beda RPM build fixes -- use RPM cflags, spec fixes, etc. 2016-06-27 09:25:34 -07:00
Adam Ierymenko b02c3dfe8d Debian dependency for iproute2 2016-06-27 08:48:09 -07:00
Adam Ierymenko c5d3895313 ZeroTier One requires /sbin/ip (RPM-based distros) 2016-06-27 08:47:09 -07:00
Adam Ierymenko d20bcdae12 CentOS 6 Docker build. 2016-06-25 16:27:28 -07:00
Adam Ierymenko 81cd68b60d . 2016-06-25 14:07:02 -07:00
Adam Ierymenko 0582b3daba . 2016-06-25 14:06:40 -07:00
Adam Ierymenko af0a205594 Build and spec file updates for CentOS6 2016-06-25 14:04:08 -07:00
Adam Ierymenko 06e2e8119e Script to create Debian repos (requires aptly) 2016-06-24 16:23:10 -07:00
Adam Ierymenko 8b78f19335 More build targets. 2016-06-24 14:57:20 -07:00
Adam Ierymenko 9784393b15 More Linux Docker build farm targets. 2016-06-24 14:45:09 -07:00
Adam Ierymenko 65da797112 Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev 2016-06-24 14:19:01 -07:00
Adam Ierymenko 75fe981b9d Bump version. 2016-06-24 14:18:28 -07:00
Adam Ierymenko caaf33e4cf Bump version. 2016-06-24 10:20:35 -07:00
Adam Ierymenko d642db6f66 Changes for Debian packaging to prep for 1.1.6 interim. 2016-06-24 10:19:41 -07:00
Adam Ierymenko 3740b83f63 Don't back up sqlite db if it hasn't changed to prevent constant thrashing on inactive controllers. 2016-06-24 06:53:23 -07:00
Adam Ierymenko 90cdef8400 Forgot NDP emulation flag. 2016-06-24 06:43:23 -07:00
Adam Ierymenko ee649ae69a Add 6plane assignment support to network controller, and cleanup. 2016-06-24 06:40:50 -07:00
Adam Ierymenko 20d155e630 . 2016-06-24 05:21:25 -07:00
Adam Ierymenko be5996daca Cleanup of 6plane stuff. 2016-06-24 04:54:05 -07:00
Adam Ierymenko 38dfebad8c IPv6 NDP emulation flag in NetworkConfig, and implement Docker-friendly
(and other host friendly) IPv6 /80 magic subnetting to allow massive
multicast-free NDP emulated IPv6 networks where each host can have a
/48 worth of IPv6 IPs for internal containers, VMs, etc.

Alan Kay, thou art avenged.

https://ivanovivan.wordpress.com/2010/09/13/alan-kay-quotes/
2016-06-23 22:41:14 -07:00
Adam Ierymenko a5a05e454e cli work... 2016-06-23 17:00:33 -07:00
Adam Ierymenko 32d9850263 More new CLI work. 2016-06-23 12:37:15 -07:00
Adam Ierymenko a5ea8cc5cb . 2016-06-22 17:56:36 -07:00
Adam Ierymenko 0ad6b4105a Outline of new CLI with ability to control controllers/central as well as service. 2016-06-22 17:54:07 -07:00
Adam Ierymenko f765597526 Add network local.conf stuff to save network permission settings and wire it all through via the JSON API. Default route and route management stuff just about done. 2016-06-21 16:52:49 -07:00
Adam Ierymenko 8ca4f22f1d cleanup 2016-06-21 15:53:38 -07:00
Adam Ierymenko 674b84d908 Plumbing for network setting control, and GitHub issue #330 2016-06-21 14:58:30 -07:00
Adam Ierymenko e2ca239be0 Comment cleanup. 2016-06-21 14:38:15 -07:00
Adam Ierymenko 4f237687ce Route management now works on Windows, including default route override! 1.1.6 very close! 2016-06-21 13:54:03 -07:00
Adam Ierymenko 5b2d2efb45 Windows builds again. And there was much rejoicing. 2016-06-21 12:55:43 -07:00
Adam Ierymenko 82473c85e0 Default route override and route management in general now works in Linux. 2016-06-21 12:32:58 -07:00
Adam Ierymenko 51ced0cf41 GitHub issue #338 2016-06-21 09:41:55 -07:00
Adam Ierymenko 6c4a444f29 GitHub issue #339 2016-06-21 09:40:53 -07:00
Adam Ierymenko 330c80f3f5 Add rule type to match a COM field of the peer by ID and value because this will be powerful. 2016-06-21 08:09:20 -07:00
Adam Ierymenko eee59ec9ce Fix Buffer<> version of Dictionary.get(). 2016-06-21 08:00:40 -07:00
Adam Ierymenko 0959d33ba0 Add a few technically unnecessary but feel-good paranoia bounds checks in Dictionary.get(). 2016-06-21 07:59:42 -07:00
Adam Ierymenko ca82715bfa Another fuzzing code fix. 2016-06-21 07:52:32 -07:00
Adam Ierymenko 0c05b2cb50 Comment cleanup and fuzzing improvements. 2016-06-21 07:49:46 -07:00
Adam Ierymenko b2d048aa0e Make Dictionary templatable so it can be used where we want a higher capacity. 2016-06-21 07:32:58 -07:00
Adam Ierymenko 3ee15e65aa Tying up default route and route mgmt loose ends. It now periodically updates shadow routes so hopefully your link will stay up as you move around. 2016-06-17 13:14:48 -07:00
Adam Ierymenko 1bf1c38b30 Default route population works on Mac! 2016-06-16 18:23:33 -07:00
Adam Ierymenko eb4a78bcc3 Report routes in locally joined network JSON. 2016-06-16 17:40:32 -07:00
Adam Ierymenko 37afa876a7 Linux bug fixes, small controller fix. 2016-06-17 00:21:58 +00:00
Adam Ierymenko 601c51b351 Bug fix. 2016-06-16 23:18:20 +00:00
Adam Ierymenko 20d4dada40 Refactor controller for new merged format. 2016-06-16 16:05:57 -07:00
Adam Ierymenko 901b75e756 New format now integrated, and it works. 2016-06-16 15:48:58 -07:00
Adam Ierymenko bc3d7d11fe Remove netcon from dev branch. This is moving to its own new ZeroTierSDK repo for future release under the SDK name. 2016-06-16 14:50:08 -07:00
Adam Ierymenko 490d20e8fb Self test for dictionary, and fixes. 2016-06-16 14:45:36 -07:00
Adam Ierymenko 2113c21fdc devicemap now works again in OSXEthernetTap 2016-06-16 14:09:09 -07:00
Adam Ierymenko e09c1a1c11 Big refactor mostly builds. We now have a uniform backward compatible netconf. 2016-06-16 12:28:43 -07:00
Adam Ierymenko b104bb4762 New super-packed dictionary -- we are going back to a backward compatibile format with the old netconf but in an embedded-friendly way. This is simpler. 2016-06-15 18:47:35 -07:00
Adam Ierymenko f41ea24e97 Build fixes. 2016-06-16 00:11:46 +00:00
Adam Ierymenko 3c655a4b84 Default route ready to test on Mac. 2016-06-15 15:46:57 -07:00
Adam Ierymenko b90e66f7c7 ManagedRoute, which applies C++ RAII to injected routes. Move RoutingTable to attic. 2016-06-15 15:02:40 -07:00
Adam Ierymenko 4446dbde5e Big refactor in service code to prep for plumbing through route management. 2016-06-14 10:09:26 -07:00
Adam Ierymenko 769351b30f Fix to routes config in controller API. 2016-06-13 15:58:00 -07:00
Adam Ierymenko 734cbb2f1e Controller modifications for default route are ready to test. Will require slight changes in ZeroTier Central when it goes live. 2016-06-10 15:58:35 -07:00
Adam Ierymenko acbe8ad398 More controller work, and some RedHat fixes. 2016-06-10 08:26:27 -07:00
Adam Ierymenko 9898066b47 Remove some deprecated stuff in controller -- not done yet. 2016-06-09 11:02:42 -07:00
Adam Ierymenko 82635ce606 Add flags and metric to ZT-managed routes. 2016-06-09 09:43:09 -07:00
Adam Ierymenko 8c7433a525 . 2016-06-08 17:45:25 -07:00
Adam Ierymenko 56ef9e0643 Add rpm target. 2016-06-08 16:29:30 -07:00
Adam Ierymenko e6328dfe82 Add RPM spec conditionals to include json-parser or bundle it depending on whether we are fedora or rhel/centos/epel. 2016-06-08 16:19:38 -07:00
Adam Ierymenko 3a48e3781b bundle miniupnpc for now... might change later. 2016-06-08 15:37:37 -07:00
Adam Ierymenko f9056da6be rpmbuild -ba zerotier-one.spec basically works 2016-06-08 15:33:59 -07:00
Adam Ierymenko 536feb632c Support yet another old version of http-parser for CentOS/EPEL. 2016-06-08 15:09:09 -07:00
Adam Ierymenko cafa41ba4d RedHat stuff and cleanup. 2016-06-08 14:46:42 -07:00
Adam Ierymenko 196d96cfa7 Fix ronn convert problem in man page. 2016-06-08 14:08:56 -07:00
Adam Ierymenko 4e6f95e152 Build man pages with ruby-ronn on Debian. 2016-06-08 14:06:19 -07:00
Adam Ierymenko de9fa6a334 All three init systems now covered in debian. 2016-06-08 13:30:29 -07:00
Adam Ierymenko abd7071eaa systemd stuff for debian 2016-06-08 13:19:08 -07:00
Adam Ierymenko 7e68791bee Fix include for system json-parser. 2016-06-08 12:57:22 -07:00
Adam Ierymenko 6c6b18d003 Fix include for system lz4. 2016-06-08 12:50:56 -07:00
Adam Ierymenko 4da9d4e53a Fix build against Debian version of libhttp-parser -- its old but it will work. 2016-06-08 12:49:07 -07:00
Adam Ierymenko 0ca764968a Remove warnings, more Debian stuff, remove obsolete ui/ stuff. 2016-06-08 11:21:01 -07:00
Adam Ierymenko 62b64d39ab Minimal debian is working. 2016-06-08 10:30:54 -07:00
Adam Ierymenko ae87fbf8e3 make install installs man pages 2016-06-08 10:19:46 -07:00
Adam Ierymenko 2e890580fc Stop shipping pre-build man pages since it violates Debian arcane rule #134931e+26 and add manpages build target. 2016-06-08 10:13:31 -07:00
Adam Ierymenko afda5e684b Make install/uninstall for Linux 2016-06-07 17:11:09 -07:00
Adam Ierymenko 9161eebc68 Carry virtual network routes through to API. 2016-06-07 12:15:19 -07:00
Adam Ierymenko 683254a0db Don't bother signing if we are not using the legacy netconf. 2016-06-07 11:17:38 -07:00
Adam Ierymenko 2885aea65c Only send new format netconf for PV>=6 2016-06-07 11:13:18 -07:00
Adam Ierymenko 523ea68ae2 Increment protocol version to indicate support for binary network config and config request meta-data. 2016-06-07 11:08:36 -07:00
Adam Ierymenko ca88e1f1cf fix size 2016-06-07 10:47:22 -07:00
Adam Ierymenko be37d025b8 Make flags 64-bit in both network request and config. 2016-06-07 10:46:29 -07:00
Adam Ierymenko 4342b71d7a Upgrade miniupnpc to 2.0 2016-06-02 17:04:15 -07:00
Adam Ierymenko f20602a7b1 docs 2016-06-02 15:57:18 -07:00
Adam Ierymenko f311b4111b docs 2016-06-02 15:56:58 -07:00
Adam Ierymenko 61d6ada88d . 2016-06-02 15:26:00 -07:00
Adam Ierymenko 506c74270c Stash old Linux binary installer stuff in attic. This is going away. 2016-06-02 15:20:43 -07:00
Adam Ierymenko 4d13ddd48c GPG public key for signing GitHub releases, etc. 2016-06-02 15:04:56 -07:00
Adam Ierymenko cc89290eb6 last man page! 2016-06-02 14:50:38 -07:00
Adam Ierymenko 5bce3e37ee clean doc node_modules on clean 2016-06-02 13:58:34 -07:00
Adam Ierymenko 6671d5553b More man pages. 2016-06-02 13:56:24 -07:00
Adam Ierymenko 41b3b54bf8 man stuff 2016-06-02 13:04:46 -07:00
Adam Ierymenko 096db53822 Switch manual pages to "ronn," a program that converts MarkDown to roff man pages, and pre-build them. Also have the zerotier-cli(1) man page ready to go! 2016-06-02 12:33:28 -07:00
Adam Ierymenko f9148bf9cb Finally json-parser. Skip miniupnpc since some Linux distros (even newer ones) ship with an old unsafe crummy version. 2016-06-01 22:26:58 -07:00
Adam Ierymenko a880f93166 also libnatpmp 2016-06-01 22:06:43 -07:00
Adam Ierymenko fd81a7fe63 On Linux auto-detect presence of http-parser and lz4 and link against system libs instead of ext/ builtins (for RPM and DEB packaging effort) 2016-06-01 21:55:48 -07:00
Adam Ierymenko 65b7893a8a add full docs to ext/json-parser (no upgrade available) 2016-06-01 18:51:22 -07:00
Adam Ierymenko 597dee40fd upgrade ext/http-parser 2016-06-01 18:49:36 -07:00
Adam Ierymenko 2c995f1f91 IPv6 links are unfortunately not "reliable." Many IPv6 gateways, while not
implementing NAT, do implement stateful firewalling with absurdly short
timeouts (<60s). Keepalives are still required in IPv6.

Network engineers continue to mindlessly carry forward cruft and baggage
from IPv4 to IPv6.
2016-05-31 10:30:00 -07:00
Adam Ierymenko 68d950c344 Hack in zerotier-idtool to allow generation of vanity addresses. 2016-05-26 09:26:03 -07:00
Adam Ierymenko 0bcc7d46a3 Disable debug code. 2016-05-16 18:39:34 -07:00
Adam Ierymenko 93b673043c Fix new binary meta-data deserialization and add some debug code (will disable later). 2016-05-16 18:37:37 -07:00
Grant Limberg de1b745988 comment out a few TRACE messages that don't compile 2016-05-14 13:29:31 -07:00
Grant Limberg efdbd6326f compiling with C++11 requires a space between string literals 2016-05-14 13:25:40 -07:00
Adam Ierymenko 25c3d3a452 cleanup 2016-05-11 13:24:55 -07:00
Adam Ierymenko 548730660b Ready to test whole new netconf refactor. 2016-05-11 10:19:14 -07:00
Adam Ierymenko 7ee3743c3d Refactor controller to send both old and new format netconf. 2016-05-11 08:49:15 -07:00
Adam Ierymenko 37b89b3944 Add TCP relative sequence number criterion for documentation/posterity. 2016-05-09 17:00:17 -07:00
Adam Ierymenko 8b9519f0af Simplify a bunch of NetworkConfig stuff by eliminating accessors, also makes network controller easier to refactor. 2016-05-06 16:13:11 -07:00
Adam Ierymenko 529515d1d1 Changes to how new-style binary network configs are detected, and a new-style binary serialized meta-data representation. 2016-05-06 13:29:10 -07:00
Adam Ierymenko 69d0562e2c docs 2016-05-06 11:41:11 -07:00
Adam Ierymenko 7913fa7bbd Dead code removal. 2016-05-06 11:13:34 -07:00
Adam Ierymenko b543868351 Missing deserialize stuff. 2016-05-06 11:00:19 -07:00
Adam Ierymenko 0f17077b3d Merge gateways and routes in netconf since they are the same thing. 2016-05-06 10:57:53 -07:00
Adam Ierymenko 9da8bf37d7 docs 2016-04-28 21:31:10 +02:00
Adam Ierymenko e5cc487b95 Beginning of security doc and kill some obsolete defines in main include file. 2016-04-28 14:58:16 +02:00
Adam Ierymenko 726136beda Ifdef fix. 2016-04-27 09:30:34 +02:00
Adam Ierymenko 59eb09d063 Deserialize new style netconf. 2016-04-26 17:20:31 -07:00
Adam Ierymenko b9dba97fdb Bunch more refactoring for an even more compact NetworkConfig representation, especially rules. 2016-04-26 17:11:25 -07:00
Adam Ierymenko 25a5275921 . 2016-04-26 08:53:49 -07:00
Adam Ierymenko e731fc1a3a Replace two bools in NetworkConfig with a flags field. 2016-04-26 08:40:26 -07:00
Adam Ierymenko 90e1262a8b More refactoring to remove old Dictionary dependencies. 2016-04-26 08:20:03 -07:00
Adam Ierymenko 246f86dad3 Define an "anchor" as a statically defined device that serves as a network lookup point. 2016-04-26 07:56:41 -07:00
Adam Ierymenko d736074301 Refactor rules table in-memory structure in new NetworkConfig to permit far more rules with better space efficiency. 2016-04-22 15:40:53 -07:00
Adam Ierymenko 368efaa2ba Kill some old debug code. 2016-04-19 12:55:48 -07:00
Adam Ierymenko 2f18a92e20 Cleanup in numerous places, reduce network chattiness around MULTICAST_LIKE, and fix a "how was that working" latent bug causing some control traffic to take the scenic route. 2016-04-19 12:09:35 -07:00
Adam Ierymenko affbca74b4 Clean up Linux makefile and remove doc target from default since it requires rst2man. Add doc target to official instead. 2016-04-19 09:35:32 -07:00
Adam Ierymenko 4c455876f9 Revise peer path weighting to always prioritize cluster-optimal paths. 2016-04-19 09:22:51 -07:00
Adam Ierymenko cecfa99b7b (1) cluster members send a flag indicating that a PUSH_DIRECT_PATHS is a cluster redirect, (2) 1.1.5 uses this to avoid a bug (this bug does not exist in 1.1.4) 2016-04-18 16:44:23 -07:00
Adam Ierymenko b3cac538cc Store lat/lon too for testing and future display use. 2016-04-18 15:48:33 -07:00
Adam Ierymenko 587b1e05d1 Replace cluster-geo subprocess with in-memory loaded CSV of GeoIP data. This is faster, cheaper, more reliable. We use https://db-ip.com/ but others would work too. 2016-04-18 11:33:54 -07:00
Adam Ierymenko 02c3727ccd . 2016-04-18 10:21:38 -07:00
Adam Ierymenko af471af8ef Shrink NetworkConfig slightly. 2016-04-12 13:32:41 -07:00
Adam Ierymenko e28838805f Brace fix... 2016-04-12 13:17:16 -07:00
Adam Ierymenko 8a9762331f Fix one more old NetworkConfig bit of code. 2016-04-12 12:54:14 -07:00
Adam Ierymenko 31db6f8f36 NetworkConfig refactor almost done. 2016-04-12 12:49:46 -07:00
Adam Ierymenko ad1e83d8b9 Refactor IncomingPacket for new NetworkConfig 2016-04-12 12:32:33 -07:00
Adam Ierymenko bbd9915056 Refactor Node for new NetworkConfig 2016-04-12 12:26:10 -07:00
Adam Ierymenko 51fecc0be9 Refactor Network for new NetworkConfig. 2016-04-12 12:16:29 -07:00
Adam Ierymenko 6f854c8391 NetworkConfig refactor part 1 2016-04-12 12:11:34 -07:00
Adam Ierymenko 9b8444fff1 Merge of bignose/manual-pages (Linux man pages) 2016-04-07 12:28:43 -07:00
Adam Ierymenko 43e317f0b7 Authorship stuff. 2016-04-07 12:24:15 -07:00
Adam Ierymenko 0e40181d8f Merge branch 'license-clarification' into dev 2016-04-07 12:18:46 -07:00
Adam Ierymenko 63b62ebf4c Boost local interface check interval a bit to speed direct link provisioning on startup. 2016-04-07 12:13:18 -07:00
Adam Ierymenko 569de22481 Make port mapper names even more unique, and trial bind before binding TCP now which should work on Linux and others. 2016-04-07 09:51:14 -07:00
Adam Ierymenko 9085a04b16 Merge branch 'dev' of http://git.int.zerotier.com:/zerotier/ZeroTierOne into dev 2016-04-07 16:41:28 +00:00
Adam Ierymenko c7df61a3c3 dev branch now works again on Linux 2016-04-07 16:41:07 +00:00
Adam Ierymenko c278f05181 RoutingTable build fixes. 2016-04-06 17:29:38 -07:00
Adam Ierymenko 61a9c27af0 Consolidate routing table code. 2016-04-06 17:14:05 -07:00
Adam Ierymenko e9b2613d5f Put routing table code back in osdep/ 2016-04-06 16:57:37 -07:00
Adam Ierymenko 24469a7f43 . 2016-04-06 16:47:11 -07:00
Adam Ierymenko 56096be8b6 Tweak new RX queue algorithm to "expire" old entries to prevent always needing to traverse the whole queue array. 2016-04-06 16:28:40 -07:00
Adam Ierymenko 8ef78e7e7d Preserve add local interface address add order and send in that order since this is a priority. 2016-04-06 11:50:00 -07:00
Adam Ierymenko 504738b183 Binder for Windows, and use Binder to get local interface addresses to advertise. 2016-04-05 15:53:19 -07:00
Adam Ierymenko 32cd2a02c9 OneService now binds all ports to specific local interfaces instead of wildcard and rebinds on changes. (default route) 2016-04-05 15:44:08 -07:00
Adam Ierymenko 4a109658ab More refactoring and prep for explicit interface bindings (for default route support). 2016-04-05 11:59:46 -07:00
Adam Ierymenko 52d9612301 Reduce symmetric prediction fuzz just a bit. 2016-04-05 10:49:14 -07:00
Adam Ierymenko d8b89b0c86 Fix Cluster to send from a designated endpoint address instead of wildcard. 2016-04-05 10:47:13 -07:00
Adam Ierymenko e0ad854d19 Beginning of local binding manager for default gateway support. 2016-04-04 18:46:41 -07:00
Adam Ierymenko 0e26917c72 Tweak metric and clean out attic a bit. 2016-04-01 11:07:44 -07:00
Adam Ierymenko 3df60995e1 nit pick... might this matter? 2016-03-30 16:49:21 -07:00
Adam Ierymenko 1a5e7cb0cb More tweaks to OS determination stuff. 2016-03-28 12:26:49 -07:00
Adam Ierymenko 8035afae87 Try to define ZT_NO_TYPE_PUNNING on iOS in case it wasn't. 2016-03-28 12:22:05 -07:00
Adam Ierymenko 284e5d83b5 Fix some broken TRACEs and a tiny reorder in a few ifs. 2016-03-28 12:15:24 -07:00
Adam Ierymenko 2b3e1d5c10 Ignore IP assignment pool ranges that begin with 0.0.0.0 or that contain no IPs. 2016-03-24 13:34:01 -07:00
Adam Ierymenko 2c328d61ad Do not auto-assign IP addresses on bridges. IPs can still be assigned manually. 2016-03-24 13:32:01 -07:00
Adam Ierymenko 76f9b4c582 A few other little formatting things. 2016-03-18 15:06:45 -07:00
Adam Ierymenko c589bc4c57 Indentation 2016-03-18 14:32:48 -07:00
Adam Ierymenko d6a1868d0a Refactor incoming packet (rxQueue/fragmentQueue) to eliminate variable length queues and merge queues. This is both faster and saves memory. 2016-03-18 14:16:07 -07:00
Adam Ierymenko 9f31cbd8b8 Make /network/???/active return more info. 2016-03-17 13:05:51 -07:00
Ben Finney c0262d8f76 Add “doc” to the dependencies for the “all” build target. 2016-03-04 17:01:31 +11:00
Ben Finney 92702615a7 Add an overall “doc” build target. 2016-03-04 17:01:14 +11:00
Ben Finney c9d3f3ab96 Correct license grant to match “GPL v3 or later” grant in source. 2016-03-04 16:45:15 +11:00
Ben Finney 72797c25d5 Update copyright notice. 2016-03-04 16:44:23 +11:00
Ben Finney ea6ce47345 Refactor the program name to a pre-processor directive. 2016-03-04 16:42:30 +11:00
Ben Finney 10855b451d Refactor the copyright notice text to a pre-processor directive. 2016-03-04 16:40:09 +11:00
Ben Finney 3265b3594b Refactor the license grant text to a pre-processor directive. 2016-03-04 16:37:36 +11:00
Ben Finney cafc46a8e9 Add Makefile module for building documentation. 2016-03-04 16:06:17 +11:00
Ben Finney 5993b178c5 Ignore generated man page files. 2016-03-04 16:05:55 +11:00
Ben Finney 24e286b5ec Add a stub for an encoding declaration on a man page. 2016-03-04 16:04:57 +11:00
Ben Finney c63de27633 Add references to other tools for ‘zerotier-one’. 2016-03-04 15:41:06 +11:00
Ben Finney a84a256df4 Add incomplete man pages for ‘zerotier-idtool’ and ‘zerotier-cli’. 2016-03-04 15:40:08 +11:00
Ben Finney 88dfa860f4 Document how the home directory is used, and its default value. 2016-03-04 15:08:17 +11:00
Ben Finney 83bc5d95aa Document remaining options explicitly. 2016-03-04 14:57:10 +11:00
Ben Finney 09c61d5cb1 More explicit specification of how to use ‘-i’ and ‘-q’. 2016-03-04 14:53:50 +11:00
Ben Finney 71c84aee60 Add “see also” section referring to ZeroTier documentation online. 2016-03-04 11:36:19 +11:00
Ben Finney cee09b0d2e Refine description of ZeroTier One. 2016-03-04 11:36:04 +11:00
Ben Finney fdb8ea93ef Add a reStructuredText document for a ‘zerotier-one(8)’ man page. 2016-03-04 11:35:16 +11:00
Adam Ierymenko 60ab565185 Fix cluster-geo code to cache IPv6 by first 64 bits to prevent cache fillup due to IPv6 privacy extensions. 2016-03-03 15:33:38 -08:00
Adam Ierymenko 1fe251d0a0 stupid bug is stupid 2016-03-03 14:50:47 -08:00
Adam Ierymenko ff931e53b5 more makefile stuff 2016-03-03 14:31:43 -08:00
Adam Ierymenko ef376a7919 Linux make clean fix. 2016-03-03 14:24:52 -08:00
Adam Ierymenko 09fc9e4d0c indent fix 2016-03-03 14:21:13 -08:00
Adam Ierymenko fe3a84a422 Fix problems with previous commit. 2016-03-03 14:15:09 -08:00
Adam Ierymenko ba56a5b9d1 Another NAT-t improvement:
Many NATs revert to symmetric behavior from friendlier modes if they cannot
preserve ports. This can occur if there is, for example, more than one ZT
device behind the NAT using port 9993.

Others (Airport Extreme?) seem to have bugs in which they completely freak
out if more than one device tries to do a lot of mappings using the same
internal local port.

Mostly to fix the latter case and somewhat to fix the former, we introduce
a secondary port. ZeroTier now binds 9993 (or whatever port you specify)
plus another port computed deterministically from your ZeroTier address.
This port is used for new links 1/4 of the time.

This mostly addresses the second problem above and partly helps to address
the first.

If uPnP/NAT-PMP is enabled we also still open a tertiary port because some
routers freak out if NAT-t is attempted using the same port as uPnP.

All of this is IPv4 only of course. IPv6 is sane.
2016-03-03 13:52:27 -08:00
Adam Ierymenko a27d8b2910 Windows cleanup. 2016-03-02 19:20:04 -08:00
Adam Ierymenko b6f6ed35fc More Windows tweaks and a compile fix. 2016-03-02 19:06:29 -08:00
Adam Ierymenko d3cb063d13 Tweaks to WindowsEthernetTap to attempt to address GitHub issue #308 and/or GitHub issue #277 -- we can't reproduce yet but I found one area where a spin was possible under certain failure conditions. Maybe. 2016-03-02 18:37:24 -08:00
Ben Finney b9125e4256 Document myself as a contributor. 2016-03-02 10:38:30 +11:00
Adam Ierymenko 0aae86be2e Merge branch 'dev' of https://github.com/krisek/ZeroTierOne into dev 2016-03-01 12:29:29 -08:00
Adam Ierymenko d9fa07399e Fix GitHub issue #311 2016-03-01 09:49:33 -08:00
Ben Finney d570adf021 State grant of license in each third-party component. 2016-02-29 18:11:54 +11:00
Ben Finney dcb91c043f State which exact files constitute third-party works. 2016-02-29 18:04:20 +11:00
Ben Finney f613930dee Explicitly mark home page URLs of third-party code. 2016-02-29 18:03:16 +11:00
Ben Finney 667048310d Remove text that paraphrases GPLv3 conditions. 2016-02-29 17:44:47 +11:00
Ben Finney 642aa3313d Explicitly grant GPLv3-or-later terms to the overall code base. 2016-02-29 17:44:47 +11:00
Ben Finney f6e98df8da Refer directly to the accompanying GPL-3 license document. 2016-02-29 17:44:47 +11:00
Ben Finney d37e44225f Add explicit copyright statement in same file as license grant. 2016-02-29 17:44:47 +11:00
Ben Finney 5c172d1a15 Rename file that is not a license text. 2016-02-29 17:44:10 +11:00
Ben Finney 0bf2060a7d Add verbatim text of GNU General Public License version 2. 2016-02-29 15:16:19 +11:00
Ben Finney 22883b3eeb Add verbatim text of GNU General Public License version 3. 2016-02-29 15:13:37 +11:00
Kristof Imre Szabo 6d1dc47368 Typo fix. 2016-02-28 17:06:46 +01:00
Kristof Imre Szabo f8d05eb625 Spec description rephrased. 2016-02-28 17:05:43 +01:00
Kristof Imre Szabo 45c233c0e7 Formatting change 2016-02-28 00:04:18 +01:00
Kristof Imre Szabo b836228465 Formatting change 2016-02-28 00:02:48 +01:00
Kristof Imre Szabo 8118630861 Formatting change 2016-02-28 00:00:55 +01:00
Kristof Imre Szabo bf3e31ece7 Initial commit of the standard zerotier RPM specification 2016-02-27 23:55:14 +01:00
Adam Ierymenko f217ce7ff7 Upgrade http-parser. 2016-02-25 18:13:42 -08:00
Adam Ierymenko 039790cf26 Upgrade LZ4 to hopefully fix wacky sporadic crash when built with g++ 5.3.1 on Debian/testing. 2016-02-25 15:39:15 -08:00
Adam Ierymenko e5f82f5457 cleanup 2016-02-25 10:08:30 -08:00
Adam Ierymenko a5e4e3fcac Remove ui/ on Linux uninstall. 2016-02-24 17:24:36 -08:00
Adam Ierymenko 3fe60615df Make installers silent when run inside packages. 2016-02-24 15:23:49 -08:00
Adam Ierymenko 7b5c1696eb Fix a CIRCUIT_TEST bug in forwarding of tests along hop paths on private networks. Unfortunately this means full circuit testing for private nets will need an upgrade. :( 2016-02-23 14:56:51 -08:00
Adam Ierymenko c7c61b4ac0 Fix checking of path address validity. 2016-02-22 16:01:35 -08:00
Adam Ierymenko 92f24d1988 Make maximum size of a circuit test structure sane. 2016-02-22 15:54:18 -08:00
Adam Ierymenko 9b59bcd995 Clean controller circuit test memory. 2016-02-22 15:48:27 -08:00
Adam Ierymenko 43fff1a87e Deprecate reporting of local clock in circuit tests since a small number of users might have security problems with this. 2016-02-22 12:59:26 -08:00
Adam Ierymenko 2aa7138373 Reduce direct ping delay back to 1m and make SelfAwareness aware of local received-on address to eliminate false symmetric classification. 2016-02-22 09:47:50 -08:00
Adam Ierymenko 69a438d64d Small tweak to active threshold. 2016-02-19 09:10:31 -08:00
Adam Ierymenko 772551c45d Try +1 and +2 existing surfaces for symmetric NATs. 2016-02-11 10:39:39 -08:00
Adam Ierymenko 0c951b6e56 More tweaks to new symmetric NAT buster, and stop using old iterative method since this supersedes it. 2016-02-10 18:41:39 -08:00
Adam Ierymenko eadafd8de7 Little fix to NAT-t alg 2016-02-10 17:51:42 -08:00
Adam Ierymenko f9230eb970 Widen max delta for TS/revision just a bit more for now. 2016-02-10 16:18:45 -08:00
Adam Ierymenko 82348e1537 Temporarily blacklist he.net IPv6 tunnel addresses for paths: these usually have a very low MTU which causes packet loss and other issues. 2016-02-10 11:06:26 -08:00
Adam Ierymenko 10bb9919f1 Tweak certificate of membership revision/time tolerance to eliminate boundary packet loss issues occasionally seen in the wild. 2016-02-10 09:32:42 -08:00
Adam Ierymenko 4769dacf61 Tweak needsOurMembershipCertificate timing to resolve a possible source of occasional dropped packets. 2016-02-09 16:54:47 -08:00
Adam Ierymenko 63ec7e58d4 Make activity no longer a function of ping frequency, since this causes compatibility bugs when the latter was modified due to timer interactions with other versions. 2016-02-08 10:03:01 -08:00
Adam Ierymenko a963810e02 Tweak a few cluster params for higher perf / lower initial setup latency. 2016-02-08 09:57:46 -08:00
Adam Ierymenko 69b1da2e1d return 200 instead of 404 when test is fetched 2016-02-04 16:27:25 -08:00
Adam Ierymenko dc3d899e70 Return test ID when we post a test. 2016-02-04 16:09:26 -08:00
Adam Ierymenko 78c1d9006a flood protection fix 2016-02-04 14:39:43 -08:00
Adam Ierymenko 5dad73647d Lengthen backup period again 2016-02-04 14:22:54 -08:00
Adam Ierymenko 13b39a0c3e SQLite perf tuning 2016-02-04 14:03:37 -08:00
Adam Ierymenko 90801a94d3 Track client version and tell whether active nodes support circuit test. 2016-02-04 13:38:42 -08:00
Adam Ierymenko fab6f4450d /active subpath off networks 2016-02-04 12:17:55 -08:00
Adam Ierymenko 2e04dc03f2 Logging to NodeHistory, SQL queries. 2016-02-03 18:10:56 -08:00
Adam Ierymenko f8eb6b0067 Add NodeHistory table on sqlite controller. 2016-02-03 13:56:35 -08:00
Adam Ierymenko 7a63fdc447 Fix for GitHub issue #298 and hopefully #297 2016-02-01 14:41:54 -08:00
Adam Ierymenko 4655a59912 typo 2016-01-28 17:59:31 -08:00
Adam Ierymenko c0668dcdf2 Merge branch 'edge' into dev 2016-01-26 14:20:25 -08:00
Adam Ierymenko 9cb4bbe2b8 Save test results for circuit tests in memory and then cancel the test and send the results when the test is queried later. This way you can POST a test and then come GET the result at the appointed time. 2016-01-26 12:42:44 -08:00
Joseph Henry 95d28494f6 Mac OSX Port - Lightly tested 2016-01-25 12:55:29 -08:00
Grant Limberg 67f678d60a Merge branch 'master' into dev 2016-01-22 18:07:20 -08:00
Grant Limberg 3993dfa2a5 Fix JNI for API changes in 1.1.4 2016-01-22 18:06:58 -08:00
Adam Ierymenko 935f00ad4c Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-21 16:03:14 -08:00
Adam Ierymenko bafdb54752 New dev version: 1.1.5 2016-01-21 16:02:16 -08:00
Adam Ierymenko 7526ed705c Check for /dev/tun as well as /dev/net/tun since some Linux devices put it there. 2016-01-21 16:01:24 -08:00
Joseph Henry bccd60125b Added python, python3, darkhttpd unit tests 2016-01-21 15:52:54 -08:00
Joseph Henry 7127d2b811 Updated unit tests + README 2016-01-21 15:10:26 -08:00
Adam Ierymenko 9cc2733ed8 VERSION 1.1.4: Improved path detection, improved anti-recursion code, and Network Containers BETA
ZeroTier One version 1.1.4 has several improvements to path stability and
path learning logic. It also contains the BETA version of Network Containers!

See netcon/README.md and https://www.zerotier.com/product-netcon.shtml for more
information.

Improvements in 1.1.4:

 - Paths are now confirmed more aggressively on inactivity. This version can
   usually detect a dead direct path in under 10 seconds vs 1-2 minutes in
   previous versions.
 - Logic to prevent recursion has been overhauled. The old versions had code
   that explicitly checked packet contents (AntiRecursion.hpp). This is now
   gone in favor of a function that checks IP addresses of ZeroTier devices
   when paths are learned or probed. This is both more efficient and less
   prone to edge case failures. Testing in several complex environments has
   shown that this eliminates a few edge cases where inappropriate paths would
   be used.
2016-01-20 18:10:40 -08:00
Adam Ierymenko 3b10fd7557 Windows build fixes. 2016-01-20 18:06:20 -08:00
Adam Ierymenko f782797dc7 readme 2016-01-20 17:44:17 -08:00
Adam Ierymenko 227b8bfbf6 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-20 16:59:59 -08:00
Adam Ierymenko 385770dcc8 1.1.4 bump 2016-01-20 16:59:54 -08:00
Janjaap Bos 4f6ca14d4f typo 2016-01-20 16:52:46 -08:00
Janjaap Bos c3fc5340b6 Added check for identiy
Needed if you just copy & paste the whole block.
2016-01-20 16:43:37 -08:00
Adam Ierymenko 4f30b06930 Merge branch 'dev' into edge 2016-01-20 16:28:14 -08:00
Joseph Henry 398e0b7c63 Removed debug line 2016-01-20 15:04:02 -08:00
Joseph Henry b7b014298b Bad connection reference fix + RX lock fix 2016-01-20 14:43:49 -08:00
Joseph Henry bcaf42e075 Transfer speed increate + stability fixes 2016-01-20 13:38:14 -08:00
Joseph Henry 357cb92f2e Stability fix + introduction of connection probation 2016-01-18 23:41:28 -08:00
Joseph Henry 31ed86740c Added some safety + unregister callbacks on close 2016-01-18 16:04:29 -08:00
Joseph Henry f2cc144811 Fixed nc_sent possible bad ptr on close issue 2016-01-18 12:26:40 -08:00
Joseph Henry 1783867f96 Print path for user. Removed unused stub Phy methods 2016-01-17 15:13:32 -08:00
Joseph Henry a73638b214 Fixed memory leak 2016-01-17 14:32:34 -08:00
Grant Limberg bd1884e48f yay more icons 2016-01-15 18:39:16 -08:00
Grant Limberg 5cd20c0009 Adding app icons for iOS 2016-01-15 18:22:53 -08:00
Joseph Henry 58ebfdffcb Debugs off by default 2016-01-15 13:03:37 -08:00
Joseph Henry 1e2c434ae8 nc_recved() connection closure change 2016-01-15 13:02:48 -08:00
Joseph Henry 7107297c25 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2016-01-15 11:19:25 -08:00
Joseph Henry 35fb602dff Fixed pcb->state == CLOSE_WAIT bug 2016-01-15 11:18:26 -08:00
Adam Ierymenko 8af3d35234 Merge branch 'dev' into edge 2016-01-15 11:18:23 -08:00
Joseph Henry 323d40a560 Small formatting changes 2016-01-15 10:27:27 -08:00
Joseph Henry 321bca4bf7 Adjusted formatting/conventions to conform to rest of ZT codebase 2016-01-15 10:09:31 -08:00
Joseph Henry 7cb08630d0 Fixed RX race condition 2016-01-14 18:59:08 -08:00
Joseph Henry 45f0737a00 Naming convention update 2016-01-14 14:15:50 -08:00
Joseph Henry 6cf478c1b2 RX buffer update 2016-01-14 14:03:03 -08:00
Joseph Henry f52a82d9f2 Updated RX buffer code 2016-01-14 13:23:01 -08:00
Grant Limberg 6dac0c8c4f C doesn't support default arguments 2016-01-13 17:47:34 -08:00
Joseph Henry 5e30eabd30 Updated getsockopt/setsockopt, removed unused code 2016-01-13 15:52:15 -08:00
Joseph Henry 7bba867ce8 Fixed double-close bug 2016-01-13 13:55:11 -08:00
Adam Ierymenko e8e6a4702b Merge branch 'dev' into edge 2016-01-13 13:15:47 -08:00
Joseph Henry c3e2cb9b8e Modified PCB/state management logic 2016-01-13 12:19:48 -08:00
Adam Ierymenko 2e5caa335a Old SF root is dead. Now we are just on Alice and Bob. (world update for 1.1.4) 2016-01-13 10:18:41 -08:00
Joseph Henry bdabe40c65 Updated error reporting for sock_fd_read() 2016-01-12 14:25:30 -08:00
Adam Ierymenko 7991a7c50a Merge branch 'dev' into edge 2016-01-12 14:05:40 -08:00
Adam Ierymenko 4e4fd51117 boring doc stuff 2016-01-12 14:04:55 -08:00
Joseph Henry e91322bd10 README update and example server port change 2016-01-12 14:04:55 -08:00
Joseph Henry 23cdb3aed5 Removed ztnc network config file 2016-01-12 13:58:15 -08:00
Joseph Henry bd3d9ee356 Removed terminology changes 2016-01-12 13:55:46 -08:00
Adam Ierymenko 76f1ab33f0 Make clean rm .depend 2016-01-12 13:44:59 -08:00
Adam Ierymenko 61fd8463f8 Merge branch 'dev' into edge 2016-01-12 13:19:53 -08:00
Adam Ierymenko 3883ac08c7 Docs and cleanup. 2016-01-12 13:17:30 -08:00
Joseph Henry dd233fdb8d Updated terminology. No functional change 2016-01-12 13:00:31 -08:00
Joseph Henry 18aea2d3d3 Removed unused code 2016-01-12 12:56:51 -08:00
Joseph Henry 74e22368b5 Fixed sketchy memcpy logic, also added checks for service RPC ACK 2016-01-12 12:42:46 -08:00
Adam Ierymenko d03a63e055 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2016-01-12 12:25:19 -08:00
Adam Ierymenko 93ab8d46b9 Merge branch 'dev' into edge 2016-01-12 12:25:15 -08:00
Adam Ierymenko 740eb6ebc4 Simplify Peer locking to eliminate deadlock with new path recursion check code (and also probably improve performance). 2016-01-12 12:12:25 -08:00
Adam Ierymenko d6f0f1a82a Use network user ptr in lookup for Ethernet frame handling to eliminate map lookup. 2016-01-12 11:34:22 -08:00
Adam Ierymenko 83ef98a9dc Add a network-associated user ptr in API. 2016-01-12 11:04:35 -08:00
Adam Ierymenko 3edfbfec93 Merge branch 'master' into dev 2016-01-12 09:50:19 -08:00
Adam Ierymenko 68c004ef68 Merge pull request #291 from JackyRen/patch-1
Update controller README.md
2016-01-12 09:49:54 -08:00
Joseph Henry e2ae9165c6 RPC update 2016-01-12 09:46:49 -08:00
Adam Ierymenko 704205c5f7 Dead code removal. 2016-01-12 09:33:14 -08:00
Ren Jie 21656ba015 Update controller README.md
Sync make parameter with code.
2016-01-12 22:51:08 +08:00
Adam Ierymenko bbcc3304a0 Check shouldUsePathForZeroTierTraffic in legacy beacon responder. 2016-01-11 15:57:58 -08:00
Adam Ierymenko c6571073fe Get rid of constructor/destructor in libzerotierintercept, and simplify a few things. 2016-01-11 15:27:22 -08:00
Adam Ierymenko ba9fcb31d0 Merge branch 'dev' into edge 2016-01-11 14:30:24 -08:00
Joseph Henry 78c0f0a443 RPC detection fix 2016-01-11 13:23:43 -08:00
Joseph Henry 7656e6b9f8 Transfer tune-up 2016-01-11 11:37:04 -08:00
Joseph Henry 39d79f34ab Added RPC ACK 2016-01-11 10:35:02 -08:00
Adam Ierymenko b3e3d4cacc Instead of using binary packet comparison, add a callback to the API to explicitly check whether paths should be used. Check in with this callback (if present) when learning new paths or sending initial packets. 2016-01-11 10:17:44 -08:00
Joseph Henry 3e65ecb93d Stateless RPC rework 2016-01-11 10:12:59 -08:00
Adam Ierymenko ba2a89c760 docs 2016-01-11 09:13:41 -08:00
Adam Ierymenko eea634a432 Refactor to eliminate copypasta. 2016-01-11 09:11:35 -08:00
Adam Ierymenko ab19e19f00 Fix a bug that we visually found in Windows code -- it was not advertising uPnP addresses?!? 2016-01-11 09:09:24 -08:00
Adam Ierymenko 1023ef23b7 Remove somewhat ugly and costly anti-recursion hack -- we will switch to more explicit methods. 2016-01-11 09:06:10 -08:00
Adam Ierymenko a56fbc1929 Close another potential anti-recursion loophole. 2016-01-06 15:35:27 -08:00
Adam Ierymenko 47ce52228b Roots should probably not do this since it would likely be a waste of packets. 2016-01-06 12:54:51 -08:00
Adam Ierymenko ff9317365a Merge branch 'dev' into edge 2016-01-06 11:38:11 -08:00
Adam Ierymenko 0a3ef38cad Put old test code in attic. 2016-01-06 11:06:47 -08:00
Adam Ierymenko 9aee72099e AntiRecursion cleanup and some other minor things. 2016-01-06 10:59:39 -08:00
Adam Ierymenko 05b2c0743f Tighten up dead path detection. Should now auto-detect dead paths in less than 10 seconds at a very small cost in ECHO requests (or HELLOs for older peers). GitHib issue #272 2016-01-06 10:00:03 -08:00
Adam Ierymenko 4d94ae77b4 simplify if 2016-01-05 16:48:35 -08:00
Adam Ierymenko d8143a5e18 Implement first pass on rapid dead path detection, and increment version to 1.1.3 (dev) 2016-01-05 16:41:54 -08:00
Adam Ierymenko cba739fd6b more dead code 2016-01-05 14:46:26 -08:00
Adam Ierymenko fb5237d5b6 Outline dead path detection mechanism. 2016-01-05 14:42:56 -08:00
Adam Ierymenko 258f95b2cd dead code removal 2016-01-05 14:19:16 -08:00
Janjaap Bos b8059d5c87 typo 2015-12-23 22:54:36 +01:00
Adam Ierymenko 66894eb473 Merge branch 'dev' into edge 2015-12-21 16:56:13 -08:00
Adam Ierymenko 61becbb7e5 . 2015-12-21 16:56:11 -08:00
Adam Ierymenko 42e453872c VERSION 1.1.2: bug fixes and NAT-PMP support
ZeroTier One version 1.1.2 is mostly a bug fix release, but also includes support
for NAT-PMP as a method of mapping external ports from behind supported routers.

Bugs fixed include:

 - Refactored path selection code to eliminate a change that might have introduced
   a reliability regression from earlier versions.
 - Reworked UPnP code for improved reliability and also added NAT-PMP support.
 - Fixed a crash on network preferred relays. (Not exploitable or security critical
   since only network controllers can send that config option and there was no
   buffer overflow or other exploitable issue.)
 - Fix GUI problem on OSX where window could be larger than screen on some Macbooks.
 - Fix a potential rate limit problem on PUSH_DIRECT_PATHS that could negatively
   impact same-network connectivity.
 - Update zerotier-cli to show preferred vs. active paths and hide inactive ones.
 - Fix an issue on shutdown with thread delete order and thread synchronization.
2015-12-21 16:48:33 -08:00
Adam Ierymenko 2f42a7c010 Windows 1.1.2 build. 2015-12-21 16:36:56 -08:00
Adam Ierymenko 436c1fac1d Selectively move over changes from "edge" to "dev" excluding netcon. 2015-12-21 16:15:39 -08:00
Adam Ierymenko 16bc9533ed Fix a problem that made valgrind complain on shutdown (not otherwise an issue). 2015-12-21 15:23:14 -08:00
Adam Ierymenko 63a51e2890 Fix a small potential uninitialized variable issue. 2015-12-21 14:55:11 -08:00
Adam Ierymenko 23eaafc4eb Remove stray file that is instead found in netcon. 2015-12-21 14:01:48 -08:00
Adam Ierymenko 536b7000bc Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-21 13:15:09 -08:00
Adam Ierymenko 24cc0904fa 1.1.2 Windows build fixes, tweaks, etc. 2015-12-21 13:14:48 -08:00
Janjaap Bos 5a65463b92 typo 2015-12-21 22:11:39 +01:00
Janjaap Bos c8056452b8 fix / workaround for ubuntu
Otherwise, if started with -d as daemon, the netcon service dies after
intercept listen registers.
2015-12-21 21:20:22 +01:00
Janjaap Bos 64e273e9c0 updated netcon readme 2015-12-21 19:49:22 +01:00
Joseph Henry 6f62d6bb34 Removed straggler debug prints 2015-12-21 07:36:44 -08:00
Joseph Henry d430457f1e Updated readme, removed test network keys 2015-12-21 07:26:45 -08:00
Joseph Henry 4267cc138e Readme changes, turned off debug 2015-12-21 07:17:37 -08:00
Joseph Henry de2ba8d0f7 Fixed typo 2015-12-21 05:36:27 -08:00
Joseph Henry c488fa8461 Tightening of RPC code 2015-12-21 05:03:26 -08:00
Joseph Henry 608e059b18 single updated test file 2015-12-18 15:19:34 -08:00
Joseph Henry 81203b20b8 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-18 15:09:18 -08:00
Joseph Henry 91bc32fe51 Re-added keys for testing 2015-12-18 15:09:08 -08:00
Adam Ierymenko d3dacf5c2a Tiny bit of dead code cleanup. 2015-12-18 14:51:24 -08:00
Adam Ierymenko 13036a1085 . 2015-12-18 14:30:47 -08:00
Adam Ierymenko 942ab6fd95 . 2015-12-18 14:29:23 -08:00
Adam Ierymenko fd9b2e931f Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-18 14:26:37 -08:00
Adam Ierymenko 6de67e828d Fix accept4() semantics. 2015-12-18 14:26:31 -08:00
Joseph Henry 2d9f1f7857 Added install script for debugging with strace 2015-12-18 13:13:47 -08:00
Joseph Henry fde8af9483 getsockopt() tweak 2015-12-18 11:37:11 -08:00
Joseph Henry c22c0a20f6 Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-18 10:31:24 -08:00
Joseph Henry 9063209124 getsockname() fix 2015-12-18 10:31:11 -08:00
Adam Ierymenko 61dc13a6e1 Cache query in progress to reduce redundant GeoIP2 queries. 2015-12-18 09:38:34 -08:00
Joseph Henry e3eea6fcbd RPC Reliability improvements and partial getsockname() fix 2015-12-16 18:05:47 -08:00
Adam Ierymenko 7d001458cb Update World to drop an old legacy root. 2015-12-17 11:52:05 -08:00
Adam Ierymenko 823c9979c0 Erase more debug junk. 2015-12-17 11:45:55 -08:00
Adam Ierymenko 9ebcbc94e4 Remove some stray debug stuff. 2015-12-17 11:44:48 -08:00
Adam Ierymenko aa39b0dc24 Show paths as active or preferred in listpeers. 2015-12-17 11:03:39 -08:00
Adam Ierymenko 2160164e8c (1) Get rid of path sorting and just scan them, since sorting may have been a premature optimization that introduced a regression and path instability in a few edge cases, and (2) do not attempt to contact remote paths received via PUSH_DIRECT_PATH if we already have that path and it is already active (dumb, should have done this originally) 2015-12-17 10:53:07 -08:00
Adam Ierymenko 3137f43da9 Fix for getsockname() crash and other address size issues. 2015-12-16 10:30:02 -08:00
Adam Ierymenko efc2a74df1 Some final README revs. 2015-12-16 10:07:04 -08:00
Joseph Henry 9638889614 Removed docker-test keys/config for netcon network 2015-12-16 08:33:39 -08:00
Joseph Henry 0df639f8f5 readme update 2015-12-15 16:20:31 -08:00
Joseph Henry 011ce35ede Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-15 15:57:02 -08:00
Joseph Henry a9802eff02 readme update 2015-12-15 15:56:47 -08:00
Adam Ierymenko f9837163d3 docs 2015-12-15 15:43:07 -08:00
Adam Ierymenko 6bc93d2050 Docs, and change ZT_NC_NWID to ZT_NC_NETWORK and use full path in local ZT home dir to enable multiple instances. 2015-12-15 15:35:21 -08:00
Adam Ierymenko 37a7e9e275 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-15 15:00:05 -08:00
Adam Ierymenko 531e5f9923 . 2015-12-15 15:00:03 -08:00
Joseph Henry 617845a7da readme and makefile updates 2015-12-15 14:59:17 -08:00
Joseph Henry 9dc59eff76 Cleaned up, tests updated, readme updated 2015-12-15 14:50:54 -08:00
Adam Ierymenko a6c5596782 Patch controller to not send relays to 1.1.0 to avoid triggering 1.1.0 network preferred relays bug. 2015-12-15 10:53:15 -08:00
Adam Ierymenko 022d3857cc Fix should use ECHO check. 2015-12-15 10:37:32 -08:00
Adam Ierymenko 82aa3f59d6 Fix bug in ECHO handling (OK was invalid!), and use ECHO on newer peers for path confirmation. Also get rid of path confirmation circuit breaker since this causes issues with some peers and should be done more intelligently anyway. 2015-12-15 10:30:40 -08:00
Adam Ierymenko 04d6b03733 Make auto backups slightly less frequent. 2015-12-15 09:22:10 -08:00
Adam Ierymenko 3b22ecc80c Make hex device address in UPnP name the right length. 2015-12-14 17:35:45 -08:00
Adam Ierymenko 53fe576028 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-12-14 17:04:36 -08:00
Adam Ierymenko f6dc99f345 Old NYC is dead. 2015-12-14 17:04:27 -08:00
Adam Ierymenko c0df1169ee Remove unimplemented SET_EPHEMERAL_KEY for now. 2015-12-14 14:53:43 -08:00
Joseph Henry b92884a0ad Merge branch 'edge' of http://10.6.6.2/zerotier/zerotierone into edge 2015-12-14 14:45:40 -08:00
Joseph Henry a421e31dd5 send_cmd() retrun value bugfix + minor debug changes 2015-12-14 14:45:25 -08:00
Adam Ierymenko 7b1c0c4013 Cache null results from Maxmind. 2015-12-14 14:40:00 -08:00
Joseph Henry f558b088e6 Library functions are now static, RPC return value tuning, and cleanup 2015-12-14 09:06:58 -08:00
Joseph Henry 99afc74021 FDs transferred over listen socket + other fixes 2015-12-12 01:28:59 -08:00
Joseph Henry 761bb4fdd0 Stability fix 2015-12-11 12:19:54 -08:00
Joseph Henry 663a336b83 RPC cleanup + Temporary timing fix 2015-12-10 09:24:56 -08:00
Adam Ierymenko e506fda3e4 Only set SO_NO_CHECK on IPv4 UDP sockets for now due to broken V6 stacks that drop zero checksum UDP packets. 2015-12-09 15:02:42 -08:00
Joseph Henry 42da36ba81 Fixed addrlen assignment in getsockname() 2015-12-09 12:22:08 -08:00
Joseph Henry a730c86907 getsockname() implemented 2015-12-09 12:20:38 -08:00
Adam Ierymenko b8cba90d85 . 2015-12-09 09:01:09 -08:00
Adam Ierymenko 9090edebb0 . 2015-12-08 18:17:03 -08:00
Adam Ierymenko 49d76c6311 Stub out getsockname() 2015-12-08 18:07:46 -08:00
Adam Ierymenko 5717dfe3b9 . 2015-12-08 17:45:51 -08:00
Adam Ierymenko c576cd68cb . 2015-12-08 17:44:13 -08:00
Adam Ierymenko f2078bf986 (WIP) more netcon work 2015-12-08 17:35:37 -08:00
Adam Ierymenko c2c37f3a63 Merge with fixes of netcon to edge. 2015-12-08 15:15:44 -08:00
Joseph Henry b1eb16d5fb Updated README, tests, and Intercept 2015-12-08 07:47:20 -08:00
Joseph Henry f2db82940b Nginx patch. Verified to work in fc23 and ub14 2015-12-08 05:09:12 -08:00
Joseph Henry a2837ccaa7 Fixed typo 2015-12-07 08:36:13 -08:00
Joseph Henry 284b37ccc0 Updated compatibility section 2015-12-07 08:35:26 -08:00
Joseph Henry 48d9708abe Combined make-linux.mk and make-intercept.mk's installer section 2015-12-07 06:54:13 -08:00
Joseph Henry b141026fc7 Replaced darkhttpd with httpd since darkhttpd is not currently supported and does not work 2015-12-07 06:41:20 -08:00
Joseph Henry c9bd0b3bf1 More concise unit test section 2015-12-07 06:30:54 -08:00
Joseph Henry 21b158cc48 Added unit test info to README.md 2015-12-07 06:21:40 -08:00
Joseph Henry dab13f59e5 Test updates 2015-12-07 05:37:14 -08:00
root 036bbfaff9 Modified test scripts to match new naming conventions 2015-12-07 03:21:46 -08:00
Joseph Henry afafde2571 Modified Nginx test scripts 2015-12-06 22:37:23 -08:00
Joseph Henry 1dec034f77 Added application-specific test arguments to test script 2015-12-06 17:55:48 -08:00
Adam Ierymenko 0df33485ca Merge remote-tracking branch 'origin/netcon' into edge 2015-12-04 15:41:56 -08:00
Joseph Henry 7ea53dd21b (WIP) Additional test script changes 2015-12-04 15:39:35 -08:00
Adam Ierymenko 3869d6257b Always Salsa20 encrypt the result of the system CSPRNG as a mitigation against various low-entropy bugs such as the recent Raspberry Pi one. 2015-12-04 14:50:24 -08:00
Adam Ierymenko 4e12899a8e docs 2015-12-04 14:17:33 -08:00
Adam Ierymenko cebced259e docs 2015-12-04 13:48:53 -08:00
Adam Ierymenko 425d311ce8 Merge of netcon with edge and unification of make processes. 2015-12-04 13:19:31 -08:00
Adam Ierymenko ac8918992b Merge dev. 2015-12-04 12:45:21 -08:00
Adam Ierymenko cbf8d9c45b . 2015-12-04 12:43:48 -08:00
Adam Ierymenko 905253b4f5 First draft (unfinished) of new README for netcon (original in README.orig.md). 2015-12-04 12:43:21 -08:00
Joseph Henry d9b12be697 ZT_NC_NWID patch + (WIP) test script modifications 2015-12-04 12:39:54 -08:00
Joseph Henry 2196d982c3 (fixed) nwid detection in test script 2015-12-03 18:50:20 -08:00
Joseph Henry 5c5943a00c (fixed) test script liblwip.so placement, also streamlined test logic 2015-12-03 07:11:33 -08:00
Adam Ierymenko a4cfe4cd16 Fix Linux init script to properly specify runlevels. 2015-12-01 10:19:10 -08:00
Adam Ierymenko ceaef19fb7 Fix for GitHub issue #260 -- fix for (non-exploitable) crash in network preferred relay code 2015-11-30 17:20:12 -08:00
Adam Ierymenko 944fdfb65e Low-impact sanity check against GitHub issue #247 -- will likely prevent other weird recursions too. 2015-11-30 16:44:32 -08:00
Adam Ierymenko be44b15eac Fix for GitHub issue #252 2015-11-30 16:15:23 -08:00
Adam Ierymenko d73edfea56 GitHub issue #257 2015-11-30 16:12:03 -08:00
Adam Ierymenko c21882da9c Put selftest back and turn off tracing in PortMapper. 2015-11-30 16:07:02 -08:00
Adam Ierymenko f260250580 Simplify IP assignment logic in OSXEthernetTap, also fix for GitHub issue #249 2015-11-30 15:39:34 -08:00
Adam Ierymenko 40a4ba6e39 indentation 2015-11-30 15:15:43 -08:00
Adam Ierymenko d862d2868c ... and here. 2015-11-30 14:57:28 -08:00
Adam Ierymenko 1e213b4d4c Need to close on premature abort too or resources are leaked. 2015-11-30 14:56:36 -08:00
Adam Ierymenko 3d66492828 Also add a timeout for the actual NAT-PMP port mapping step. 2015-11-30 14:17:58 -08:00
Adam Ierymenko 838fdf4d11 ifdef naming fix. 2015-11-30 13:32:30 -08:00
Adam Ierymenko 685c5e9ad1 Fix for uPnP 2015-11-30 13:25:34 -08:00
Adam Ierymenko 66a29a00ee Merge miniupnpc/libnatpmp build into main build by just adding flags, defs, and objs. 2015-11-30 13:17:43 -08:00
Adam Ierymenko 6768521330 Ton of uPnP work and adding NAT-PMP support, still testing... 2015-11-30 13:10:22 -08:00
Adam Ierymenko 6c0de526e8 Merge pull request #261 from janjaapbos/synology
Fix for cross compiling
2015-11-30 11:07:20 -08:00
Adam Ierymenko 4c812e3796 Merge pull request #259 from janjaapbos/jb-dev
Increase maximum number of paths per IP scope to 4
2015-11-30 10:53:22 -08:00
Janjaap Bos e6808c69f8 Increase maximum number of paths per IP scope to 4
Otherwise, local discovered routes are ignored.
Don't know what the best value would be. Taking 4 for now.
2015-11-30 19:48:38 +01:00
Adam Ierymenko 75637f68b3 Merge branch 'dev' of github.com:zerotier/ZeroTierOne into dev 2015-11-24 14:11:31 -08:00
Adam Ierymenko 56cb2f43fa Merge pull request #254 from bonki/fix_iproute2_ip_handling
Fix for GitHub issue #253.
2015-11-24 14:11:14 -08:00
Adrian Frühwirth 038476c412 Fix for GitHub issue #253.
Make 'ip' detection more robust (some distros don't ship the binary in /sbin or /usr/sbin).
Add error handling for cases where an ip add/remove fails.
2015-11-24 22:56:02 +01:00
Joseph Henry 201109a7a0 (fixed) make-linux.mk conflicts, updated clean logic 2015-11-23 16:02:39 -08:00
Adam Ierymenko 7e28161638 Merge dev 2015-11-30 15:17:31 -08:00
Adam Ierymenko ef4472e185 Intercept now checks ZT_NC_NWID environment variable for 16-digit network ID and does not initialize if not present. 2015-11-23 13:59:38 -08:00
Adam Ierymenko 4acb3d81f3 Rename Common to common.inc.c to indicate that this is an included C file not a primary build C file. 2015-11-23 13:25:46 -08:00
Adam Ierymenko bee44ae731 Merge Sendfd into Common.c 2015-11-23 13:24:28 -08:00
Adam Ierymenko 95106e2e30 Mare make-self-contained code cleanup. 2015-11-23 13:18:46 -08:00
Adam Ierymenko 2a6ea38718 More code cleanup, just moving some stuff into NetconEthernetTap that is not used elsewhere. 2015-11-23 13:02:50 -08:00
Adam Ierymenko d8d4cfbf01 Eliminate a few warnings and some small code reorg. 2015-11-23 12:43:42 -08:00
Adam Ierymenko 34404eb300 Ignore more DLL patterns. 2015-11-23 12:34:46 -08:00
Adam Ierymenko 7a84805824 Uncommit binary... :P 2015-11-23 12:34:23 -08:00
Adam Ierymenko 1d4563ac31 A few very tiny bits of dead code removal, etc. 2015-11-23 12:32:20 -08:00
Adam Ierymenko a18336fa18 MERGE current "dev" into "netcon" -- should not affect netcon itself but will retest -- brings ZeroTier core up to 1.1.0 2015-11-23 10:46:52 -08:00
Adam Ierymenko 1e4a40e772 Reformat table. 2015-11-23 10:11:46 -08:00
Joseph Henry 6e5feaba3a Updated test files 2015-11-23 07:08:07 -08:00
Joseph Henry 71b38a48ac Replaced README 2015-11-23 06:22:09 -08:00
Joseph Henry 6a3f230555 Unit test info added to README 2015-11-23 06:20:01 -08:00
Joseph Henry a952ff2c61 Removed odd file 2015-11-23 06:11:19 -08:00
Joseph Henry 05e51f40b4 README formatting update. Removed odd files 2015-11-23 06:07:48 -08:00
Joseph Henry b83aefcf8f Updated README, fixed node.js test bug 2015-11-23 05:59:05 -08:00
Joseph Henry 8b9b593256 Removed old READMEs and OS files 2015-11-23 05:21:20 -08:00
Joseph Henry 275a76ff5c Test update 2015-11-23 05:15:19 -08:00
Joseph Henry 3d163f7044 Patch for Node.js -- accept() bug 2015-11-23 01:14:17 -08:00
Grant Limberg 764dd1c3d9 ARP packets do need the source IP address in them, as well as the MAC address.
Packets wouldn't even show up in WireShark without the source IP in it.
2015-11-21 19:14:59 -08:00
Grant Limberg ac09c3569a ARP packet lengths are 28 bytes. This condition required the packet to be 29 or more bytes. 2015-11-21 19:14:06 -08:00
Adam Ierymenko ce5b7f0305 The World as of 2015-11-20 2015-11-20 12:49:23 -08:00
Adam Ierymenko 1fde17bacb Update World to reflect Alice and Bob in their final glory. Will hot-push this soon. 2015-11-20 11:46:10 -08:00
Joseph Henry d472c59b8d Additional test files 2015-11-20 02:41:27 -08:00
Joseph Henry 126fc46dc4 Updated makefile, removed old results directory 2015-11-20 01:22:15 -08:00
Joseph Henry d2e624f301 Updated makefile, removed old results directory 2015-11-20 01:19:16 -08:00
Joseph Henry 7173b0124b Removed old test directory 2015-11-20 01:13:04 -08:00
Joseph Henry 1f27022fa7 Test/Code Refactor in preparation for merge 2015-11-20 01:08:38 -08:00
Joseph Henry 9a25a627bb WIP: Unit tests -- more generalization 2015-11-19 17:34:56 -08:00
Adam Ierymenko 375aae44e4 . 2015-11-19 16:36:15 -08:00
Joseph Henry 31bc5e1559 WIP: Unit tests 2015-11-19 16:21:59 -08:00
Joseph Henry b1100b3d13 WIP: Automated tests 2015-11-19 16:14:27 -08:00
Grant Limberg 399b2e9e26 forgot to submit this. Add DeferredPackets.cpp to the android makefile 2015-11-17 19:16:10 -08:00
Adam Ierymenko 6f16f44438 VERSION 1.1.0: Win/Mac UI improvements, improved NAT-t, CIRCUIT_TEST, and more!
ZeroTier 1.1.0 introduces a number of fixes and improvements in several areas.
We incremented the secondary version to indicate the significance of this release.

Version numbering has been a bit ad-hoc in the past. In future versions we will
adopt the following scheme: odd-numbered revision numbers like 1.1.1 will indicate
development versions, while even numbered ones like 1.1.2 will indicate tagged
releases. The public git repo branching has also been revised: master will always
be the latest tagged release, dev will be usually-working development, and edge
will host maybe-broken "bleeding edge" development. Pull requests on GitHub should
generally be made against dev, not master or edge. Other branches that may appear
from time to time may be feature or experimental branches. Only master is confirmed
good, with dev usually being okay but not guaranteed to be such. (To the extent
that any software is ever guaranteed to be anything.)

Change summary:

User-facing changes and improvements:

 - Windows now has a new .NET-based native UI, which replaces the old WebControl
   wrapper around the React UI. This just didn't work well on older Windows systems,
   and we did not want to bundle 40+ megabytes of web browser with our app just for
   its very simple UI.
 - The web UI (still used for Mac and usable in Linux as well) is updated with
   improved look and simplifications.
 - Both UIs no longer have the "Peers" tab, since several users reported that non-
   technical users found this confusing and even alarming (does this mean people
   can access my system?). This information is visibile with "listpeers" from the
   command line (zerotier-cli).

New features:

 - Virtual networks that use our RFC4193-based IPv6 numbering scheme now emulate
   IPv6 NDP for queries that target these addresses within the same network. This
   allows for faster multicast-free connection init and improved security since
   the address is now hard-wired to the device ID (which is a crypto token). This
   does not affect IPv6 NDP for other IPv6 addresses or link-local, which will
   continue to work normally. This also opens the potential for a reduced footprint
   multicast-free build for embedded applications.
 - This version includes beta support for a feature called CIRCUIT_TEST. Network
   controllers for networks you have joined can now send a special message called
   CIRCUIT_TEST which allows for ZeroTier-layer link testing and remote diagnosis
   of link issues. Any operator of a network controller can do this; more
   documentation will be forthcoming. The only information that may be gathered
   in this way is IP addressing info and very basic system info (OS, 32/64 bit,
   ZeroTier version). No personal information, hard drive data, location, or other
   private info is available. This can only be ordered by a controller of a network
   you have joined and is secured using cryptographic signatures.
 - This version includes an alpha version of clustering a.k.a. multi-homing! This
   powerful feature allows for a single ZeroTier device to be run from multiple
   endpoints, with connecting peers being handed off to endpoints that are closer
   via GeoIP lookup and/or are more lightly loaded. Currently this is only suitable
   for use in our soon-to-be-upgraded root server infrastructure (details will be
   blogged soon), but in the future it will be capable of hosting multi-homed
   devices on user networks. This will allow things like (for example) a geo-
   clustered Cassandra server that appears behind a single IP on a virtual LAN.
   This feature must be enabled with the ZT_ENABLE_CLUSTER=1 build option.

Bug fixes and other improvements (including performance!):

 - A faster version of the Poly1305 cryptographic MAC function was substituted
   for sometimes greatly improved performance.
 - C++ STL std::map was replaced throughout the entire core with a hand-rolled
   Hashtable implementation for improved performance and in some cases a reduced
   memory footprint. Some maps are still used in peripheral code that is not
   performance critical or where ordered keys are needed.
 - The zerotier-cli and zerotier-idtool symbolic links are now created in
   /usr/local/bin on OSX to comply with El Capitan file security restrictions.
 - The OSX tap device driver has been updated. This update may fix issues that
   some users have reported with bridging on OSX. This new tap device driver
   drops 32-bit support, but if you have a 32-bit system you can manually install
   the old driver from ext/bin/tap-mac.
 - Mac users could experience a problem with the UI if they installed ZeroTier,
   then uninstalled it, then installed again. This is now fixed.
 - UPnP port mappings should work better on some routers, and a different local
   port is now used for UPnP mapped traffic vs. NAT-t'd traffic to get around
   a bug in several popular mid-tier routers where using UPnP mapping alongside
   traditional NAT traversal made a port unreachable.
 - Debian package now builds with the right arch label on armv7l systems (Pi 2)
 - The old "root topology" has been replaced with a similar but better thought
   out concept called a World. The World defines the root servers and possibly
   in the future other things, and can be updated in-band from trusted peers
   allowing for software-upgrade-free network upgrades to keep up with growing
   demand. See node/World.hpp for details.
 - A fix was made to "self-awareness," which keeps track of your external IP
   info and adapts to changes, to eliminate a problem that could cause "link
   thrashing" behind some symmetric NATs.
 - Escalating UDP TTLs was re-introduced to better transit some port-restricted
   cone NATs such as Linux IP MASQ (used for Docker).
 - An otherwise harmless crash-on-exit bug in the network controller was fixed.
 - All new direct links are now confirmed in both directions. This adds a very
   small amount of initial HELLO/OK traffic but fixes some edge cases where an
   incomplete or unidirectional path might be used.
 - [SECURITY] Better rate limiting was put in place for VERB_PUSH_DIRECT_PATHS
   to prevent potential abuse for amplification attacks.
 - [SECURITY] Build flags were tweaked on OSX to ensure that all code including
   dependency libraries are built with full stack canary protection and ASLR
   support.

Visit https://www.zerotier.com/blog or follow @ZeroTier on Twitter for updates
and announcements!
2015-11-17 12:18:45 -08:00
Adam Ierymenko 1c0c3e62dc Just add a launch prerequisite for .NET 4.5 -- it's usually there, and if not it can be easily installed. This is mostly an issue on old Windows Server systems, and in that case the admin will likely want to decide how to proceed. 2015-11-17 11:13:44 -08:00
Adam Ierymenko 9169b6c999 Fix crash on exit in Windows (does not affect other OSes) and revert debugging tweak in Windows version that prevented service from starting after real install. 2015-11-17 09:56:19 -08:00
Joseph Henry a660ec490e Started work on automated unit test scripts 2015-11-17 02:28:23 -08:00
Joseph Henry f5c2600ca4 Added symbol checks in intercept. This seems wise after all 2015-11-16 23:57:19 -08:00
Adam Ierymenko 48745eca57 Fix ARM dpkg build. 2015-11-16 19:54:58 -08:00
Joseph Henry b0f6dc43b4 Revised fd RX logic 2015-11-16 19:53:59 -08:00
Adam Ierymenko 456bfea58d Real World -- edge now talks to real net. 2015-11-16 19:27:36 -08:00
Adam Ierymenko 0f5fb48a0b Turns out it wasn't hard to add miniupnpc to the VS2012 project and just have it build with the rest of the code. 2015-11-16 19:04:04 -08:00
Adam Ierymenko dc8edea0c6 Linux make rules to make libminiupnpc from source. 2015-11-16 18:33:52 -08:00
Adam Ierymenko cf6164e847 Build libminiupnpc from source now, and update version. 2015-11-16 18:28:55 -08:00
Adam Ierymenko a13a21377c Delete pre-build miniupnpc for Linux and Mac -- will add Make rules to build from source and include source in ext/ 2015-11-16 18:18:08 -08:00
Adam Ierymenko 37acd375d6 Fix 64-bit int warning. 2015-11-16 18:10:40 -08:00
Joseph Henry f2289544b7 Check for fork/clone and re-initialize in close() -- for nginx 2015-11-16 17:44:11 -08:00
Adam Ierymenko 7a53ecac86 UI stuff. 2015-11-16 17:18:44 -08:00
Adam Ierymenko 906e49ff72 Add make option ZT_ENABLE_CLUSTER and disable it in default Linux build. 2015-11-16 16:22:41 -08:00
Adam Ierymenko e4d1aba3f8 Use new OSX tap version, and update OSX install scripts. 2015-11-16 16:19:24 -08:00
Adam Ierymenko 38fe77ecf2 WebUIWrapper is dead. 2015-11-16 15:44:07 -08:00
Adam Ierymenko 8fde33d87c . 2015-11-16 14:45:17 -08:00
Adam Ierymenko 220552af62 GitHub issue #241 -- and also some appearance updates. Eventually this might get replaced by a native Mac app. 2015-11-16 14:30:25 -08:00
Adam Ierymenko 637d50a9de Write binary of world too. 2015-11-16 13:11:16 -08:00
Adam Ierymenko f5b465c0e1 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-16 11:13:02 -08:00
Adam Ierymenko 6ac70ba808 . 2015-11-16 11:01:19 -08:00
Adam Ierymenko 08cd603623 Code to generate real World for edge. 2015-11-16 10:58:40 -08:00
Adam Ierymenko ddf0cb0278 Docs and tweak some caching values. 2015-11-16 09:54:08 -08:00
Grant Limberg 75f8ee1b9c get the compiler to stop complaining about two string literals (one a macro) next to each other without an intervening space 2015-11-14 18:19:33 -08:00
Grant Limberg 0508a41afd added ttl parameter to WirePacketSendFunction 2015-11-14 17:40:17 -08:00
Adam Ierymenko 0d9f33dc4f Fix: (1) Windows stack overflow due to buffer too large in peer deserialize, (2) clean up some other stuff seen during debugging and reduce the sizes of some buffers due to Windows small stack size, (3) remove a redundant try/catch. 2015-11-13 12:14:28 -08:00
Adam Ierymenko 90f9415107 Update installer to drag along a net-install binary for .NET 4.5 that it runs if .NET 4.5 is not present... because yes we have to install Microsoft's own flagship runtime under some conditions. (Rare, but present.) 2015-11-13 09:11:12 -08:00
Adam Ierymenko 2ec638a23d New Windows UI tweaks: get rid of networks tab (only one tab!), make networks full width and make window narrower and a bit taller, colors, fixed-width fonts in several places, make network IDs selectable. 2015-11-12 17:38:30 -08:00
Joseph Henry a6cffefa6d Updated compatibility 2015-11-12 17:15:44 -08:00
Joseph Henry a818c622d9 Updated throughput_httpd docker test files 2015-11-12 16:57:45 -08:00
Adam Ierymenko ccae473783 Eliminate Windows warnings. 2015-11-12 16:51:33 -08:00
Adam Ierymenko 54f68280bd Minor Windows build fixes. Builds on VS2012 again. 2015-11-12 16:48:42 -08:00
Joseph Henry 7d8084262a Fixed rpc_st command alignment bug for RPC_SOCKET 2015-11-12 16:48:08 -08:00
Adam Ierymenko bacb53fe8f Remove old Windows NDIS5 tap driver -- I think this is dead. 2015-11-12 16:40:50 -08:00
Adam Ierymenko 33c132968e GitHub issue #219 -- make Linux makefile cross-compiler aware. 2015-11-12 15:37:32 -08:00
Adam Ierymenko 73e314cc1a Shelve pcap-with-bridge OSX experiment -- apparently pcap_inject does not work with bridge devices. Still have to use a kext. 2015-11-12 15:28:55 -08:00
Joseph Henry 6af54c5943 Minor debug updates 2015-11-12 14:49:20 -08:00
Joseph Henry fa7220ec0e Removed old Common.h 2015-11-12 14:35:58 -08:00
Joseph Henry d1a22a0878 Streamlined debug output code 2015-11-12 14:32:27 -08:00
Adam Ierymenko 8ac411a9e4 Stashing utun work for OSX -- abandoning for now since utun excludes mDNS among other issues. 2015-11-12 10:47:50 -08:00
Joseph Henry e5fad005a9 Updated RPC handling 2015-11-12 08:21:05 -08:00
Adam Ierymenko 0940d673db Always advertise to the cluster when we have a peer even if we have also initiated handoff. This might be the cause of the warmup problem -- will test later. At the very least it should not hurt anything due to pick-latest logic and the fact that cluster members with only suboptimal paths do not respond to WANT_PEER. 2015-11-11 14:36:22 -08:00
Adam Ierymenko b94335f115 Increase WHOIS retry delay slightly to allow for global cluster latency (e.g. 300+ms from New York to Johhannesburg) 2015-11-11 11:07:08 -08:00
Adam Ierymenko a13ba7102a GitHub issue #242 -- crappy uPnP protocol demands infinite lease time or else 2015-11-10 17:45:05 -08:00
Adam Ierymenko 451b8aa7b2 Query both root and network controller for multicast last resort GATHER. 2015-11-10 17:37:38 -08:00
Adam Ierymenko 53731acf51 Bracket by time in result cruncher script. 2015-11-10 17:15:06 -08:00
Adam Ierymenko 3b9411044f Patch tap-mac to latest tuntaposx upstream changes, and add updated build for 10.8 or later (keep old one for 10.7). 2015-11-10 16:00:21 -08:00
Adam Ierymenko 141e2db38c More results. 2015-11-10 15:47:18 -08:00
Adam Ierymenko 0cf4ddda4a Some more test results, and fix OSX installer to put symlinks in /usr/local as per El Capitan requirements. 2015-11-10 15:11:15 -08:00
Adam Ierymenko 0e4a2c378f Fix a sporadic warning in cluster-geo, and fix test to not overload the test-watcher. 2015-11-10 13:09:58 -08:00
Adam Ierymenko 2854f14966 Some cluster parameter tweaks, and change the test code in tests/http to dramatically reduce the amount of data transfer to/from the test master. Also add results of first successful 50k test. 2015-11-10 11:59:03 -08:00
Adam Ierymenko 4328c6c3bc Fix delete oldest logic. 2015-11-10 09:46:14 -08:00
Adam Ierymenko b171c9a0db Replace slow std::list<> with an O(log(N)) data structure for the cluster relaying send queue. 2015-11-10 09:05:01 -08:00
Joseph Henry 82a60b1e28 Fixed throughput build script 2015-11-09 20:16:27 -08:00
Joseph Henry 19f09e46fa Moved/Renamed Docker test dirs 2015-11-09 19:37:19 -08:00
root 134ad8ac21 Changed httpd version in throughput-test Dockerfile 2015-11-09 19:13:53 -08:00
Adam Ierymenko 32ec378e3b Announce that we have peers on the cluster when we first see them to improve startup times, and add a result crunching script to tests/http. 2015-11-09 18:01:23 -08:00
Adam Ierymenko 2cc50bdb10 Try bringing back TTL escalation -- may help with Docker (IP-MASQ) type NAT 2015-11-09 15:44:13 -08:00
Adam Ierymenko 94f4316a0e Fix for possible high CPU usage on multicast queries. 2015-11-09 14:54:05 -08:00
Adam Ierymenko 35c4e28f31 Mark geo-redirected paths as suboptimal and do not report that we have a peer if all we have is one of these. Also a few other small fixes. 2015-11-09 14:25:28 -08:00
Adam Ierymenko 47424df417 Fix (1) a deadlock bug and (2) a bug that prevented distributed rendezvous messages from being sent. 2015-11-09 13:39:06 -08:00
Adam Ierymenko 73e2c6e511 How did that ever work? 2015-11-09 12:24:49 -08:00
Adam Ierymenko 12cd9df059 . 2015-11-09 11:30:17 -08:00
Adam Ierymenko 4ad2ff2f71 . 2015-11-09 11:08:52 -08:00
Adam Ierymenko b57c855a8c PROXY_SEND fix. 2015-11-09 10:25:20 -08:00
Adam Ierymenko ed954c5ca2 . 2015-11-09 10:09:16 -08:00
Adam Ierymenko 21341ab15c Ready to test. 2015-11-09 09:45:43 -08:00
Adam Ierymenko f4d12603e0 Tweak how Switch passes off to Cluster on relay to fit new paradigm. 2015-11-09 09:19:03 -08:00
Adam Ierymenko ff81415ffe Build fixes... 2015-11-09 09:14:26 -08:00
Adam Ierymenko 5371195c80 Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-09 09:01:58 -08:00
Adam Ierymenko 473ce82040 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2015-11-09 09:01:41 -08:00
Adam Ierymenko ab013d831c . 2015-11-09 09:01:38 -08:00
Adam Ierymenko 57b71bfff0 Cluster simplification and refactor work in progress... 2015-11-08 13:57:02 -08:00
Adam Ierymenko 6bc8c9d8ef Clustering cleanup, still a work in progress. 2015-11-06 16:12:41 -08:00
Adam Ierymenko 5f39d5b7ea Further pare down Cluster messaging and rename some stuff. 2015-11-06 14:37:17 -08:00
Adam Ierymenko 9490b1f136 Try prioritizing cluster-send over direct send in cluster mode -- may improve cluster relaying reliability. 2015-11-06 13:38:56 -08:00
Adam Ierymenko badec136fc New agent master IP. 2015-11-06 11:55:06 -08:00
Adam Ierymenko 8ea5f424fd Small amount of cleanup. 2015-11-06 11:15:06 -08:00
Grant Limberg 3cafa60284 fix up some borders & colors 2015-11-05 19:44:19 -08:00
Grant Limberg 2415ae45c1 remove the peers page 2015-11-05 19:44:19 -08:00
Adam Ierymenko aa169b54de Add conntrack tweak to nf for testing. 2015-11-05 18:06:04 -08:00
Adam Ierymenko 83c6b7ab3d Use bigger UDP buffer on bigger x64 machines. Keep old value elsewhere since these are likely to be smaller boxes. 2015-11-05 17:41:07 -08:00
Adam Ierymenko ba5008c370 Now make cluster announcements slightly more frequent. 2015-11-05 17:28:55 -08:00
Adam Ierymenko 3fa1b5a89d Make cluster HAVE_PEER a little lighter by removing full identity. Technically this is not necessary and they will propagate over time in any case. Might restore it in some form in the future. 2015-11-05 17:22:22 -08:00
Adam Ierymenko 7603d8cee8 Merge branch 'edge' of http://git.int.zerotier.com/zerotier/ZeroTierOne into edge 2015-11-05 16:46:42 -08:00
Adam Ierymenko 869eff49bc . 2015-11-05 16:46:33 -08:00
Adam Ierymenko d9abc28fe3 . 2015-11-05 14:54:54 -08:00
Adam Ierymenko 3e22fee842 Integrate deferred background processing into main OneService implementation. 2015-11-05 12:41:14 -08:00
Adam Ierymenko 5ec5911e1b Merge branch 'edge' of http://10.6.6.2/zerotier/ZeroTierOne into edge 2015-11-05 12:23:06 -08:00
Adam Ierymenko 8ef4edebbf Deferred decode for HELLO to prevent HELLOcalypse under high load of new peers. 2015-11-05 12:22:58 -08:00
Grant Limberg 86c74d8a65 set manifest to require administrator privileges and read the authtoken and port from disk 2015-11-04 20:34:49 -08:00
Grant Limberg 49086e4556 just a little xaml cleanup 2015-11-04 20:31:41 -08:00
Grant Limberg 4c7bb06894 make the main window width a bit smaller 2015-11-04 20:19:14 -08:00
Grant Limberg f3e527e130 update the peer list in place rather than replacing it 2015-11-04 20:17:58 -08:00
Grant Limberg df74dd6e41 make the peers page prettier 2015-11-04 20:03:25 -08:00
Grant Limberg 5e9166cec7 setting width/height isn't necessary 2015-11-04 19:30:26 -08:00
Grant Limberg d2c288b13f Fix vertical scrolllbar on networks view 2015-11-04 19:12:12 -08:00
Grant Limberg fc32dc11a6 make the networks view a bit prettier 2015-11-04 19:08:13 -08:00
Grant Limberg 2721804ebf make the tabs a little prettier 2015-11-04 18:41:08 -08:00
Grant Limberg 7b86176d0e Don't go kaboom when the ZeroTier service isn't running. 2015-11-04 18:28:07 -08:00
Adam Ierymenko a95ff21aaf test stuff 2015-11-04 15:09:19 -08:00
Joseph Henry 3e84e8b8c3 Performance tweaks to lwipopts.h (TX=12MB/s) 2015-11-04 14:45:26 -08:00
Adam Ierymenko 9ec32e7926 Agent settings for big test. 2015-11-04 13:28:43 -08:00
Grant Limberg 7756b5bf1c Merge branch 'android-jni-dev' into edge 2015-11-03 19:15:00 -08:00
Grant Limberg eadeac0a42 logging of events 2015-11-03 19:14:11 -08:00
Joseph Henry 4b07987210 Added throughput-test Docker files 2015-11-03 18:10:39 -08:00
Adam Ierymenko 172fc1052b Merge windows-ui into edge. 2015-11-03 17:38:36 -08:00
Adam Ierymenko 523412edfb Abort backup in progress if thread is told to shut down. 2015-11-03 16:03:00 -08:00
Adam Ierymenko f7a407ffa0 Tweak timings and use lock in backup to make it a bit faster and still permit main thread to work. 2015-11-03 15:56:24 -08:00
Adam Ierymenko 7903f24a8f Create periodic backup copies of controller.db in network controller from the main process itself to facilitate easier and safer backups of controller.db. 2015-11-03 15:52:10 -08:00
Adam Ierymenko 4b655ab22c tests 2015-11-03 14:39:44 -08:00
Adam Ierymenko d9d11042ca . 2015-11-03 12:56:34 -08:00
Adam Ierymenko 0b245b031e Allow ZT_TRACE without debug. 2015-11-03 11:20:12 -08:00
Adam Ierymenko a42d714a87 . 2015-11-03 11:18:45 -08:00
Adam Ierymenko c9e6e60c09 Handle ZeroTier-RFC4193 IPv6 address NDP queries inline by spoofing responses if the addressing scheme matches -- this allows multicast-free instant lookup of local IPv6 for better performance and reliability. 2015-11-03 10:46:41 -08:00
Joseph Henry df391c8413 Added debug statements for transfer test 2015-11-03 10:30:18 -08:00
Joseph Henry 4c20fa4874 Added debug statements for transfer test 2015-11-03 10:26:10 -08:00
Grant Limberg b7df177f33 updates for origin/edge 2015-11-02 19:18:55 -08:00
Grant Limberg 179b064b05 Merge branch 'edge' into android-jni-dev 2015-11-02 18:32:21 -08:00
Grant Limberg a19e82fcbc Merge branch 'edge' into windows-ui 2015-11-02 18:30:54 -08:00
Joseph Henry ccbdb1a3a1 RPC command index fix 2015-11-02 16:09:28 -08:00
Adam Ierymenko 4e9d430476 Make root and relay selection somewhat more robust. 2015-11-02 16:03:28 -08:00
Joseph Henry 8d7b2cd486 Removed serv. conn. checks. 2015-11-02 15:52:12 -08:00
Adam Ierymenko 00dcb0f22c . 2015-11-02 15:39:09 -08:00
Adam Ierymenko 7fbe2f7adf Tweak some more timings for better reliability. 2015-11-02 15:38:53 -08:00
Joseph Henry fd33e0812c Added checks for bad service connection. 2015-11-02 15:31:57 -08:00
Adam Ierymenko 60ce886605 Tweak some timings for better reliability. 2015-11-02 15:15:20 -08:00
Adam Ierymenko ab27a91b07 . 2015-11-02 13:53:27 -08:00
Joseph Henry 24ffb22fa6 Changed default debug level 2015-11-02 13:26:59 -08:00
Joseph Henry da462bbd55 Removed curses dependency 2015-11-02 13:21:40 -08:00
Adam Ierymenko fd3916a49e More test stuff... make it more granular and less batch based. 2015-11-02 13:17:11 -08:00
Joseph Henry bb912cff30 More appropriate phyOnUnixClose handling 2015-11-02 12:50:32 -08:00
Adam Ierymenko e53ef9642e test stuff. 2015-11-02 12:31:34 -08:00
Joseph Henry 6338a4933b Fixed another closure bug. Updated debug levels 2015-11-02 12:30:18 -08:00
Adam Ierymenko 29249db5d2 Big test stuff. 2015-11-02 11:37:32 -08:00
Joseph Henry 4dbb84cea1 Fixed connection closure bug (ERR_ABRT from nc_recved) 2015-11-02 10:59:46 -08:00
Adam Ierymenko f1b6427e63 Decided to make this 1.1.0 (semantic versioning increment is warranted), and add a legacy hack for older clients working with clusters. 2015-11-02 09:32:56 -08:00
Joseph Henry db473beb48 Fixed accept return value / errno bug, also fdret_sock return bug 2015-10-30 17:00:30 -07:00
Adam Ierymenko 1b4cc4af5c Fix evil bug, and instrument/assert on some other stuff, and a bit of cleanup. 2015-10-30 15:54:40 -07:00
Adam Ierymenko 7382c328da Null pointer bug appears fixed... testing again at large scale. 2015-10-30 14:23:28 -07:00
Adam Ierymenko 641b0dec44 . 2015-10-30 14:12:20 -07:00
Adam Ierymenko 2fbb5d0bbf . 2015-10-30 14:11:45 -07:00
Adam Ierymenko d8dbbf7484 Add some debug code in TRACE mode to catch a bug. 2015-10-30 14:11:10 -07:00
Adam Ierymenko 377ccff600 getPeer() had a small potential to be unsafe. 2015-10-30 13:39:28 -07:00
Adam Ierymenko f974517f64 Save zerotier output in containers. 2015-10-30 13:06:30 -07:00
Adam Ierymenko f808138a94 docs and stuff 2015-10-30 13:05:34 -07:00
Adam Ierymenko b845dd1b88 Set contact IP for real test. 2015-10-30 12:38:12 -07:00
Adam Ierymenko b6725c4415 Optimize AntiRecursion. 2015-10-30 11:48:33 -07:00
Adam Ierymenko 5bfa29dded Make antirec tail len slightly shorter, better performance and still plenty long enough. 2015-10-30 11:09:40 -07:00
Adam Ierymenko 80e62ad291 docs 2015-10-30 10:55:05 -07:00
Adam Ierymenko e2fc20876d docs 2015-10-29 18:23:41 -07:00
Joseph Henry 96eb0ce492 Added state dump, fixed numerous RPC related bugs 2015-10-29 17:57:59 -07:00
Adam Ierymenko d6c0d176ee Periodically re-announce peers that we have. 2015-10-29 10:10:09 -07:00
Adam Ierymenko 9f0f0197fe More dead code removal. 2015-10-29 09:44:25 -07:00
Adam Ierymenko a994573a43 Eliminate some more dead code. We may do path trust, but not like that. 2015-10-29 09:42:15 -07:00
Adam Ierymenko 883c84bdb9 Tweak some timings, and remove some dead code. 2015-10-29 09:39:36 -07:00
Joseph Henry f6e0bdb2f2 Fixed PCB state issue when closing connection 2015-10-28 16:18:08 -07:00
Adam Ierymenko e3d811b04b docs 2015-10-28 15:55:40 -07:00
Adam Ierymenko cabb8752cb docs 2015-10-28 15:28:05 -07:00
Adam Ierymenko 1f5ef968cf Test need a more recent version of NodeJS so update Dockerfile. 2015-10-28 15:08:00 -07:00
Joseph Henry c8f27da294 Added support for MongoDB (server side) 2015-10-28 14:37:46 -07:00
Adam Ierymenko 68d6d3c4ff Fix bug in peer count. 2015-10-28 14:29:08 -07:00
Adam Ierymenko 4c24e0cfb0 More tweaks to tests... just about ready to run at scale. 2015-10-28 14:24:54 -07:00
Adam Ierymenko 9653531242 . 2015-10-28 14:18:58 -07:00
Adam Ierymenko 07c1b4ddee test stuff 2015-10-28 14:16:58 -07:00
Adam Ierymenko 1cae7327ae Basic Dockerfile for building test agents. 2015-10-28 13:35:52 -07:00
Adam Ierymenko c03550de35 HTTP test works! 2015-10-28 13:14:53 -07:00
Adam Ierymenko c6a918d996 HTTP test code. 2015-10-28 12:50:48 -07:00
Adam Ierymenko 0034efafe4 On semi-undocumented test net, assign a RFC4193 IPv6 address too. Will be useful for our at-scale tests. 2015-10-28 11:08:15 -07:00
Adam Ierymenko 0fd15d9cf3 Fix inverted sense bug. 2015-10-28 10:38:37 -07:00
Adam Ierymenko 938d0a970b TRACE build fixes. 2015-10-28 10:01:32 -07:00
Adam Ierymenko fdc3e103cc Cleanup and docs. 2015-10-28 09:38:33 -07:00
Adam Ierymenko c1b0329969 Only check IP equality to detect external surface changes (should prevent some spurious resets under symmetric NATs), and simplify some logic. 2015-10-28 09:32:07 -07:00
Adam Ierymenko da93712846 Clean up PUSH_DIRECT_PATH limits a bit more and make them a bit smarter. 2015-10-28 09:11:30 -07:00
Adam Ierymenko cdc99bfee1 Add a circuit breaker for VERB_PUSH_DIRECT_PATHS. 2015-10-27 18:18:26 -07:00
Adam Ierymenko 88b100e5d0 More cleanup. 2015-10-27 17:59:17 -07:00
Joseph Henry 21889305e0 Updated README.md 2015-10-27 17:41:51 -07:00
Joseph Henry 18db95d0e9 Updated README.md 2015-10-27 17:38:56 -07:00
Adam Ierymenko 51fcc75354 Some cleanup, and use getPeerNoCache() exclusively in Cluster. 2015-10-27 17:36:47 -07:00
Joseph Henry 721d58b464 Added support for Redis 2015-10-27 17:12:32 -07:00
Adam Ierymenko 4221552c0b Use getPeerNoCache() in Cluster to avoid keeping all peers cached everywhere. 2015-10-27 16:52:44 -07:00
Adam Ierymenko cc1b275ad9 Replicate peer endpoints and forget paths if we have them -- this allows two clusters to talk to each other, whereas forgetting all paths does not. 2015-10-27 16:47:13 -07:00
Adam Ierymenko cc6080fe38 (1) No need to confirm if we are a root (small optimization), (2) Refactor peer affinity tracking. 2015-10-27 15:57:26 -07:00
Adam Ierymenko 6399f6f094 This no longer has to be quite so fast. 2015-10-27 15:02:15 -07:00
Adam Ierymenko 218ef07d8e Build fix in TRACE mode. 2015-10-27 15:01:11 -07:00
Adam Ierymenko 16bc3e0398 Factor out RemotePath subclass of Path -- no longer needed, just cruft. 2015-10-27 15:00:16 -07:00
Adam Ierymenko 40976c02a4 Forget paths to peers if we are handing them off. 2015-10-27 14:37:38 -07:00
Adam Ierymenko f692cec763 Change how cluster relays packets -- just PROXY_UNITE and then send packet via normal ZeroTier front plane -- more efficient and eliminates fragmentation issues. 2015-10-27 14:04:12 -07:00
Adam Ierymenko 40e0a34a5c Add set buffer sizes code to Phy<> 2015-10-27 13:04:08 -07:00
Adam Ierymenko 7295fcfa86 Merge Phy<> from netcon. 2015-10-27 12:50:23 -07:00
Adam Ierymenko cfe166ef35 Tweak some size limits. 2015-10-27 12:29:01 -07:00
Adam Ierymenko 0ffbd05c0e --wtf; prevent roots from TCP fallback 2015-10-27 12:21:57 -07:00
Adam Ierymenko a1a0ee4edb Fix infinite loop in Cluster, clean up some stuff elsewhere, and back out rate limiting in PUSH_DIRECT_PATHS for now (but we will do something else to mitigate amplification attacks) 2015-10-27 12:01:00 -07:00
Adam Ierymenko 54a99d8e32 Well that was broken. 2015-10-27 11:14:07 -07:00
Adam Ierymenko 62db18b6dd Lessen this limit just a bit to make cluster settle faster. 2015-10-27 11:01:58 -07:00
Adam Ierymenko f32e9d07dd Don't include COM if not necessary (fix). 2015-10-27 10:58:01 -07:00
Adam Ierymenko 700c3166b7 Fix inverted sense bug. 2015-10-27 10:51:11 -07:00
Adam Ierymenko 17e7528e2c More root cleanup. 2015-10-27 10:40:31 -07:00
Adam Ierymenko 8a7a0b6b88 Cleanup, including simplification of root server picking algorithm since we no longer need all that craziness. 2015-10-27 10:37:39 -07:00
Adam Ierymenko 9617208e40 Some cleanup, and use VERB_PUSH_DIRECT_PATHS to redirect newer peers. 2015-10-27 09:53:43 -07:00
Adam Ierymenko fb3b7a3baa Take -DZT_ENABLE_CLUSTER out of Mac defaults. 2015-10-27 09:41:12 -07:00
Adam Ierymenko 69857b4ba8 Refactor cluster redirects to move code to push peers out of the actual Cluster function that checks for redirect, and clean up Peer::received() to be a bit more logical. 2015-10-27 09:36:48 -07:00
Grant Limberg 0ffcfa307e another build setting 2015-10-26 20:26:19 -07:00
Grant Limberg 16c812ec80 set the app icon for release 2015-10-26 20:24:08 -07:00
Grant Limberg 268fbdabce disable sorting of peers 2015-10-26 20:06:53 -07:00
Grant Limberg 87496e9f4a can now leave networks 2015-10-26 19:53:03 -07:00
Grant Limberg 300a951730 Figured out how to expand controls to fill parent. yay 2015-10-26 19:39:54 -07:00
Grant Limberg 095539de29 Initial peers page 2015-10-26 19:21:21 -07:00
Grant Limberg c4c67e591b add error handling for JSON serialization 2015-10-26 19:02:19 -07:00
Grant Limberg 502aa68bb7 change int to UInt64 for these properties 2015-10-26 19:01:59 -07:00
Grant Limberg 81cb4bc8d6 set up a timer to update the UI from a background thread 2015-10-26 18:31:10 -07:00
Adam Ierymenko e713f7a54c Can redirect in response to a few more verbs, just not these. 2015-10-26 18:20:40 -07:00
Grant Limberg 352b83252f Merge branch 'adamierymenko-dev' into windows-ui 2015-10-26 18:10:27 -07:00
Grant Limberg a0c3083af0 disallow paste of non hex characters 2015-10-26 18:08:44 -07:00
Adam Ierymenko 98d856daa2 Only send redirects to the sending InetAddress and only in response to a set of certain frame types to avoid potential race conditions. 2015-10-26 17:58:51 -07:00
Adam Ierymenko 8bfb02ba3c Only send redirects for the same address class, and elminiate some TRACE noise. 2015-10-26 16:55:55 -07:00
Adam Ierymenko 0b82c9ebad Fix infinite loop if there are no live roots (never happened before?!? wow!) 2015-10-26 16:09:56 -07:00
Adam Ierymenko de761c5a82 Fix test world def. 2015-10-26 15:47:32 -07:00
Adam Ierymenko 6cf1da166f Add the whole new World, though with test identities at this point. 2015-10-26 15:12:28 -07:00
Adam Ierymenko 6625d79296 Fix if cluster compiled in but not enabled. 2015-10-26 13:07:00 -07:00
Adam Ierymenko debed1ac2d Expose cluster status in /status JSON response. 2015-10-26 13:06:10 -07:00
Adam Ierymenko 5ff7733f84 More plumbing of cluster status. 2015-10-26 12:49:17 -07:00
Adam Ierymenko 865acfa40f Cluster status plumbing. 2015-10-26 12:41:08 -07:00
Adam Ierymenko 3ce5ad9e2c For forward compatibility, add minimal parse for some future physical address types. 2015-10-26 10:42:30 -07:00
Adam Ierymenko d2b1dfe424 Fully specify new network in alice-test, this will (with different identities) eventually become the World. 2015-10-23 15:51:50 -07:00
Grant Limberg 55dcf4c65f wire up the join network button 2015-10-23 15:50:49 -07:00
Grant Limberg 7e635d37ad only accept hex characters for network id 2015-10-23 15:49:04 -07:00
Grant Limberg b7b973624a add methods for joining/leaving networks, and getting peers 2015-10-23 15:37:36 -07:00
Grant Limberg 62059a91aa C#-ifying stuff 2015-10-23 15:36:42 -07:00
Adam Ierymenko 35676217e8 Refactor multicast group announcement to work directly or indirectly. 2015-10-23 14:50:07 -07:00
Joseph Henry 8cfee8a38c Changed to more appropriate APP_POLL_FREQ 2015-10-23 14:31:06 -07:00
Joseph Henry 80a73cb14b Minor cleanup 2015-10-23 14:23:04 -07:00
Adam Ierymenko e9648a6cdf Clarify logic in pinging, and prevent roots from pinging "down." 2015-10-23 14:05:12 -07:00
Adam Ierymenko e6a63f5547 Fix bug in setWorld that might have caused a peer entry for myself (which would never be used) 2015-10-23 13:57:02 -07:00
Joseph Henry b48ed824e6 Improved RPC connection closure logic 2015-10-23 13:37:41 -07:00
Adam Ierymenko 29b966894c (1) Fix bug in geo-ip service that prevented cache lookup, (2) fix problem in SelfAwareness (will need to test ALL versions in the wild with this), and (3) add more TRACE instrumentation to Cluster. 2015-10-23 13:03:34 -07:00
Adam Ierymenko f0160635a2 Add --harmony for older nodeJS. 2015-10-23 12:05:17 -07:00
Adam Ierymenko 964b30902a Cluster fix: was accumulating remote endpoints endlessly. 2015-10-23 11:51:18 -07:00
Adam Ierymenko 2a3dd53952 . 2015-10-22 17:50:00 -07:00
Joseph Henry 236e474553 Unload lwipstack->_libref upon exit 2015-10-22 16:26:29 -07:00
Adam Ierymenko dee6e7e3c1 . 2015-10-22 16:11:48 -07:00
Adam Ierymenko 7711eba297 More cluster wiring... 2015-10-22 16:02:01 -07:00
Joseph Henry 2f4628520b Improved RPC connection cleanup logic 2015-10-22 13:20:50 -07:00
Joseph Henry b203d25656 PhySocket NULL check added to handle_write. Fixed after-close handle_write segfault 2015-10-22 12:40:01 -07:00
Adam Ierymenko 1bc451ed10 GeoIP cluster service works. 2015-10-22 10:41:15 -07:00
Adam Ierymenko e07bae2525 Run geoip cluster service sub-process. 2015-10-22 10:18:05 -07:00
Adam Ierymenko 5304b0d8d1 Rename index.js so process is distinguishable. 2015-10-22 09:09:15 -07:00
Grant Limberg fe6960888a add a scroll bar to the network info view 2015-10-21 20:40:43 -07:00
Grant Limberg 5b6ddaa2d7 Base windows UI is working.
* No joining/leaving networks yet, but they do display.
* Nothing is updated yet after first load of the app.  Need to set up a background task to run updates.
2015-10-21 20:29:03 -07:00
Grant Limberg 6471c1f4e2 Merge branch 'adamierymenko-dev' into windows-ui 2015-10-21 17:35:38 -07:00
Joseph Henry 8e7e409fce Updated netcon README 2015-10-21 16:56:39 -07:00
Joseph Henry 1458dc8347 set O_NONBLOCK default in accept() 2015-10-21 16:32:27 -07:00
Joseph Henry 303579cb42 Added Node.js support 2015-10-21 16:27:17 -07:00
Adam Ierymenko a46514b397 Cluster-geo launcher. 2015-10-21 12:47:02 -07:00
Adam Ierymenko 25a84e30fc Code for cluster-geo service. 2015-10-21 12:41:46 -07:00
Adam Ierymenko 978b056a01 Wire in redirectPeer(), now about ready to test clustering! 2015-10-20 17:36:10 -07:00
Adam Ierymenko 6a7b47e5e1 Forgot a return true. 2015-10-20 17:27:57 -07:00
Adam Ierymenko d6dee7bb5c Clustered handling of relaying. 2015-10-20 17:22:53 -07:00
Adam Ierymenko 35a12b94ea Outfit Cluster with TRACE for debugging. 2015-10-20 16:48:49 -07:00
Adam Ierymenko 2258e36a59 Move replication of COMs to avoid race condition. 2015-10-20 16:34:21 -07:00
Adam Ierymenko 59e1444b27 Finish wiring up Cluster, fix some issues with other recent changes. 2015-10-20 16:31:41 -07:00
Adam Ierymenko eb79d4a2f3 Wire up peer announcement in cluster. 2015-10-20 16:24:21 -07:00
Adam Ierymenko 57e29857cf Cluster work -- integrating with the rest of the code. 2015-10-20 15:27:53 -07:00
Grant Limberg 21ae423feb . 2015-10-19 21:19:23 -07:00
Grant Limberg 9ba5c91d4a initial layout for network info 2015-10-19 21:17:18 -07:00
Grant Limberg 80d02d189a set the main window icon 2015-10-19 20:30:21 -07:00
Grant Limberg 56267b2aed setting icon and a few other settings 2015-10-19 20:29:06 -07:00
Grant Limberg 6040574d8d set up project and base UI for a native windows UI for ZeroTier 2015-10-19 20:20:42 -07:00
Adam Ierymenko 5e6eae620b Make _members dynamically allocated due to static array limit on ARM. 2015-10-19 16:18:57 -07:00
Adam Ierymenko 69dad37d8f Restore default World for commit to upstream 2015-10-19 15:23:43 -07:00
Adam Ierymenko cfdcce6d12 Fix very obscure IP scope classification logic bug. 2015-10-19 15:19:04 -07:00
Adam Ierymenko 0b2e5ed499 Fix some broken logic in Path::reliable() 2015-10-19 15:11:43 -07:00
Adam Ierymenko 9150778757 . 2015-10-19 15:04:26 -07:00
Adam Ierymenko 50f3ccd3c9 . 2015-10-19 15:03:58 -07:00
Adam Ierymenko 584072fa6a Fix for V4/V6 stable addressing. 2015-10-19 14:04:36 -07:00
Adam Ierymenko 3adb183c5f Fix bad COM attachment bug and eliminate an unnecessary redundant check. 2015-10-19 13:38:27 -07:00
Adam Ierymenko 95953b48f9 Do not allow VERB_RENDEZVOUS from non-upstream peers to block potential DOS vector. 2015-10-19 12:56:29 -07:00
Adam Ierymenko aa6e3c79a0 Some test stuff that will not be pushed elsewhere. 2015-10-19 10:49:31 -07:00
Adam Ierymenko 0c43d34ce3 World test stuff... some of this will be yanked before release. 2015-10-19 10:00:35 -07:00
Joseph Henry 8b03965912 Added status debugs 2015-10-16 19:30:01 -04:00
Janjaap Bos 82e0abc4be Fix for cross compiling 2015-10-17 00:15:10 +02:00
Joseph Henry 0405ba1ccf Misc changes 2015-10-16 18:02:07 -04:00
Adam Ierymenko 738fa5a5e5 . 2015-10-16 12:10:57 -07:00
Joseph Henry b96c08f35c Fixed nginx listen() bug 2015-10-16 14:43:38 -04:00
Adam Ierymenko cc4d0199e7 Fix vProto init. 2015-10-16 10:58:59 -07:00
Adam Ierymenko 781f06ef82 Accept OK for confirm of HELLO or ECHO. 2015-10-16 10:48:38 -07:00
Adam Ierymenko f9f60f89d9 Peer save/restore fix. 2015-10-16 10:45:58 -07:00
Adam Ierymenko 5ce3aac929 Add rate limit on receive of DIRECT_PATH_PUSH to prevent DOS exploitation. 2015-10-16 10:28:09 -07:00
Adam Ierymenko 2229e91b57 IPv6 support fixes. 2015-10-16 10:10:12 -07:00
Adam Ierymenko 2debde3451 GitHub issue #235, and I also see no reason not to communicate with people from other Worlds. 2015-10-15 07:22:17 -07:00
Joseph Henry 3e8e025704 Minor cleanup items 2015-10-14 19:55:21 -04:00
Adam Ierymenko a775ee7d31 . 2015-10-14 16:21:39 -07:00
Adam Ierymenko 9ece8c465e decrypt fix 2015-10-14 15:49:41 -07:00
Joseph Henry 499d1628c7 Improved error coverage 2015-10-14 17:59:11 -04:00
Adam Ierymenko 59389b3dce Untested cluster code, not enabled. 2015-10-14 14:17:55 -07:00
Adam Ierymenko 619e113748 Work in progress on Cluster for new root infrastructure, multi-homing. 2015-10-14 14:12:12 -07:00
Joseph Henry e722eab892 Disabled TCP listen backlog, must be enabled in lwipopts.h 2015-10-14 17:03:32 -04:00
Joseph Henry 9ca699c86d Added support for listen backlogs 2015-10-14 16:04:26 -04:00
Joseph Henry d45db0f5af Fixed premature connection close bug 2015-10-14 15:46:22 -04:00
Joseph Henry 0b5a2a7594 Removed character from NEtconEthernetTap.cpp 2015-10-14 13:49:13 -04:00
Joseph Henry 831a513b2d Normalized cases 2015-10-14 13:47:35 -04:00
Adam Ierymenko c312ae221f Fix for world size in OK(HELLO) 2015-10-14 10:45:33 -07:00
Joseph Henry a35b6589d2 Removed lowercase intercept.h conflicting file 2015-10-14 13:43:12 -04:00
Adam Ierymenko 719233617c Add uint16_t key to Hashtable, and make Salsa20 zero its keyspace on destruction. 2015-10-14 10:14:07 -07:00
Joseph Henry 3c8e74023f Inconsequential. Updated commends, added debug statements 2015-10-13 20:20:45 -04:00
Joseph Henry 71c6ec71e5 connect() now checks socket family 2015-10-13 19:27:19 -04:00
Joseph Henry 1fd04557c7 Refactored connect(), added checks to socket(), updated checklists 2015-10-13 19:12:12 -04:00
Joseph Henry aa6ff039c4 Improved bind() logic, added more error handling to accept() 2015-10-13 18:33:56 -04:00
Joseph Henry 8a05efa365 EBADF, EOPNOTSUPP, EMFILE error repoarting for accept() 2015-10-13 17:57:17 -04:00
Joseph Henry da536cc311 Improved error reporting 2015-10-13 17:37:54 -04:00
Joseph Henry 0912d4be59 Fixed socket protocol check logic in socket() 2015-10-13 17:05:11 -04:00
Adam Ierymenko 489e1a5b83 Don't keep connections up longer than the alive timeout (unless they are relays or roots) 2015-10-13 13:51:54 -07:00
Adam Ierymenko 824ed99160 . 2015-10-13 12:42:54 -07:00
Adam Ierymenko 385f1410d2 Expose world info in JSON. 2015-10-13 12:33:15 -07:00
Adam Ierymenko 70d8e3ad94 Expose world ID and world timestamp in ZT_NodeStatus 2015-10-13 12:31:38 -07:00
Adam Ierymenko 71348f3ebb docs 2015-10-13 12:29:01 -07:00
Adam Ierymenko e268d9492a cleanup 2015-10-13 12:18:47 -07:00
Adam Ierymenko 123c466843 Full integration of World and World updates. 2015-10-13 12:17:47 -07:00
Adam Ierymenko 5d2f523e81 World stuff... 2015-10-13 12:10:44 -07:00
Joseph Henry 73145de618 Added some parameter checks from linux kernel syscall source 2015-10-13 14:27:30 -04:00
Adam Ierymenko 05677f57e2 Add C output to mkworld. 2015-10-13 08:55:21 -07:00
Adam Ierymenko cae58f43f1 More World stuff, and mkworld. 2015-10-13 08:49:36 -07:00
Joseph Henry 82052459a2 Odds and ends 2015-10-12 21:50:41 -04:00
Joseph Henry 4e1e857949 Minor bug fixes 2015-10-12 21:26:32 -04:00
Adam Ierymenko 1b1945c63e Work in progress on refactoring root-topology into World and adding in-band updates. 2015-10-12 18:25:29 -07:00
Joseph Henry 8d1b01cb5b Bug fix: Connection fd lookup in service 2015-10-12 20:46:59 -04:00
Adam Ierymenko 70fe7dd1fd cleanup 2015-10-12 16:40:57 -07:00
Joseph Henry 5dffa43201 Additional retval+errno handling 2015-10-12 19:29:27 -04:00
Joseph Henry 6b1a38f14c Better retval+errno handling 2015-10-12 16:38:08 -04:00
Joseph Henry fe8e7ded8c retval+errno return test 2015-10-09 20:27:38 -04:00
Adam Ierymenko eff1fe3c61 Create files for each hop (more convenient) and fix a packet parse bug. 2015-10-09 16:22:34 -07:00
Adam Ierymenko 7d01fab132 Reorg fields to be in same order as FS scheme. 2015-10-09 15:18:01 -07:00
Adam Ierymenko c9295a5883 . 2015-10-09 15:12:05 -07:00
Adam Ierymenko aec13b50fd Be a bit more verbose in circuit test reports to more clearly track current and upstream hop in graph traversal history. 2015-10-09 15:05:26 -07:00
Adam Ierymenko a95fa379cc Circuit tests basically work but need some tweaks, and fix some issues found with valgrind. 2015-10-09 14:51:38 -07:00
Joseph Henry 07536216c2 Removed netcon/.depend 2015-10-09 17:36:27 -04:00
Joseph Henry 3bcb6bf321 Minor cleanup 2015-10-09 17:31:22 -04:00
Joseph Henry 7f56678d84 Added liblwip.so and libintercept build files 2015-10-09 17:06:09 -04:00
Adam Ierymenko 97dee9de36 Add more helpful example stuff. 2015-10-09 12:50:52 -07:00
Joseph Henry e3ec000e93 Added intercept build file and sources 2015-10-09 15:41:16 -04:00
Adam Ierymenko 6b5bb0b278 Eliminate format string warnings. 2015-10-09 12:22:13 -07:00
Adam Ierymenko e33adad8f5 Script to quickly generate test docker env files. 2015-10-09 12:15:42 -07:00
Joseph Henry 769bad3320 Test: Added handle_write call to nc_poll 2015-10-09 15:05:45 -04:00
Adam Ierymenko 9a25651151 . 2015-10-09 10:14:45 -07:00
Adam Ierymenko c2bbec2f05 Docker example (and useful for testing) 2015-10-09 10:14:20 -07:00
Adam Ierymenko 0c498556d5 Unroll Salsa20 fully for a little more speed (non-SSE now almost as fast as SSE) 2015-10-09 09:39:27 -07:00
Adam Ierymenko 3fa6dd377f docs 2015-10-09 08:51:57 -07:00
Joseph Henry 6600b005b6 No Whack! 2015-10-08 21:24:51 -04:00
Joseph Henry b5b57aca02 Whack! 2015-10-08 21:04:47 -04:00
Adam Ierymenko 160278c489 Little bit of reorg in Salsa20 which seems to speed things up very slightly. 2015-10-08 17:42:53 -07:00
Joseph Henry d868a234da Refactored write logic 2015-10-08 19:38:29 -04:00
Adam Ierymenko 59da8b2a4b Logging of circuit test results to disk. 2015-10-08 15:44:06 -07:00
Joseph Henry 41dfbe544f Removed exit(0) for debugging 2015-10-08 18:10:10 -04:00
Joseph Henry bbfc9359e9 Minor timer changes (~21 Mb/s local) 2015-10-08 17:55:58 -04:00
Adam Ierymenko 558775d544 Merge branch 'adamierymenko-dev' of http://10.6.6.2/zerotier/ZeroTierOne into adamierymenko-dev 2015-10-08 13:26:43 -07:00
Adam Ierymenko a3876353ca Abiltiy to post a test via the controller web API, and parsing of CIRCUIT_TEST_REPORT messages. 2015-10-08 13:25:38 -07:00
Adam Ierymenko 273f0d18b0 docs 2015-10-08 09:05:25 -07:00
Grant Limberg 9347d6c866 Make it so ZeroTierOne.h can be used with a C compiler again. 2015-10-07 18:04:40 -07:00
Adam Ierymenko fea1b6b2c3 docs 2015-10-07 16:25:08 -07:00
Adam Ierymenko 0ce0bc00d2 Make sure received() gets called for some new messages, and docs. 2015-10-07 16:20:54 -07:00
Adam Ierymenko 69b44bf9a5 Finally add an ECHO. 2015-10-07 16:11:50 -07:00
Adam Ierymenko 73cafbe0ec Limit proof of work difficulty to something sane. 2015-10-07 13:46:44 -07:00
Adam Ierymenko e5f168f599 Add proof of work request for future DDOS mitigation use. 2015-10-07 13:35:46 -07:00
Adam Ierymenko 7d62dbe9f7 Tune NAT-t keepalives so that timing is better obeyed, clean up a build warning, and fix a potential source of network recursion (though harmless). 2015-10-07 11:57:59 -07:00
Adam Ierymenko 13f14c2f4c Kill debug line. 2015-10-07 10:56:47 -07:00
Adam Ierymenko c952fbbd8d Only enable 128-bit Poly1305 on X86_64 right now. Has compilation issues on ARM, but the 64-bit version should be fine. 2015-10-07 10:40:59 -07:00
Adam Ierymenko ab0228f626 More cleanup and simple refactoring, consolidate InetAddres serialize/deserialize into the class. 2015-10-07 10:30:47 -07:00
Adam Ierymenko 6c7ce79c89 Be consistent in how enums are defined in the main .h file. 2015-10-07 09:51:35 -07:00
Adam Ierymenko 1b2cac0cc5 Trim some cruft that is not used and probably never would be. 2015-10-07 09:38:33 -07:00
Joseph Henry 1bc33ae8d7 Minor debug output changes 2015-10-06 21:22:08 -04:00
Adam Ierymenko 598a1d8dd7 Try reopening /dev/urandom if there is a problem. 2015-10-06 18:10:40 -07:00
Adam Ierymenko 64aaea3978 Cleanup, and add an even faster Poly1305 on systems that support it. 2015-10-06 18:04:53 -07:00
Adam Ierymenko 876aa0883d Merge branch 'adamierymenko-dev' into netcon 2015-10-06 17:56:47 -07:00
Adam Ierymenko 477feee8a3 Some work on CIRCUIT_TEST, and a significant speedup to Poly1305. 2015-10-06 17:55:57 -07:00
Joseph Henry 36db5865e7 Refactored tcp_write code - Reduced CPU usage to respectable levels 2015-10-06 20:32:48 -04:00
Adam Ierymenko 7394ec6f6a Prep in controller code to run tests. 2015-10-06 15:56:18 -07:00
Adam Ierymenko 3593fb3462 Send initial CIRCUIT_TEST packet. 2015-10-06 15:16:41 -07:00
Adam Ierymenko d3f29d09e8 Plumbing through circuit test stuff. 2015-10-06 14:42:51 -07:00
Adam Ierymenko 5341afcdcd Handling of CIRCUIT_TEST, should be ready to test. 2015-10-06 11:47:16 -07:00
Adam Ierymenko 57c857e89a Fix TRACE output. 2015-10-06 06:57:00 -07:00
Grant Limberg c16ad053b6 no toString() method on peer. Commenting out for now. 2015-10-02 19:39:46 -07:00
Grant Limberg 6080a45c9c change cert to com. no variable named cert. 2015-10-02 19:39:13 -07:00
Adam Ierymenko 5384f185ae Simplify Dictionary and reduce memory usage, now no more std::maps in core. 2015-10-01 18:12:16 -07:00
Adam Ierymenko 76a95dc58f The return of peer peristence. 2015-10-01 17:09:01 -07:00
Adam Ierymenko 5076c49210 Peer serialization and related changes. 2015-10-01 15:40:54 -07:00
Adam Ierymenko 72e7e36a5b No reason to randomly pick uPnP secondary port. In fact it would likely cause problems on restarts and uPnP rule bloat. 2015-10-01 14:40:28 -07:00
Adam Ierymenko 2fa21aa676 . 2015-10-01 13:43:57 -07:00
Adam Ierymenko 3999e468b7 Need to hold nconf so *com does not die while being used. 2015-10-01 13:43:15 -07:00
Adam Ierymenko 6693149f3e Send COM with MULTICAST_GATHER for future use. 2015-10-01 13:34:12 -07:00
Adam Ierymenko 2c196307ee --bugs; 2015-10-01 13:01:18 -07:00
Adam Ierymenko d6676a9d6c Always announce multicast groups, not just to peers with direct links, and push network COMs to any MULTICAST_LIKE recipient for future use. 2015-10-01 12:50:19 -07:00
Adam Ierymenko a7409850d6 Get trim() out of core where it is not needed. 2015-10-01 12:37:18 -07:00
Adam Ierymenko 53e5f94b99 . 2015-10-01 12:25:43 -07:00
Adam Ierymenko 64bf3ffe6c Mutex cleanup. 2015-10-01 11:44:09 -07:00
Adam Ierymenko 9405150b11 Restore group announcement on Peer::receive() but centralize packet composition in one place. 2015-10-01 11:37:02 -07:00
Adam Ierymenko a3db7d0728 Refactor: move network COMs out of Network and into Peer in prep for tightening up multicast lookup and other things. 2015-10-01 11:11:52 -07:00
Adam Ierymenko 11ff96ba1d Consider IPv6 paths reliable (no constant keepalives needed) 2015-09-30 15:20:08 -07:00
Adam Ierymenko 0d0039674f Add new verb names, and fix some Mac compiler flags. 2015-09-30 14:48:07 -07:00
Adam Ierymenko 789046ca57 Speed up Salsa20 just a bit. 2015-09-30 14:35:05 -07:00
Adam Ierymenko 1a4f16e0ed More work on circuit testing... 2015-09-30 13:59:05 -07:00
Joseph Henry 4983fd3776 Recompiled ZTO binary with fix + moves index.html to var/www 2015-09-29 14:32:07 -04:00
Adam Ierymenko cc10d4f310 Speed up multicast group checking/registration. 2015-09-29 10:31:41 -07:00
Adam Ierymenko 167a5039d0 . 2015-09-28 23:40:20 -07:00
Adam Ierymenko 4b82171a95 . 2015-09-28 22:16:58 -07:00
Adam Ierymenko b4624237af . 2015-09-28 22:14:32 -07:00
Adam Ierymenko 49f93a57bf . 2015-09-28 17:07:46 -07:00
Adam Ierymenko ea71738c72 Entry point stuff... 2015-09-28 16:36:20 -07:00
Joseph Henry 49956ed63d Updated intercept library for Earth 2015-09-28 19:31:32 -04:00
Adam Ierymenko 280fcc3771 add cr after identity in demo script. 2015-09-28 16:15:17 -07:00
Adam Ierymenko 3a6346f560 More entry point work, and change network to 8056c2e21c000001 for demo. 2015-09-28 16:14:32 -07:00
Adam Ierymenko 980d145f48 Entry point changes to wait for ZT startup, print banners, log output debug messages and trace to files. 2015-09-28 15:31:47 -07:00
Adam Ierymenko a7bd1eaa40 Never assign v4 IPs ending in .255 even within range. 2015-09-28 15:28:30 -07:00
Joseph Henry 1773dca9dc Optimized Dockerfile arrangement 2015-09-28 17:59:54 -04:00
Joseph Henry 8e3e830e89 Working intercepted Apache 2015-09-28 17:47:38 -04:00
Joseph Henry 77b385fb12 Re-added Apache to Dockerfile 2015-09-28 17:30:18 -04:00
Joseph Henry 0b34d8e75e New Dockerfile 2015-09-28 16:56:14 -04:00
Joseph Henry 0c3dd2be96 Fixed apache script 2015-09-27 21:48:38 -04:00
Joseph Henry 444481f6d9 Modified Dockerfile 2015-09-27 21:26:57 -04:00
Joseph Henry 299ec12b39 Added docker-test folder 2015-09-27 21:16:02 -04:00
Joseph Henry b21c5d8e51 Added dockerfile 2015-09-27 20:51:32 -04:00
Adam Ierymenko 2d0adb562d Specify circuit test messages. 2015-09-27 11:37:39 -07:00
Joseph Henry 3bc9530db7 Object-Model refactor: Removed notion of Client 2015-09-27 06:08:39 -04:00
Grant Limberg 75a191a856 don't create an InetSocketAddress on local address if it's equal to ZT_SOCKADDR_NULL 2015-09-26 14:10:45 -07:00
Grant Limberg 7c3be2b5c1 fix function signature in lookup for onSendPacketRequested function 2015-09-26 14:10:16 -07:00
Grant Limberg 0b9e5928d3 update PacketSender interface 2015-09-26 13:53:38 -07:00
Grant Limberg e8cdff3eaf Merge branch 'adamierymenko-dev' into android-jni-dev
also update for changed function calls that now accept a local address

# Conflicts:
#	include/ZeroTierOne.h
#	java/CMakeLists.txt
#	java/jni/Android.mk
#	java/jni/ZT1_jnicache.cpp
#	java/jni/ZT1_jnilookup.h
#	java/jni/ZT1_jniutils.cpp
#	java/jni/com_zerotierone_sdk_Node.cpp
2015-09-26 13:47:55 -07:00
Joseph Henry fe78eb77d4 Fixed another closure bug 2015-09-24 19:22:56 -04:00
Adam Ierymenko f69454ec98 (1) Make ZT_ naming convention consistent (get rid of ZT1_), (2) Make local interface a full sockaddr_storage instead of an int identifier, which turns out to be better for multi-homing and other uses. 2015-09-24 16:21:36 -07:00
Joseph Henry 8a8264bc39 Fixed their_fd closure bug 2015-09-24 17:33:25 -04:00
Joseph Henry 1119f64a77 Fixed connection closure issue 2015-09-24 17:10:30 -04:00
Joseph Henry c25ceaf06b Fixed recursive lock problem in closeConnection 2015-09-24 16:15:14 -04:00
Adam Ierymenko b263926ea6 thread fixes. 2015-09-24 13:02:10 -07:00
Adam Ierymenko 84747b1a14 thread fixes... 2015-09-24 13:01:19 -07:00
Joseph Henry 9396b8d53c Minor debug changes 2015-09-24 15:56:48 -04:00
Joseph Henry 37497ec2a8 Minor changes 2015-09-24 15:31:11 -04:00
Joseph Henry 851e4c667f Minor changes 2015-09-24 15:30:07 -04:00
Adam Ierymenko 9feeafd757 Make LWIPStack thread safe. 2015-09-24 12:29:10 -07:00
Joseph Henry 0027a1e152 Merge branch 'netcon' of http://10.6.6.2/zerotier/zerotierone into netcon 2015-09-24 14:33:49 -04:00
Joseph Henry 65af5af138 Added debug statements 2015-09-24 14:33:15 -04:00
Adam Ierymenko 557d2b3b0d Make LWIPStack clean up properly. 2015-09-24 11:11:16 -07:00
Adam Ierymenko fbde40d1fc Merge branch 'adamierymenko-dev' into netcon 2015-09-24 11:00:22 -07:00
Joseph Henry 557c0c29b0 minor changes 2015-09-23 19:45:44 -04:00
Adam Ierymenko 0e5aac6a11 Prefer IPv6 paths if available. 2015-09-23 16:16:36 -07:00
Adam Ierymenko b242216674 Version bump, preparing for a likely 1.0.6 soon. 2015-09-23 16:10:06 -07:00
Adam Ierymenko 423412df98 Pick a random secondary UDP port for uPnP mapped traffic because of broken routers. 2015-09-23 15:16:20 -07:00
Joseph Henry c85dd262ed moved lib files to ext 2015-09-23 18:03:21 -04:00
Joseph Henry 02d5a31822 added lwip unix port lib files 2015-09-23 17:55:15 -04:00
Adam Ierymenko 7821d1cbdd . 2015-09-23 14:44:13 -07:00
Adam Ierymenko 80dc7fb675 Pick random port on -p0 2015-09-23 14:38:16 -07:00
Adam Ierymenko a3ed5277ef Make sure ZT_NO_TYPE_PUNNING also obeyed here. 2015-09-23 14:09:27 -07:00
Adam Ierymenko 2a527ea82e Fix for timer jitter problem. 2015-09-23 14:01:41 -07:00
Adam Ierymenko 367ffde00c Plumb through localInterfaceId to track local interfaces corresponding with remote addresses. 2015-09-23 13:49:56 -07:00
Joseph Henry bbdb8eb0de more commenting and cleaning 2015-09-23 15:23:26 -04:00
Joseph Henry b6a6346405 commenting and cleanup 2015-09-23 14:23:36 -04:00
Adam Ierymenko 4464fa5d39 Eliminate another warning. 2015-09-23 10:29:05 -07:00
Adam Ierymenko 86996d4315 Eliminate compiler warning. 2015-09-23 10:27:53 -07:00
Joseph Henry 07cef1bdb8 misc cleanup 2015-09-22 19:53:36 -04:00
Adam Ierymenko 69f006f641 . 2015-09-22 16:02:02 -07:00
Adam Ierymenko d656e87395 Send a random small payload for NAT keepalives, since zero byte packets seem to fail to keep associations alive behind some NATs. 2015-09-22 15:58:00 -07:00
Joseph Henry 3cb8070980 it's alive! -- hooked up new fd-handling code 2015-09-22 18:44:54 -04:00
Adam Ierymenko ff7ac0487b . 2015-09-22 15:16:38 -07:00
Adam Ierymenko 19c0923a86 Merge branch 'adamierymenko-dev' into netcon 2015-09-22 15:11:51 -07:00
Adam Ierymenko 6ce64c2557 Phy<> loses socketpair, gains raw FD monitoring. 2015-09-22 15:11:32 -07:00
Joseph Henry 3ed5edb295 fixed fd-transfer logic bug, needs new write-queue logic 2015-09-22 17:43:20 -04:00
Joseph Henry c3dbae8d5e more debugs 2015-09-22 13:35:37 -04:00
Joseph Henry b2494b53e6 adjusted output size for packets 2015-09-22 13:27:27 -04:00
Joseph Henry f091a074d4 output lengths 2015-09-22 13:25:24 -04:00
Joseph Henry f80d65286c more debug statements 2015-09-22 13:21:33 -04:00
Adam Ierymenko 0271e3d3ac . 2015-09-22 10:00:00 -07:00
Joseph Henry 00cb8dbda8 timer change 2015-09-22 12:48:53 -04:00
Joseph Henry 025069de7e timer change 2015-09-21 20:51:35 -04:00
Joseph Henry 86673bd6d6 fixed minor bugs and added debug outputs 2015-09-21 19:39:26 -04:00
Adam Ierymenko ddf3d1f949 Controller side support for IPv6 assignment. 2015-09-18 13:35:00 -07:00
Adam Ierymenko 3664966340 Generate local IPv6 addresses from network IDs and addresses. 2015-09-17 21:30:32 -07:00
Joseph Henry cb6864f04a updated nc_accept and lwip.so 2015-09-15 20:32:00 -04:00
Joseph Henry 701e1654a1 moved IP/netif allocation code 2015-09-15 19:06:16 -04:00
Joseph Henry 732de5bf7f some cleanup 2015-09-15 18:47:40 -04:00
Joseph Henry 11731af45a it's alive! 2015-09-15 18:27:52 -04:00
Joseph Henry 735ae9b369 debug changes 2015-09-15 15:41:57 -04:00
Joseph Henry cb277f52e8 Merge branch 'netcon' of http://10.6.6.2/zerotier/zerotierone into netcon 2015-09-15 14:16:28 -04:00
Joseph Henry 8ea83c9548 netif code hooked up 2015-09-15 14:15:59 -04:00
Adam Ierymenko 610ab0750c Drop Sqlite-based Log table for now and switch to an in-memory log for recent activity. Log table gets too big on busy nodes. Should probably support push of events to some kind of event system later. 2015-09-15 10:59:23 -07:00
Adam Ierymenko d06499a50c Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-14 12:00:03 -07:00
Adam Ierymenko ef316ced3b Fix JSON. 2015-09-14 11:59:43 -07:00
Adam Ierymenko 0617b17534 Merge branch 'netcon' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-14 11:36:01 -07:00
Grant Limberg f7d3e262a9 ifdef default assignments 2015-09-11 17:16:38 -07:00
Joseph Henry 8189b2ba91 retval fix 2015-09-11 19:29:35 -04:00
Joseph Henry e73868bc5a various segfault fixes 2015-09-11 19:02:44 -04:00
Joseph Henry 6f0bc1f676 added debugs, fixed linux makefile 2015-09-11 18:22:41 -04:00
Adam Ierymenko 88898c68d7 Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-11 15:02:38 -07:00
Adam Ierymenko cd005341c5 Extra statement to clean up Members -- cascade did not seem to work, possibly due to dual key. 2015-09-11 15:02:26 -07:00
Joseph Henry bc666d0ab7 added pbuf alloc block 2015-09-11 15:26:39 -04:00
Adam Ierymenko 933b47389d Add Arp to netcon build. 2015-09-11 12:19:48 -07:00
Adam Ierymenko a8d7a31327 Integrate arp into NetconEthernetTap. 2015-09-11 12:12:45 -07:00
Joseph Henry c2226cf0df added TRACEs 2015-09-11 14:47:16 -04:00
Adam Ierymenko 5f6eb2ce98 Merge branch 'adamierymenko-dev' into netcon 2015-09-11 11:46:44 -07:00
Adam Ierymenko c1a53a2653 ARP cache and responder agent code for use in netcon and iOS. 2015-09-11 11:45:04 -07:00
Joseph Henry 776f93e7be closeConnection / closeClient changes 2015-09-11 14:12:27 -04:00
Joseph Henry 5a5a513b18 small method changes 2015-09-11 14:00:42 -04:00
Joseph Henry cc4a2bb0c3 filled out hendlers 2015-09-10 20:34:48 -04:00
Joseph Henry e4dc46741f compiles, technically 2015-09-10 20:22:35 -04:00
Joseph Henry 20beafedc5 refactor almost complete 2015-09-10 20:02:13 -04:00
Adam Ierymenko 8d82ac5cc8 Merge branch 'adamierymenko-dev' into netcon 2015-09-10 15:56:15 -07:00
Adam Ierymenko 9dc2ef5549 Rename some stuff in Phy since it can be used with any stream socket. 2015-09-10 15:55:48 -07:00
Adam Ierymenko cd3d77987c . 2015-09-10 15:52:24 -07:00
Joseph Henry b11d429bc0 refactor in progress 2015-09-10 18:48:45 -04:00
Joseph Henry e391bc004b refactor in progress 2015-09-10 18:19:43 -04:00
Adam Ierymenko a35fa7ac93 Add expansion of netconf in _test field. 2015-09-10 15:14:10 -07:00
Adam Ierymenko bebe3d7cfa Fix deadlock in test mode. 2015-09-10 14:47:04 -07:00
Joseph Henry c1f1530d54 refactor in progress 2015-09-10 17:44:01 -04:00
Adam Ierymenko 1f7a41cff8 Fix to allowing identity to be populated if not present. 2015-09-10 14:37:34 -07:00
Joseph Henry f4d3c995bc refactor in progress 2015-09-10 16:52:18 -04:00
Adam Ierymenko 637da383f5 Remove unnecessary accessors. 2015-09-10 13:22:44 -07:00
Adam Ierymenko 389ea272a0 Merge adamierymenko-dev 2015-09-10 13:20:00 -07:00
Adam Ierymenko 9a723be263 Add socketpair support to Phy. 2015-09-10 13:18:57 -07:00
Joseph Henry 3802d37d29 started refactor 2015-09-10 15:46:37 -04:00
Joseph Henry 750352836f initial commit 2015-09-10 13:56:01 -04:00
Adam Ierymenko a43c3fbf2e Merge branch 'adamierymenko-dev' into netcon 2015-09-09 09:54:39 -07:00
Adam Ierymenko 4fbcad2468 Allow identity to be populated for newly inserted Member objects to permit transfer from old network controller and testing. 2015-09-08 13:02:42 -07:00
Adam Ierymenko 0d386f1c31 Add a bit of useful testing instrumentation to SqliteNetworkController. 2015-09-08 11:35:55 -07:00
Adam Ierymenko 85b90f122a Final std::map<> from Switch, and add some smallish default values for hash size. 2015-09-04 15:35:43 -07:00
Adam Ierymenko 3dba016a93 Almost done... very few std::map<>s remaining in any spot that matters. 2015-09-04 15:21:22 -07:00
Adam Ierymenko db0369e9b8 Remove way-overkill multimap from Switch. 2015-09-04 14:56:39 -07:00
Adam Ierymenko 0ab3e49be9 Starting in on Switch... kill map in defrag queue, which will probably improve performance pretty decently under high load with lots of peers. 2015-09-04 14:44:22 -07:00
Adam Ierymenko f116c4b9c0 ... and another ... 2015-09-04 14:24:31 -07:00
Adam Ierymenko 307e44f7c8 Two for one! (std::map removal) 2015-09-04 14:14:32 -07:00
Adam Ierymenko d1341578d8 ... and another one! 2015-09-04 13:53:48 -07:00
Adam Ierymenko 7b8ce16057 Another std::map<> dies. 2015-09-04 13:42:19 -07:00
Adam Ierymenko 3a959a7763 Swap out std::map<> for Hashtable<> for main peer database in Topology. (ongoing std::map-ectomy) 2015-09-04 12:14:21 -07:00
Adam Ierymenko cfd101c9b8 Add entries() to go with keys() for future use. 2015-09-04 11:50:12 -07:00
Adam Ierymenko ca6ec120a9 Merge branch 'netcon' of http://git.int.zerotier.com/zerotier/zerotierone into netcon 2015-09-03 18:45:07 -07:00
Adam Ierymenko 88ba39b162 Merge branch 'adamierymenko-dev' into netcon 2015-09-03 18:44:57 -07:00
Adam Ierymenko da9a720c3f Hash table bug fix, and add copy constructor and assignment operator for principle of least surprise. 2015-09-03 17:33:06 -07:00
Adam Ierymenko 10707c3673 build fix 2015-09-03 16:44:04 -07:00
Adam Ierymenko b9d4b42f93 A few more fixes, ready to integrate main payload. 2015-09-03 16:05:18 -07:00
Adam Ierymenko bf4cab5f2f Netcon build fixes. 2015-09-02 16:31:13 -07:00
Adam Ierymenko 1f4c667646 Netcon mode for Linux (in this branch, will make conditional later) 2015-09-02 16:15:22 -07:00
Adam Ierymenko dfb08ec753 More netcon stuff, and Phy build fix. 2015-09-02 15:51:28 -07:00
Adam Ierymenko 4626175d11 Stub of NetconEthernetTap 2015-09-02 15:17:38 -07:00
Adam Ierymenko 4838cbc350 Unix domain sockets in Phy<> 2015-09-02 14:32:01 -07:00
Grant Limberg 53d98343b7 Merge branch 'master' into android-jni 2015-08-31 19:53:39 -07:00
Grant Limberg 73bedfcc01 ifdef default assignments 2015-08-29 17:54:30 -07:00
Grant Limberg d5b48c90ed added a 512x512 app icon (for Play store) 2015-08-27 19:51:27 -07:00
Grant Limberg ebfbb7f452 Merge branch 'master' of http://git.int.zerotier.com/ZeroTier/ZeroTierOne into android-jni 2015-08-27 19:31:46 -07:00
Adam Ierymenko b11ffc9635 Integrate Hashtable into Multicaster, where @mwarning found heaviest std::map() overhead. 2015-08-27 16:17:21 -07:00
Adam Ierymenko 3947807b1f A simple and fast Hashtable, tested but not yet integrated with anything. 2015-08-27 15:36:13 -07:00
Adam Ierymenko 5db538d85e VERSION 1.0.5: Windows and Linux (upgrade) bug fixes
Version 1.0.5 is a very minor release. It includes a new build of the Windows
device driver that supports Windows Vista and 2008 Server, and a fix to prevent
an issue that could occur when updating Linux installations from old pre-1.0.3
versions to 1.0.3 or 1.0.4.

It also includes a few very minor fixes and improvements to the controller code,
which doesn't affect most users.

This second commit just bumps version.h. :)
2015-08-25 09:55:14 -07:00
Adam Ierymenko a9176d7b62 VERSION 1.0.5: Windows and Linux (upgrade) bug fixes
Version 1.0.5 is a very minor release. It includes a new build of the Windows
device driver that supports Windows Vista and 2008 Server, and a fix to prevent
an issue that could occur when updating Linux installations from old pre-1.0.3
versions to 1.0.3 or 1.0.4.

It also includes a few very minor fixes and improvements to the controller code,
which doesn't affect most users.
2015-08-25 09:47:37 -07:00
Adam Ierymenko b4487cefc9 Document rules requirement in controller. 2015-08-25 09:46:59 -07:00
Adam Ierymenko 867258de8b Document clock convenience field. 2015-08-25 09:44:21 -07:00
Adam Ierymenko 5fcef91278 Ignore old root-topology if present -- fix for upgrading on Linux and possibly elsewhere. 2015-08-25 09:42:37 -07:00
Adam Ierymenko 2aa1b5d9b7 Add clock helper field to both member and network to permit time duration calculation easily. 2015-08-24 12:44:07 -07:00
Adam Ierymenko 9a5be0a092 typo 2015-08-24 11:24:33 -07:00
Adam Ierymenko 4da794b389 Add authorizedMemberCount to controller network config records. 2015-08-19 11:43:56 -07:00
Adam Ierymenko 0a5429cab0 Lookup of member must be a left outer join in case the member is being manually inserted before we see the node. 2015-08-17 21:08:02 +00:00
Grant Limberg 7d676ad16a Merge branch 'adamierymenko-dev' into android-jni 2015-08-13 19:36:30 -07:00
Adam Ierymenko b75bdedaee Manually set DeviceInstanceID since this registry key is missing on Windows Vista and Server 2008. 2015-08-13 15:52:54 -07:00
Adam Ierymenko 085734aaba Windows driver (NDIS6) rebuild using earlier DDK revision to allow driver to load in Windows 2008 Server and Windows Vista. Still issues with those platforms, but driver loads -- and shouldn't hurt newer versions (will test). 2015-08-13 15:18:48 -07:00
Grant Limberg 0fd6808e21 Merge branch 'master' into android-jni 2015-08-01 11:52:47 -07:00
Adam Ierymenko bf193dd3cf VERSION 1.0.4: Stability, LAN, and NAT traversal improvements
ZeroTier One version 1.0.4 brings several improvements to stability,
connectivity between hosts on the same LAN, and NAT traversal.

Direct connectivity improvements:

 - ZeroTier One now opens port mappings using uPnP and/or NAT-PMP
   if they are available on your network. These are then made
   available to other (1.0.4 or newer) nodes. This should greatly
   improve direct connectivity success rates for users on networks
   that support port mapping. To build with this option, you must
   include ZT_USE_MINIUPNPC=1 on the make path. Pre-build binaries
   are included for many common architectures to make this easier.

 - A new message has been introduced whereby nodes can "push" IP
   address suggestions to other nodes. This is only done to nodes
   with whom you have a trust relationship, which right now means
   they are members of a network you've joined. The IP addresses
   sent include local interface addresses and possibly uPnP mappings
   if any are available. When nodes receive pushed IPs, they can
   attempt connectivity at these addresses. This greatly improves
   connectivity on local LANs, since the old broadcast mechanism
   proved too unreliable under many real world scenarios.

 - IPv6 addresses are also "pushed" via the aforementioned message,
   allowing direct connectivity over IPv6 if both hosts have an
   IPv6 address.

 - Some of the aggressive port-scanning NAT-t behavior has been
   removed, since this occasionally triggered intrusion alarms on
   some networks and proved ineffective in the field. uPnP will be
   a much bigger win, and is less "hacky."

 - The rate of (tiny) UDP keepalive packet generation was slightly
   increased. We were as surprised as you to learn that there are
   many NAT routers in the wild with timeouts as short as 20 seconds
   even though the RFC stipulates that they should be no shorter
   than two minutes (120 seconds).

All of these connectivity improvements rely upon a new message
introduced with 1.0.4, so they'll only work between 1.0.4 nodes.
Older methods of connectivity establishment will continue to work
with earlier versions.

Platform-specific improvements:

 - Many improvements have been made to Windows support and stability.
   The NDIS6 driver is now used exclusively. If you have ports that
   use NDIS5, these will automatically be re-created using the NDIS6
   driver. You may see a "select this network's type" notification
   after 1.0.4 upgrade for this reason.

 - The dependency on the external "devcon.exe" binary on Windows has
   been completely removed in favor of internal direct calls to the
   Windows setup API to add and remove network ports. These are done
   via dynamically loaded instances of the system setup DLLs to use
   the most recent setup API code on your system for improved
   compatibility.

 - This version is tested with Windows 10 release, and was confirmed
   to work on a clean install.

 - The ARM32/Raspbian build is now back to using Debian Wheezy for
   library backward compatibility (binary build only).

 - The Mac icon is now a bit smaller to look better in the dock.

 - The ui/ subfolder is now distributed with the Linux binary installer
   and packages. This means Linux users can navigate to the UI at
   http://127.0.0.1:9993/ and enter their authtoken.secret to use
   the GUI locally. (This port could also be accessed via SSH port
   forwarding or other mechanisms to administrate graphically from a
   remote system.)

Other improvements:

 - The new beta SQLite-backed controller microservice found in
   controller/ and built with the ZT_ENABLE_NETWORK_CONTROLLER=1 make
   option is now in a much more "working" state. Feel free to give
   it a try! If you tried it before, delete controller.db before
   starting the new version.

 - A few tweaks were made to the path selection logic in the hope of
   eliminating some flaky network behavior reported by users.

The next version of ZeroTier One will focus on performance and memory
footprint reduction, and may also include perfect forward security/secrecy
(a.k.a. PFS) once our design is finalized and reviewed.
2015-07-31 11:33:52 -07:00
Adam Ierymenko facb009a1d Add security notice to auto-update info in -h output, and fix a missing paren. 2015-07-31 09:50:55 -07:00
Adam Ierymenko 8d09c37140 Remove a bit of redundant logic, and also announce MULTICAST_LIKEs to controllers (for future use). 2015-07-31 09:37:13 -07:00
Adam Ierymenko f6ced547be Dead code removal. 2015-07-31 08:56:31 -07:00
Adam Ierymenko c826cec1d4 Bring back _winPokeAHole() to dynamically allocate firewall exception. Shouldn't be needed but seems to help on Windows 8. 2015-07-30 17:52:35 -07:00
Adam Ierymenko 620562f7cf Because Windows, because Windows. Now it upgrades correctly from 1.0.1, including automatic driver update from NDIS5 to NDIS6. Also a bit more robust on creating new ports, just in case. 2015-07-30 17:00:57 -07:00
Adam Ierymenko 922d9657b9 Save enumeration of statically assigned IPs so they will always be reassigned on device "power cycle." 2015-07-30 14:10:32 -07:00
Adam Ierymenko 499b2dccad 1.0.4 installer GUID 2015-07-30 13:30:10 -07:00
Adam Ierymenko 1e3d5c4d87 Suppress icacls output on lockDownFile(). 2015-07-30 12:05:56 -07:00
Adam Ierymenko 6f46f0e0e1 Because Windows. 2015-07-30 11:57:48 -07:00
Adam Ierymenko 8169b35482 Kill the devcon.exe dependency by dynamically loading cfgmgr32, newdev, and setupapi and using these functions directly. 2015-07-30 11:31:38 -07:00
Grant Limberg c9b4028cd3 Merge branch 'adamierymenko-dev' into android-jni 2015-07-29 20:13:32 -07:00
Adam Ierymenko 7cd3c419ee 1.0.4 release installer changes 2015-07-29 16:17:52 -07:00
Adam Ierymenko fa03d50e90 Rebuild Mac UI wrapper with smaller icon and a small UI fix. 2015-07-29 15:58:16 -07:00
Adam Ierymenko 0dff741310 Add border around Mac icon so it looks better in Finder. 2015-07-29 15:53:05 -07:00
Adam Ierymenko fcc5bf1e66 Go ahead and spec out controller DB support for AuthToken -- GitHub issue #211 -- even though full implementation won't make it into 1.0.4. 2015-07-29 15:09:23 -07:00
Grant Limberg 508d31513a Merge branch 'adamierymenko-dev' into android-jni 2015-07-28 19:18:33 -07:00
Adam Ierymenko 7578b56298 docs 2015-07-28 17:22:59 -07:00
Adam Ierymenko 2599b1bacc Add CLI support for /explicit/urls (automatically outputs JSON in this case), and some cleanup. 2015-07-28 17:10:56 -07:00
Adam Ierymenko e3983f8a57 Get rid of -I on Mac and Linux since we include miniupnpc headers by direct path reference. 2015-07-28 16:51:46 -07:00
Adam Ierymenko 14264c2d6f Add miniupnpc builds for Windows, fix some Windows build warnings. 2015-07-28 16:50:18 -07:00
Adam Ierymenko 3c54187c40 Linux x86 libminiupnpc.a 2015-07-28 15:56:37 -07:00
Adam Ierymenko 7df4eb69b5 Linux x64 libminiupnpc.a 2015-07-24 17:49:56 -07:00
Adam Ierymenko 559e384130 Linux make support for libminiupnpc. 2015-07-28 15:37:18 -07:00
Adam Ierymenko ebe5c526bb libminiupnpc.a for arm6l 2015-07-28 15:05:04 -07:00
Adam Ierymenko 5097aae716 Add miniupnpc to third party libs. 2015-07-28 14:50:24 -07:00
Adam Ierymenko 569c5e77fd Add binary build of libminiupnpc for Mac x64. 2015-07-28 14:48:26 -07:00
Adam Ierymenko 9c87decba6 Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev 2015-07-28 14:32:46 -07:00
Adam Ierymenko fe6d5b1402 UPNP/NAT-PMP support with libminiupnpc (if built with it) -- GitHub issue #64 2015-07-28 14:32:02 -07:00
Adam Ierymenko eea8d58afa docs,cleanup 2015-07-28 12:39:03 -07:00
Adam Ierymenko 21e6850722 Cancel NAT-t attempts if peer is no longer "alive" 2015-07-28 12:18:59 -07:00
Adam Ierymenko 5986d83738 Kill more kittens. 2015-07-28 12:04:14 -07:00
Adam Ierymenko 4564dd95ff Revert... no luck with any of that. 2015-07-28 12:00:50 -07:00
Adam Ierymenko d2bfdfa6e7 Play with NAT-t tweaks some more. 2015-07-28 11:57:18 -07:00
Adam Ierymenko b69afa010e Disable type punning on ARM by ifdef. 2015-07-28 11:50:01 -07:00
Adam Ierymenko 708aac1ea7 Remove some left over debug code, and fix attempt to send to self if we are an active bridge. 2015-07-28 11:43:09 -07:00
Adam Ierymenko 17bfd4d55e Add TRACE for NAT-t debugging. 2015-07-28 11:32:34 -07:00
Adam Ierymenko b31071463c Try another NAT traversal improvement. 2015-07-28 11:28:47 -07:00
Adam Ierymenko dda376c9eb Nuke some abandoned code. 2015-07-28 11:16:43 -07:00
Adam Ierymenko 40d5c79b62 Enable SO_NO_CHECK if available to skip UDP checksum on packet send for slight performance improvement. We do our own cryptographically secure authentication so UDP checksum is worthless. 2015-07-28 10:29:25 -07:00
Adam Ierymenko 1537109514 Merge branch 'master' into adamierymenko-dev 2015-07-28 09:40:54 -07:00
Adam Ierymenko 66c74f0ad9 Merge pull request #215 from nelsonjchen/patch-2
Update Application Mac Menu. Small MacGap leftover.
2015-07-28 09:39:42 -07:00
Adam Ierymenko 821f1f366e Fix to NAT escalation sequence. 2015-07-27 17:34:58 -07:00
Adam Ierymenko e99eda4a4a Fix IP scoping bug, and disable remotely reported surface push... not helping. :( 2015-07-27 17:28:13 -07:00
Adam Ierymenko fadb291962 Fix infinite loop typo. 2015-07-27 17:14:49 -07:00
Adam Ierymenko f0003ea922 Push remote surface as reported by peers along with known interface direct paths to assist with (some) NAT traversal. (trying this, may back out if not effective) 2015-07-27 17:02:43 -07:00
Adam Ierymenko e30ba3e138 Eliminate some aggressive port scanning NAT-t behavior that has proven ineffective. 2015-07-27 16:43:27 -07:00
Adam Ierymenko 7a15d8a7e3 Fix leaving of networks to actually call Network::destroy(). 2015-07-24 14:50:44 -07:00
Adam Ierymenko dba91eaa09 Apply same Linux compiler-picker logic to Mac. 2015-07-24 13:17:41 -07:00
Adam Ierymenko d57ea671d7 Add version to log. 2015-07-24 09:59:17 -07:00
Adam Ierymenko d647a587a1 (1) Fix updating of network revision counter on member change.
(2) Go back to timestamp as certificate revision number. This is simpler
    and more robust than using the network revision number for this and
    forcing network revision fast-forward, which could cause some peers
    to fall off the horizon when you don't want them to.
2015-07-23 17:18:20 -07:00
Adam Ierymenko a493fc23f4 Fix for make-linux: detect whether CC/CXX were explicitly overridden, and if not then use the gcc/clang selection logic. Otherwise ?= breaks this. 2015-07-23 13:05:18 -07:00
Adam Ierymenko b3516c599b Add a rate limiting circuit breaker to the network controller to prevent flooding attacks and race conditions. 2015-07-23 10:10:17 -07:00
Adam Ierymenko 3ba54c7e35 Eliminate some poorly thought out optimizations from the netconf/controller interaction,
and go ahead and bump version to 1.0.4.

For a while in 1.0.3 -dev I was trying to optimize out repeated network controller
requests by using a ratcheting mechanism. If the client received a network config
that was indeed different from the one it had, it would respond by instantlly
requesting it again.

Not sure what I was thinking. It's fundamentally unsafe to respond to a message
with another message of the same type -- it risks a race condition. In this case
that's exactly what could happen.

It just isn't worth the added complexity to avoid a tiny, tiny amount of network
overhead, so I've taken this whole path out.

A few extra bytes every two minutes isn't worth fretting about, but as I recall
the reason for this optimization was to save CPU on the controller. This can be
achieved by just caching responses in memory *there* and serving those same
responses back out if they haven't changed.

I think I developed that 'ratcheting' stuff before I went full time on this. It's
hard to develop stuff like this without hours of sustained focus.
2015-07-23 09:50:10 -07:00
Nelson Chen b41079ddf9 Update Application Mac Menu. Small MacGap leftover.
Hide ZeroTier One, not MacGap. 

Just a papercut.
2015-07-22 22:40:43 -07:00
Adam Ierymenko e2a2993b18 Add a Log table to log queries for debugging and security logging. No JSON API support for querying the log yet, but will probably come via /network/###/member/###/log/... or something. 2015-07-22 14:01:49 -07:00
Adam Ierymenko 8ca885d27c Merge pull request #212 from keesbos/fix
Fix for output of empty (no members) network
2015-07-22 09:34:17 -07:00
Grant Limberg bc0954381c Merge branch 'adamierymenko-dev' into android-jni 2015-07-21 17:53:39 -07:00
Adam Ierymenko 7c761dea72 Fix to member listing: I wanted an object with member IDs as keys and member revisions as values, not an array. 2015-07-21 14:12:22 -07:00
Adam Ierymenko 3f8a5b8b76 List members in the form of a hash of member ID and member revision so code can quickly detect which members have changed. 2015-07-21 13:38:59 -07:00
Adam Ierymenko a061aa3d87 Remove "members" from Network record and instead enumerate members via specific query to /network/nwid/member sub-path. More RESTful, scalable, and compatible with how OnePoint code works. 2015-07-21 12:57:01 -07:00
Adam Ierymenko b343eac10d Fix IP auto-assign bug due to missing subnet routes. 2015-07-21 12:42:43 -07:00
Adam Ierymenko 649a12472b Report controllerInstanceId in all objects so that controller resets can be easily detected by whatever is using the service. 2015-07-21 10:39:29 -07:00
Grant Limberg d05e8a9772 Merge branch 'adamierymenko-dev' into android-jni 2015-07-20 19:51:58 -07:00
Adam Ierymenko cac6be87ba Fix bug in rules JSON output. 2015-07-20 16:31:37 -07:00
Adam Ierymenko 38d34a7495 Proper handling of NULL entry for etherType in rules table. 2015-07-20 15:11:53 -07:00
Adam Ierymenko fb4c3dd8d4 Fix string overwrite bug. 2015-07-20 14:31:33 -07:00
Adam Ierymenko 1ffd67e014 Get rid of false foreign key in Relay. 2015-07-20 14:28:30 -07:00
Adam Ierymenko 8c18c60c00 sp. 2015-07-17 15:30:13 -07:00
Adam Ierymenko bca8886ff8 IP assignment pool range bug fix. 2015-07-17 15:09:28 -07:00
Adam Ierymenko 1f7bb67069 Fix some SQL and make instanceId more robustly random. 2015-07-17 13:09:53 -07:00
Adam Ierymenko 712e2785f2 Fix bad JSON in response. 2015-07-17 12:24:42 -07:00
Adam Ierymenko 5515909c1e Add a concept of an "instanceId" to the controller, which the OnePoint can use to determine whether it is the same running database instance it already knows. 2015-07-17 10:47:21 -07:00
Grant Limberg 5ef806c43c Fix addLocalInterfaceAddress call in OneService on Windows 2015-07-16 19:20:43 -07:00
Grant Limberg 1e8ead441c Merge branch 'adamierymenko-dev' into android-jni 2015-07-16 18:09:57 -07:00
Adam Ierymenko 0db7c94c90 Add memberRevision stuff to JSON output, and update docs. 2015-07-16 17:42:47 -07:00
Adam Ierymenko 99969b186b Add a concept of a member revision counter to networks. This can be used to select all members that have been added or changed since a given point. 2015-07-16 17:34:03 -07:00
Adam Ierymenko f9f7de0ec7 Networks don't need their ID as a default name. 2015-07-14 15:54:56 -07:00
Adam Ierymenko d27c14af48 Don't allow zero as a network number. 2015-07-14 12:32:57 -07:00
Adam Ierymenko 88949a750f Workaround for uclibc missing map::operator==() 2015-07-13 11:39:55 -07:00
Adam Ierymenko 547b1c6157 Add additional TRACE output in pushDirectPaths. 2015-07-13 10:35:33 -07:00
Adam Ierymenko 0b354803f3 Clean up some YAGNI issues with implementation of GitHub issue #180, and make best path choice aware of path rank. 2015-07-13 10:03:04 -07:00
Adam Ierymenko 0b9524f23d Merge branch 'adamierymenko-dev' of http://git.int.zerotier.com/zerotier/zerotierone into adamierymenko-dev 2015-07-13 09:30:02 -07:00
Adam Ierymenko 4bf3bcbd55 Fixes to PUSH_DIRECT_PATHS. 2015-07-13 09:29:51 -07:00
Adam Ierymenko 3f0eca72f7 ZT_TRACE build fix. 2015-07-13 08:36:22 -07:00
Adam Ierymenko fe20f0d7cd Put back legacy code to listen for LAN announcements to support same network location with pre-1.0.4 clients. 2015-07-13 08:33:02 -07:00
Adam Ierymenko d78e3bb307 Disable HTTP test in selftest since it works, and GitHub issue #207. 2015-07-13 07:42:20 -07:00
Grant Limberg e45475c5b5 fixed a misspelling 2015-07-09 20:26:23 -07:00
Grant Limberg a408e5f685 set ZT_NO_TYPE_PUNNING and -O3 for Android builds 2015-07-08 18:00:13 -07:00
Grant Limberg f67ddb579d Merge branch 'adamierymenko-dev' into android-jni 2015-07-08 17:30:22 -07:00
Adam Ierymenko a297e4a5bf Add build def ZT_NO_TYPE_PUNNING, which when defined disables type punning code that might cause unaligned access errors on architectures that care (e.g. Android/ARM) 2015-07-08 09:12:51 -07:00
Grant Limberg 1ad2cfeedf Merge branch 'adamierymenko-dev' into android-jni 2015-07-07 19:24:02 -07:00
Adam Ierymenko 412389ec75 Implement ERROR_UNWATNED_MULTICAST 2015-07-07 11:49:38 -07:00
Adam Ierymenko cf6f30963c Kill a potential source of type punning BUS errors on Android, and besides that hack probably did not improve performance at all given the short lenghts of things compared with secureEq() 2015-07-07 10:59:59 -07:00
Adam Ierymenko 3f567a07ca Save a little bit of RAM by getting rid of overkill CMWC4096 non-crypto PRNG and replacing it with a simple non-crypto PRNG that just uses Salsa20. 2015-07-07 10:49:50 -07:00
Adam Ierymenko 41fc08b330 etherTypeName() is only used in Switch and only with ZT_TRACE 2015-07-07 10:06:05 -07:00
Adam Ierymenko 07ea4fd4f9 Fix potential bug in controller config request. 2015-07-07 10:02:48 -07:00
Adam Ierymenko 778c7e6e70 More cleanup to direct path push, comment fixes, etc. 2015-07-07 10:00:34 -07:00
Adam Ierymenko c863ff3f02 A bunch of comments and cleanup, including some to yesterday's direct path pushing changes. Move path viability check to one place, and stop trying to use link-local addresses since they are not reliable. 2015-07-07 08:54:48 -07:00
Adam Ierymenko f398952a6c Revert some bad docs in Packet -- I think we will still use that. Also rename addMembershipCertificate to more security-descriptive validateAndAddMembershipCertificate, give it a return value, and drop unused force parameter. 2015-07-07 08:14:41 -07:00
Adam Ierymenko 56285ec0d4 Another attempt at a fix for all the Windows driver coma issues. 2015-07-06 17:58:04 -07:00
Adam Ierymenko 25a067c8c3 Eliminate debug printf(). 2015-07-06 17:37:32 -07:00
Adam Ierymenko 91fa643131 Minor fix to Windows local adapter address enumeration. 2015-07-06 17:36:58 -07:00
Adam Ierymenko 6da9d2d36f Remove debug printf(). 2015-07-06 17:23:22 -07:00
Adam Ierymenko f881cdd767 Add new .h file to VS build, and Windows side of local interface address enumeration. 2015-07-06 17:22:37 -07:00
Adam Ierymenko 84ba365c77 Fix bug in direct path push send. 2015-07-06 17:20:41 -07:00
Adam Ierymenko f9f4dd5276 Fix FreeBSD regression -- gmake defaults g++ which does not exist. 2015-07-06 16:47:41 -07:00
Adam Ierymenko cac55105c3 Fix a regression. 2015-07-06 16:40:23 -07:00
Adam Ierymenko a87cd2d094 Unix side of local interface address awareness for GitHub issue #180. 2015-07-06 16:32:34 -07:00
Adam Ierymenko 235f4762b7 Plumbing for local interface addresses -- GitHub issue #180 2015-07-06 15:51:04 -07:00
Adam Ierymenko 79e9a8bcc2 Almost everything for GitHub issue #180 except direct path map setup. 2015-07-06 15:28:48 -07:00
Adam Ierymenko fad9dff2db Almost all of GitHub issue #180 2015-07-06 15:05:04 -07:00
Adam Ierymenko 1632aec102 Check Network::isAllowed() always on multicast send. 2015-07-06 14:53:27 -07:00
Adam Ierymenko 255320e2a6 pushDirectPaths() implementation 2015-07-06 14:39:28 -07:00
Adam Ierymenko 93bb934d4e Some cleanup, docs, and Path -> Path > RemotePath refactor. 2015-07-06 14:08:13 -07:00
Adam Ierymenko feddd946f9 For curiosity add Salsa20/8 to benchmarks. 2015-07-06 13:51:25 -07:00
Adam Ierymenko 6bfbc43e3c Include COM with EXT_FRAME in bridged case. 2015-07-06 12:46:27 -07:00
Adam Ierymenko 35b5dcf89d Kill debug line. 2015-07-06 12:39:20 -07:00
Adam Ierymenko 9743db3538 docs 2015-07-06 12:37:37 -07:00
Adam Ierymenko e5f7c55c54 Documentation in Packet, more work on path push, and clean up ancient legacy support code in Switch. 2015-07-06 12:34:35 -07:00
Adam Ierymenko df08c2cfab Merge pull request #203 from mwarning/loadlibs
rename LIBS to LDLIBS and make it accessible from outside
2015-07-06 09:01:38 -07:00
Moritz Warning 21cdfb96de rename LIBS to LDLIBS and make it accessible from outside 2015-07-06 00:09:03 +02:00
Kees Bos 53c7f61f98 Fix for output of empty (no members) network 2015-07-05 13:27:27 +02:00
Grant Limberg 6d398beefd Merge branch 'adamierymenko-dev' into android-jni 2015-07-03 18:15:56 -07:00
Grant Limberg ab34884e3e Set -O0
anything above that currently goes kaboom on ARM platforms
2015-07-03 18:14:50 -07:00
Adam Ierymenko 532f413472 Merge pull request #202 from mwarning/openwrt
allow environment variables to set/extend build variables
2015-07-03 14:28:53 -07:00
Moritz Warning 235d4aba9a allow environment variables to set/extend CC, CXX, CFLAGS and LDFLAGS 2015-07-03 23:21:23 +02:00
Adam Ierymenko cfdf4e3a49 GitHub issue #171 -- separate CFLAGS and CXXFLAGS in Linux makefile 2015-07-02 09:13:56 -07:00
Adam Ierymenko f19c3c51d3 Revert slow non-SSE Salsa20 modification since it did not fix Android/ARM issue. Also update Salsa20 comments and clean up a bit. 2015-07-02 09:00:00 -07:00
Grant Limberg 0b7cd2f40a change some build settings. add a lock 2015-07-01 20:26:14 -07:00
Grant Limberg 2a2e3b80b3 Merge branch 'adamierymenko-dev' into android-jni 2015-07-01 18:13:59 -07:00
Grant Limberg f803dd5ff4 ... 2015-07-01 18:13:39 -07:00
Adam Ierymenko 7c9949eea3 For @glimberg -- a *possible* fix to the alignment headaches on Android/ARM. If this works we should find a define that can be used to enable it there since it will slow things down on non-x86 other architectures. 2015-07-01 12:29:23 -07:00
Grant Limberg d853dbf2d8 Merge branch 'adamierymenko-dev' into android-jni 2015-06-30 19:23:23 -07:00
Grant Limberg aee8e95d49 logging 2015-06-30 19:21:46 -07:00
Adam Ierymenko 0cbbcf2884 Rename VERB_CMA to the more descriptive VERB_PHYSICAL_ADDRESS_PUSH 2015-06-29 16:01:01 -07:00
Adam Ierymenko 30e4a188d0 ipLocalRoutes now exposed via network objects in JSON controller API, and documentation changes. 2015-06-29 15:34:26 -07:00
Adam Ierymenko 5c9411a671 Untested -- modifications to support IP ranges instead of ip/mask for IP assignment pools, also add portId to Rule for future use. 2015-06-29 14:52:09 -07:00
Adam Ierymenko 48a2ad032a (1) Both nodeId and portId in Rule can be NULL, (2) remove on delete cascade since rules should never mysteriously disappear from the rules table. If it let you delete a node with rules, that would be a UI or cleanup function bug. 2015-06-29 10:47:47 -07:00
Adam Ierymenko f05e62deae DB schema changes: separate portId in rules, ranges in IP assignment pools. (No code changes yet so code is broken.) 2015-06-29 10:40:31 -07:00
Adam Ierymenko dbee1b38b3 Fix semantics of std::unique() to actually remove duplicates (hidden memory leak?) 2015-06-29 10:21:28 -07:00
Grant Limberg c9919cc5ba reflect changes to ZT1_PeerRole in JNI 2015-06-26 18:26:57 -07:00
Grant Limberg 9c26d10ea6 Merge branch 'adamierymenko-dev' into android-jni 2015-06-26 17:44:09 -07:00
Adam Ierymenko 3f71afd0fb Put multicast txQueue back to list. 2015-06-26 14:26:35 -07:00
Adam Ierymenko 221df51875 Add Kees Bos to AUTHORS :) 2015-06-26 13:04:52 -07:00
Adam Ierymenko f33f3fcb72 Merge pull request #196 from keesbos/fixes
Fixes for controller
2015-06-26 13:02:33 -07:00
Adam Ierymenko 57c7992c78 GitHub issue #191 - kill intra-network multicast rate limits (which were not well supported or easily configurable anyway) -- this is really left over from the old collaborative multicast propagation algorithm. New algorithm (in for a while) has been sender-side replication in which sender "pays" all bandwidth, which intrinsically limits multicast. 2015-06-26 12:36:45 -07:00
Adam Ierymenko c287ae4d1d Redo conversion of _networks to a vector. Just use a simple linear search and put the nwid in a pair with the pointer so linear search can be done without pointer chasing. This should be the fastest option for anything less than dozens of networks, and should save memory over the old map. 2015-06-26 11:38:31 -07:00
Kees Bos 3eca5d9c29 Fix reporting of ipAssignments for ipv4 2015-06-26 07:22:30 +02:00
Kees Bos 8a68624dae Fix cert verification check for self signed signatures 2015-06-26 07:22:13 +02:00
Grant Limberg bfb152f53f configure the NDK to build all supported ABIs and package them up in the jar 2015-06-24 20:31:22 -07:00
Grant Limberg 759d71037e added Comparable interface to VirtualNetworkConfig so we can sort arrays containing it. 2015-06-23 23:03:02 -07:00
Adam Ierymenko daebce4994 Merge pull request #192 from mwarning/replace_erase
replace vector::erase, was missed in a previous commit (ref #186)
2015-06-23 11:13:20 -07:00
Moritz Warning def9cf2a6a replace vector::erase, was missed in a previous commit (ref #186) 2015-06-23 00:09:15 +02:00
Adam Ierymenko 4aa8449fe1 Merge branch '_networks_vector' of https://github.com/mwarning/ZeroTierOne into adamierymenko-dev 2015-06-22 10:34:55 -07:00
Adam Ierymenko 53aad7f6bd Merge pull request #189 from keesbos/bugfix-auth-member
Fixed member authorization bug and minor cleanup
2015-06-22 10:17:14 -07:00
Moritz Warning 787608b568 use _network function to reduce source code complexity 2015-06-20 16:34:19 +02:00
Moritz Warning 2b04ac5e9b replace _networks map by vector
_networks is usually quite small, using binary search on a vector might be faster comapred to std::map.
This is especially true when using uClibc++, which uses a list.
2015-06-20 16:25:21 +02:00
Grant Limberg adf89901c4 dont consider multicast groups in VirtualNetworkConfig.equals() 2015-06-19 19:00:06 -07:00
Kees Bos 50d4f66d73 Fixed member authorization bug and minor cleanup 2015-06-19 21:19:42 +02:00
Adam Ierymenko 7bae95836c Root server terminology cleanup, and tighten up a security check by checking full identity of peers instead of just address. 2015-06-19 10:23:25 -07:00
Adam Ierymenko 07f84a99b4 Rebuild properly signed root topology after supernode -> rootserver name change. 2015-06-19 09:52:45 -07:00
Adam Ierymenko f89f02ce9e Merge pull request #187 from keesbos/fix-ipv4-assignment
Fix for ipv4 assignment
2015-06-19 09:08:06 -07:00
Adam Ierymenko be4f08a548 Merge pull request #186 from mwarning/txQueue_vector
replace txQueue list by vector for faster memory access and less allo…
2015-06-18 15:42:12 -07:00
Moritz Warning 0073d0f694 replace txQueue list by vector for faster memory access and less allocations 2015-06-19 00:28:51 +02:00
Kees Bos 16eae132fa Fix for ipv4 assignment 2015-06-18 19:14:52 +02:00
Adam Ierymenko 6fc150bddb Move js/ to ZeroTierIntegrations project. 2015-06-18 08:01:28 -07:00
Grant Limberg dfdd46db80 Merge branch 'adamierymenko-dev' into android-jni 2015-06-17 18:42:23 -07:00
Adam Ierymenko 87bb0086de Almost certain fix for GitHub issue #184 on -dev 2015-06-17 12:46:12 -07:00
Adam Ierymenko 1d0654bd14 Merge pull request #182 from keesbos/rootserver
Renamed supernode to rootserver
2015-06-16 13:50:29 -07:00
Adam Ierymenko 463442eb6f Merge pull request #181 from keesbos/bugfix
Bugfixes
2015-06-16 13:50:13 -07:00
Kees Bos 4affa10ca0 Fix 404 on creation of new network 2015-06-15 10:29:12 +02:00
Kees Bos 2e1d363a86 Removed a superfluous cross join 2015-06-15 03:19:25 +02:00
Kees Bos 1cbdae65fe Fix controller/network/*/member/*
Cross join works other than expected or something changed. The
_sGetMember2 returned too many rows. Replaced it with an explicit
join statement.
2015-06-15 03:19:25 +02:00
Kees Bos dcbae5f313 Bugfix controller get member info 2015-06-15 03:19:25 +02:00
Grant Limberg c59c74ddda Merge branch 'adamierymenko-dev' into android-jni 2015-06-13 14:39:45 -07:00
Grant Limberg abbcb0a12c Modified ant build script so that it can be integrated with Android Studio's build system 2015-06-13 14:38:04 -07:00
Adam Ierymenko 845955dea5 Add definition for VERB_CMA -- GitHub issue #180 2015-06-13 18:08:00 +02:00
Adam Ierymenko 8aa68cd5f1 Add new fields in operator== 2015-06-13 13:13:19 +02:00
Adam Ierymenko edbc5d3588 Gateways support in NetworkConfig object. 2015-06-13 13:06:49 +02:00
Adam Ierymenko 96a58becf8 Gateways support in network controller schema and database (not implemented yet in client) toward GitHub issue #178 2015-06-13 11:34:31 +02:00
Adam Ierymenko 8a9715f183 Rename ruleId to ruleNo and optimize some indexes in Sqlite3 schema. 2015-06-13 10:05:34 +02:00
Adam Ierymenko 1b122cddbd Merge pull request #179 from keesbos/bugfix
Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST
2015-06-13 09:37:00 +02:00
Kees Bos 42390e662b Pickup return code from handleControlPlaneHttpGET and handleControlPlaneHttpPOST 2015-06-13 03:14:06 +02:00
Adam Ierymenko 494681a482 This might be a final fix for GitHub issue #173 and possibly others: ACTIVELY detect borked port status on Windows and if any "cable unplugged" or other wacky states are detected whack the adapter (close and reopen). Tested adding a whole bunch of windows networks, removing, adding more, etc. and it seems to work very well! 2015-06-12 16:02:04 +02:00
Adam Ierymenko dbf40f30f9 Merge pull request #177 from keesbos/linux-ui
Linux ui
2015-06-12 13:49:45 +02:00
Kees Bos dc50e8ae5b Add ui to /var/lib/zerotier (linux installer) 2015-06-11 17:56:54 +02:00
Kees Bos 7a55c6b388 Return 404 on delete if network member is missing (controller) 2015-06-11 12:20:52 +02:00
Kees Bos c2ce018202 Return 404 on delete if network doesn't exist (controller) 2015-06-11 12:10:25 +02:00
Kees Bos 0d0af07ce9 Get deletion of networks in controller going
Multiple statements in a sqlite3_prepare_v2 is not usable. Only
the first statement will be executed.

Since the schema now uses 'ON DELETE CASCADE', there's only
one statement needed.

If multiple statements are needed, there should be either multiple
sqlite3_prepare_v2 calls be used or the sqlite3_exec function.
2015-06-11 11:49:13 +02:00
Kees Bos de697a1c45 Change schema to enforce foreing keys
The foreign keys have 'ON DELETE CASCADE' to simplify the removal
of networks etc. (controller code)

Some unique constraints are replaced with a multi column primary
key.

To update an existing database:
 * install updated binaries
 * stop service
 * sqlite3 controller.db .dump | \
    egrep '((^PRAGMA)|(^BEGIN)|(^INSERT)|(^COMMIT))' | \
    grep -v 'schemaVersion' > data.sql
 * mv controller.db controller.db.backup
 * start service
 * stop service
 * sqlite3 controller.db < data.sql
 * start service
2015-06-11 11:35:25 +02:00
Grant Limberg 472206dfb2 Rename JniCache to JniLookup
Removed caching capabilities as the cached methods, fields, and objects appears to be broken on Android
2015-06-10 20:16:13 -07:00
Grant Limberg 7e84f5a7db killing whitespace 2015-06-09 23:24:54 -07:00
Grant Limberg 6889fcfc28 Looks like it was the JNI cash causing the crash.
Forcing it to look up classes and methods instead of caching them stopped the crashes in the GC.  Will investigate more later.
2015-06-09 23:24:47 -07:00
Grant Limberg 4dc0ff8f13 Replace calls to Get<Type>ArrayElements with GetPrimitiveArrayCritical.
This puts code accessing the data in a critical section so that the GC cannot run while JNI has access to the array.  This helps with stability somewhat, but I'm still getting some crashes in the GC
2015-06-09 23:12:44 -07:00
Grant Limberg 3013d90f57 ignore windows binary output 2015-06-09 22:38:31 -07:00
Grant Limberg 60da0e6cae Merge branch 'adamierymenko-dev' into android-jni 2015-06-09 19:38:47 -07:00
Grant Limberg ced040c503 Logging and adding .equals() methods to MulticastGroup and VirtualNetworkCofnig 2015-06-09 19:38:05 -07:00
Adam Ierymenko 00aa115898 Allow double-close just in case in Phy<> 2015-06-09 16:30:44 +02:00
Adam Ierymenko 17ca5be4c1 Rework Phy<> to clean up _socks entries only in poll() to fix instability in proxy. 2015-06-09 16:27:11 +02:00
Adam Ierymenko ab720a6f1e Fix for poll() in Phy<> with no sockets open. Only affects tcp-proxy. 2015-06-05 13:48:33 -07:00
Adam Ierymenko e5e11c1b24 Update AUTHORS, change to MarkDown. 2015-06-04 11:58:49 -07:00
Grant Limberg 7cc64c5cb6 Might help to set the enabled field on a VirtualNetworkConfig object :) 2015-06-03 21:29:19 -07:00
Grant Limberg b84dba3ecb more logging 2015-06-03 21:29:07 -07:00
Adam Ierymenko bd7e4ab695 VERSION 1.0.3: public preview release
After many months of intense development, ZeroTier is proud to release version
1.0.3 of ZeroTier One.

This version focuses on under-the-hood and network level improvements to
prepare the way for more user-facing improvements in the months to come, as
well as new products built around the ZeroTier core.

1.0.3 contains a large number of changes, so we're not going to push it out
via our auto-update mechanism yet. We're going to update the download links
on the web site and let users try it out for a while first. If problems are
found, we'll do a 1.0.4 before we push it out to existing installations.

--
Important note for Linux users: we've decided to stop pushing auto-updates for
Linux, and this version's official Linux binaries are built without update
checking enabled. Linux is used mostly on servers, and based on user feedback
we've found that most users don't like anything auto-updating outside of the
normal package management channels. Instead, we'll be working over the next
few months to get ZeroTier One included in a number of upstream Linux
distributions. That way you'll be able to 'apt-get' or 'yum' install it and
stay up to date that way. Auto-updates will remain for Macintosh and Windows
users until/unless we can move to 'app store' deployment on those platforms.
--

Now for the change list. It's a big one!

NEW FEATURES and IMPROVEMENTS

 * Client support is in place for preferred relays on a per-network basis.
   This allows you to define statically assigned nodes that act as relays for
   indirect communication and connection setup for communication between peers
   on a given virtual network. If defined, they'll be used in preference to
   supernodes for this purpose. If they're offline, ZeroTier will fall back to
   global supernodes. This will require support on the web control panel for
   most users to use.

 * This version sends NAT "keepalive" packets every 20 seconds, which is
   similar to the behavior of most SIP phones. This should improve reliability
   behind NATs with short timeouts and certain cheap consumer NAT devices.

 * Improvements have been made to NAT traversal to traverse more symmetric
   NAT configurations, and to rate limit traversal attempts to avoid looking
   like a port scan.

 * New direct paths are now confirmed prior to use. This should improve
   reliability in cases where a NAT traversal attempt "half succeeds" by
   preventing the use of direct links that aren't actually usable.

 * A new geo-located TCP tunneling fallback implementation should improve
   performance for heavily firewalled users who can't use UDP.

 * ZeroTier now uses remotely reported accounts of your external IP address
   to detect changes in your network connectivity instead of relying on
   "fingerprinting" of the OS-level local network environment. This should
   improve reliability in cases where external routers have dynamic IPs or
   when changing between networks with different external IPs but similar
   internal addressing schemes. This should also improve reliability for
   use within virtual machines, since the external link address might change
   but the VM's link addresses will not.

 * We've eliminated the old Unix domain socket (or named pipe on Windows)
   control bus in favor of a local HTTP JSON API. It runs on 127.0.0.1
   port 9993 and can be accessed via standard HTTP. This improves
   interoperability with scripts and other tools and allows us to use
   HTML5 for the desktop UI component. See README.md in the service/
   subfolder of the source tree for JSON API documentation.

 * The old Qt GUI has been dropped in favor of a React-based HTML5 UI. The
   code for this is found in ui/, and if ui/ is present in the ZeroTier
   home folder the JSON API HTTP server will serve it on 127.0.0.1/9993.
   The Windows and Mac UIs are now web control wrappers which access this
   UI locally and automate the process of token lookup and login.

PACKAGING / INSTALLATION IMPROVEMENTS

 * The Macintosh version is now packaged as a .pkg file instead of the old
   .app that would download its components and bootstrap itself. Several
   Mac users had problems with this, so we made it a package instead.

 * The Windows installer now includes a cleaner driver installation module
   that installs the driver as part of the main MSI file instead of spawning
   a subprocess.

BUG FIXES

 * Windows now comes with an updated NDIS6 Ethernet tap device driver.
   If you still have the old NDIS5 driver installed you'll keep using it,
   so if you want to switch to the NDIS6 driver uninstall your old version
   and do a fresh install of the new one. NDIS5 is deprecated, so we are
   hoping an NDIS6 driver will fix a number of difficult to reproduce
   issues that some Windows users have reported. It will also likely
   improve performance.

 * Fixed a "pseudo" memory leak related to the old auto-update code. The
   amount of "committed" (but not used) memory would increase over time.
   Since this was not actual used memory it didn't cause real problems,
   but the issue is gone now.

 * A very rare threading deadlock was fixed.

 * Fix for Linux installer that would falsely recognize systemd on some
   Ubuntu systems.

DEEP UNDER THE HOOD

 * This version has been heavily refactored at the source code level! The
   node/ subfolder now contains the core ZeroTier network virtualization
   engine without any OS-specific or transport-specific code. This is in
   preparation for future plans around embedded devices, etc. There is now
   a public C-level API in include/ZeroTierOne.h that defines an interface
   to the node core.

 * A new network controller implementation is in 1.0.3 based on SQLite and
   the local JSON API control bus. IT HAS NOT BEEN HEAVILY TESTED YET, so we
   do not recommend using it in production until the next version. You are
   welcome to experiment with it.
2015-06-03 19:34:00 -07:00
Adam Ierymenko ee1a008f2d Product code for 1.0.3 etc. 2015-06-03 18:53:54 -07:00
Grant Limberg 8fb9df9751 delete dead test code 2015-06-03 18:35:38 -07:00
Adam Ierymenko 4c687fca45 No auto-updates on BSD either. 2015-06-03 18:13:42 -07:00
Adam Ierymenko 753a80d419 Linux auto-update is going away. 2015-06-03 17:53:21 -07:00
Adam Ierymenko 7213a6cf0b Make max HTTP message size (max update size) larger since Windows MSI is about 8MB already. 2015-06-03 17:20:30 -07:00
Adam Ierymenko 9b0c8965bb Make status line in UI show "TUNNELED" if slow TCP tunneling mode is active. 2015-06-03 16:47:07 -07:00
Adam Ierymenko 7e647c5303 NOHUP-ify the child process on OSX auto-update. 2015-06-03 16:37:24 -07:00
Adam Ierymenko fe87136870 Auto-update fix -- signature is in hex. 2015-06-03 16:25:16 -07:00
Adam Ierymenko b897ec1efd Put version back to 1.0.3. 2015-06-03 16:19:44 -07:00
Adam Ierymenko 6a11c76248 Temporarily bump version to fake 1.0.99 to test auto-update within network. 2015-06-03 16:09:56 -07:00
Adam Ierymenko 3512402558 OSX .pkg files must be signed with productsign and an installer cert. 2015-06-02 19:17:39 -07:00
Adam Ierymenko 4fe12756d4 Get rid of "autoupdating" in Linux package names. 2015-06-02 17:14:18 -07:00
Adam Ierymenko bf415bdeb9 docs 2015-06-02 17:05:31 -07:00
Adam Ierymenko c5a3e80113 Linux installer tweaks, and Mac updater tweak. 2015-06-02 16:54:27 -07:00
Adam Ierymenko 806ea79f37 docs 2015-06-02 16:44:43 -07:00
Adam Ierymenko cd58614c23 docs 2015-06-02 16:42:31 -07:00
Adam Ierymenko 0b68344fc8 docs 2015-06-02 16:41:57 -07:00
Adam Ierymenko 191b8f8164 docs 2015-06-02 16:39:21 -07:00
Adam Ierymenko 29e3437350 gcc not g++ for CC 2015-06-02 16:30:42 -07:00
Adam Ierymenko 65999611d7 Eliminate "which" dependency in Linux makefile. 2015-06-02 16:29:23 -07:00
Adam Ierymenko 9d49e8f237 docs 2015-06-02 16:24:44 -07:00
Adam Ierymenko 855d893c67 docs 2015-06-02 16:23:43 -07:00
Adam Ierymenko a2690047bb docs 2015-06-02 16:16:14 -07:00
Adam Ierymenko 648efff1f6 Delete merge temp file. 2015-06-02 12:50:32 -07:00
Adam Ierymenko 3d6c1860ca Merge branch 'adamierymenko-dev' into android-jni 2015-06-02 12:49:36 -07:00
Adam Ierymenko f0be5e814e Merge organized .gitignore 2015-06-02 12:49:32 -07:00
Adam Ierymenko 79efceb57b Organize .gitignore and merge stuff from Android-JNI branch. 2015-06-02 12:48:59 -07:00
Adam Ierymenko b8f40c0b91 Yet another /Users/api path in packages script. 2015-06-02 12:01:00 -07:00
Adam Ierymenko 97dd8d864f Fix paths again in Mac pkg build. 2015-06-02 11:59:05 -07:00
Adam Ierymenko 1afd02df54 Path fix in Packages build file for Mac 2015-06-02 11:47:32 -07:00
Grant Limberg fb0bf52b1b Fixed sending a port number of 0 to ZT1.
Fixed VirtualNetworkConfigFunction (creating array to send to Java)
Fixed the creating InetAddress instead of InetSocketAddress in virtual network config callback
2015-06-01 20:03:28 -07:00
Grant Limberg 74f7d5377d Enable ZT_TRACE and more verbose build output 2015-06-01 20:01:37 -07:00
Adam Ierymenko a9a390a930 Apply @marning suggested SSE auto-detect to make builds easier on non-x86 platforms: https://github.com/mwarning/ZeroTierOne/commit/aa2fd044cb69b97eef1ea38d5fefd18543aae22a 2015-06-01 19:43:06 -07:00
Adam Ierymenko d7344871e6 Linux build fix. 2015-06-01 19:27:53 -07:00
Adam Ierymenko aab17d9f1f Kill obsolete amSupernode method -- we now have no differing behaviors. 2015-06-01 19:18:26 -07:00
Adam Ierymenko ecb6a1d84f docs 2015-06-01 19:12:20 -07:00
Adam Ierymenko 5341e32729 Fix to GitHub issue #140 -- network preferred relays. Also go ahead and allow RENDEZVOUS from regular peers. 2015-06-01 19:05:27 -07:00
Adam Ierymenko 960ceb4791 Rest of GitHub issue #140 implementation. 2015-06-01 17:50:44 -07:00
Adam Ierymenko 318c2f025b Call it _relays since there might be other kinds later. 2015-06-01 17:09:37 -07:00
Adam Ierymenko 5bc89034bc Always ping / contact network preferred relays (if any). 2015-06-01 16:53:58 -07:00
Adam Ierymenko 229195166a Add BackgroundResolver to Windows build. 2015-06-01 16:06:50 -07:00
Adam Ierymenko b3b9af0dd8 Fix for GitHub issue #170 2015-06-01 11:56:15 -07:00
Grant Limberg 5015c0ae78 more logging 2015-05-28 21:03:37 -07:00
Grant Limberg b6196a53de Fix DataStoreGetFunction. 2015-05-28 20:37:16 -07:00
Grant Limberg 58ca657da6 Use object arrays rather than ArrayList. JNI side 2015-05-28 20:36:54 -07:00
Grant Limberg 7822616966 Replace ArrayList instances with [] 2015-05-28 20:01:30 -07:00
Grant Limberg e3feac17b1 Merge branch 'adamierymenko-dev' into android-jni 2015-05-27 20:43:30 -07:00
Grant Limberg 4c680e3126 LOTS more error checking and logging.
Running into a wall attempting to add items to an ArrayList from the JNI side
2015-05-27 20:42:54 -07:00
Adam Ierymenko ea419c21d0 Fix installer path, add netconf option to make-linux. 2015-05-28 03:13:23 +00:00
Adam Ierymenko 502cd6921f Fix for GitHub issue #133, and move restart out of installer to address restart problem. Installer probably should NOT mess with the running service, since Linux servers are likely to be production. 2015-05-27 13:50:11 -07:00
Grant Limberg 09631ad382 fix datastore get call in JNI
Just delete the local reference rather than do an array delete.  Array delete was causing a crash on loading network config files.  Deleting the local ref works fine, though, as it still lets the JVM garbage collecter know that the native code is done with the array
2015-05-26 21:32:56 -07:00
Grant Limberg 2d67196667 added the android verbose log level and moved most jni debug messages to verbose 2015-05-26 21:31:34 -07:00
Grant Limberg 9755dad7ff add a missing break from a switch 2015-05-26 21:30:33 -07:00
Grant Limberg adaf9cf32b still getting re-used to all the places you have to put access modifiers in Java 2015-05-26 20:03:47 -07:00
Grant Limberg 703c311e07 Merge branch 'adamierymenko-dev' into android-jni 2015-05-26 19:17:29 -07:00
Adam Ierymenko e184aa4cb4 Clean old netconf-service from attic. 2015-05-26 18:16:12 -07:00
Adam Ierymenko fbb990f8a3 Mac uninstall.sh update. 2015-05-26 14:36:04 -07:00
Adam Ierymenko ff2272d59a Delete some temporary code. 2015-05-26 13:34:08 -07:00
Adam Ierymenko c075e68c6c More work on ZT1 NodeJS API client library. 2015-05-26 13:32:47 -07:00
Adam Ierymenko ecb1ee8e0d Renaming... 2015-05-26 09:03:39 -07:00
Adam Ierymenko ba7809367a JS stuff reorg. 2015-05-26 09:01:58 -07:00
Adam Ierymenko 5e3c6d9e0d Some nodeJS work, and apply fix from GitHub issue #166 plus a small optimization to avoid repeated calls to _allMulticastGroups(). 2015-05-25 14:21:05 -07:00
Adam Ierymenko d8ad555b9a Go ahead and add flags and invFlags to the Rule table. 2015-05-25 13:20:10 -07:00
Adam Ierymenko d29f2ce858 Clean up attic/ 2015-05-25 11:55:27 -07:00
Adam Ierymenko af1d29cc6f Remove obsolete method. 2015-05-25 11:54:32 -07:00
Adam Ierymenko 91f02d699e Right now only FreeBSD can use BSDEthernetTap, which will probably get renamed accordingly. NetBSD and OpenBSD do not support tap, only tun, so they will have to wait. 2015-05-25 11:11:37 -07:00
Grant Limberg 6e998efd15 fixing up data store stuff 2015-05-23 18:29:16 -07:00
Grant Limberg 5c2aaad365 Merge branch 'adamierymenko-dev' into android-jni 2015-05-23 13:34:21 -07:00
Adam Ierymenko d8783b14eb Build fix. 2015-05-22 15:46:06 -07:00
Adam Ierymenko 6867922d9e typo 2015-05-22 15:33:33 -07:00
Adam Ierymenko 9774f789f2 TCP fallback tunneling is now working. That hurt more than expected. 2015-05-22 14:52:23 -07:00
Adam Ierymenko cdec05af24 One second delay between NAT-t events. 2015-05-22 13:12:14 -07:00
Adam Ierymenko 196f27f1f0 Add delay to NAT-t escalation stuff to try to address GitHub issue #167 2015-05-22 13:11:55 -07:00
Adam Ierymenko b388d9fdc9 TCP proxy should actually bind to its TCP port. Seems like a good idea. 2015-05-22 10:14:44 -07:00
Grant Limberg 1e043a3f66 Remove link desperation from java API 2015-05-21 19:34:19 -07:00
Grant Limberg c430d88bd4 Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-05-21 19:14:49 -07:00
Adam Ierymenko 50aedda54d Basic TCP fallback -- now to test. 2015-05-21 18:33:52 -07:00
Adam Ierymenko d9006712f6 Completely factor out "desperation" from the core. I thought of a significantly simpler way to move all of this logic entirely into the containing service, liberating the core from any concern over the nature of its pipe to the outside world. 2015-05-21 15:58:26 -07:00
Adam Ierymenko 123ff28863 Build fix. 2015-05-21 15:24:58 -07:00
Adam Ierymenko 0f7dcb3ef2 Add some proxy debugging, and auto-resolve and periodically re-resolve TCP fallback tunnel hostname. 2015-05-21 15:22:41 -07:00
Adam Ierymenko 61021fc778 BackgroundResolver test. 2015-05-21 14:11:44 -07:00
Adam Ierymenko 2ad69237cf Background resolver. 2015-05-21 13:44:33 -07:00
Adam Ierymenko 82f6b3f550 Clean old update code out of Windows service wrapper. 2015-05-20 20:21:20 -07:00
Adam Ierymenko 905d2e91e5 Windows auto-update integration into OneService. 2015-05-20 20:17:56 -07:00
Adam Ierymenko 1213073916 Apple auto-update stuff, now for Windows. 2015-05-20 19:38:49 -07:00
Adam Ierymenko b6698d8415 Ground work for reincorporating software updater for select platforms. 2015-05-20 16:35:33 -07:00
Adam Ierymenko e285a6e75f . 2015-05-20 15:20:05 -07:00
Adam Ierymenko 6fc090eb00 Don't actually "power cycle" the interface except on startup. Doing that after we're running could lose IP configuration. 2015-05-20 14:21:14 -07:00
Adam Ierymenko 0caac25d28 . 2015-05-19 20:13:19 -07:00
Adam Ierymenko dd70188643 Make tap driver even more defensive... seems to maybe fix the new network problem. Have to test a bit more. 2015-05-19 18:40:34 -07:00
Adam Ierymenko c7eb5f0c81 Windows build warning removal, be more defensive in Windows tap driver code, and clean up service start/stop in installer. 2015-05-19 18:13:20 -07:00
Adam Ierymenko 68cb7ad4cd Few more fixes to installer firewall rule settings. 2015-05-19 16:31:00 -07:00
Adam Ierymenko 9682f50b15 Get rid of old _winPokeAHole() hack in one.cpp and use Advanced Installer to configure firewall rules (because we can now). 2015-05-19 16:26:41 -07:00
Adam Ierymenko 63cea7d337 Try to automatically enable access to http://127.0.0.1 in web wrapper if IE is in enhanced security mode. 2015-05-19 16:02:26 -07:00
Adam Ierymenko 44d1bd14bd Enable right-click menu for copy/paste/etc. in Windows UI wrapper. 2015-05-19 14:48:57 -07:00
Adam Ierymenko b4a34cc105 Add 32-bit chained MSI for NDIS6 driver... now to go test on 32-bit Windows (clean). (And Windows 10, and Windows Server, and ...) 2015-05-19 13:01:55 -07:00
Adam Ierymenko 32588b3d84 A visit to the Windows house of pain:
(1) Yes, you *can* create a mixed 32/64 bit Windows MSI installer that installs drivers. All you have to do is... umm... create individual sub-MSI files for each driver (one for 32, one for 64) and then package those in the main MSI files as "chained" MSI installers. Each of these must only be considered a prerequisite on 32 or 64 bit machines, respectively.

(2) Upgrade Advanced Installer version, add rules to uninstall NDIS6 tap device on uninstall.

(3) Fix IE issue in UI code.
2015-05-18 20:30:54 -07:00
Adam Ierymenko 992438f054 Confirm leaving networks. 2015-05-18 16:02:37 -07:00
Adam Ierymenko 8c7a4efe1a Small cosmetic fix to bottom bar. 2015-05-18 15:56:18 -07:00
Adam Ierymenko e0313455e7 Hide unneeded menus in MacGap. 2015-05-18 15:53:49 -07:00
Adam Ierymenko ac629150ac Create symlinks in Mac postinst script. 2015-05-17 21:26:38 -07:00
Adam Ierymenko 89027d78ac Mac .pkg building using Packages (third party app) instead of old bootstrapping .app and installer script. 2015-05-17 21:24:02 -07:00
Adam Ierymenko f48509d50c Mac script to get HTTP proxy settings -- will be used by Mac updater. 2015-05-17 20:28:09 -07:00
Adam Ierymenko c76217c2d4 Delete old UI code -- officially dead. 2015-05-17 19:50:19 -07:00
Adam Ierymenko 2d700f644b Add signed binary build of Mac GUI wrapper. 2015-05-17 19:48:21 -07:00
Adam Ierymenko c76b9d1340 Respect user home directory copies of authtoken.secret or ~/.zeroTierOneAuthToken in CLI like we do in GUI wrappers. 2015-05-17 19:13:22 -07:00
Adam Ierymenko 0e87002d78 BSDEthernetTap build fixes. 2015-05-17 18:31:41 -07:00
Adam Ierymenko ddaf3ef347 Bring BSDEthernetTap into the current century. 2015-05-17 18:28:04 -07:00
Adam Ierymenko 2810cd7c15 Build fixes for G++, building without SQLite3 present, and warning removal. 2015-05-17 23:56:47 +00:00
Adam Ierymenko 0af18b164c /var/db is for all of xBSD 2015-05-17 16:06:29 -07:00
Adam Ierymenko 086f21ed70 Refactor and simplify controller integration with JSON API and OneService. 2015-05-17 15:51:07 -07:00
Adam Ierymenko 7649d6746b docs 2015-05-17 15:38:01 -07:00
Adam Ierymenko 0e00981059 docs 2015-05-17 14:01:25 -07:00
Adam Ierymenko d41b6eb0c8 docs 2015-05-17 10:14:12 -07:00
Adam Ierymenko 651e67f2e5 Add a feature to generate a new network ID on POST. 2015-05-17 09:36:35 -07:00
Adam Ierymenko e0090e56f4 Build fix on OSX -- cannot call SqliteNetworkController if not compiled in. 2015-05-16 18:59:11 -07:00
Grant Limberg 9a00366b18 Merge branch 'adamierymenko-dev' into android-jni 2015-05-16 18:55:19 -07:00
Adam Ierymenko 69ceb7e730 Basic controller JSON API seems to be working. 2015-05-16 17:12:29 -07:00
Adam Ierymenko cf51961d52 . 2015-05-16 16:32:13 -07:00
Adam Ierymenko c9fd8de007 . 2015-05-16 16:22:38 -07:00
Adam Ierymenko a187d290f1 Fixes to control plane, API, eliminate problematic inheritance pattern, and start on a NodeJS class for talking to the network controller. 2015-05-16 16:09:28 -07:00
Adam Ierymenko 27c5f04d68 Add -U option to skip root check and permit run as non-privileged user. 2015-05-16 14:52:09 -07:00
Grant Limberg d0935f667f Merge branch 'adamierymenko-dev' into android-jni 2015-05-16 14:35:35 -07:00
Adam Ierymenko 4be4908914 Fix some prepared statement problems. 2015-05-16 14:34:51 -07:00
Adam Ierymenko 38243e5eff OSX build fix 2015-05-16 14:07:15 -07:00
Adam Ierymenko 0bb92715f4 DELETE function in network controller JSON API, and a newIdentity convenience request in ControlPlane for scripted testing. 2015-05-16 13:42:53 -07:00
Adam Ierymenko 78769900a9 More network controller cleanup, and some features to permit scripted testing. 2015-05-16 12:50:42 -07:00
Adam Ierymenko 65a9a9a6f2 typo 2015-05-15 15:30:44 -07:00
Adam Ierymenko e269846f84 Netconf docs, add clock field to status, simplify netconf a bit by eliminating caching for now. We will re-add if it is needed. 2015-05-15 15:20:12 -07:00
Adam Ierymenko 6d2376eb9c Controller API status message. 2015-05-15 09:41:45 -07:00
Adam Ierymenko f693d4d0c8 Network controller cleanup and an extra sanity check. 2015-05-15 09:32:10 -07:00
Adam Ierymenko 0bdd56ebd6 A few revisions to PFS design. 2015-05-15 09:04:39 -07:00
Adam Ierymenko d0e0f5dd12 Basic OpenBSD compile fixes -- still need to update BSDEthernetTap, will do that later. Should be able to re-use FreeBSD port for OpenBSD, but we will see. 2015-05-15 08:48:53 -07:00
Adam Ierymenko e94518590d First stab of PFS design work with PKC security -- may not implement in 1.0.3 but stubbing out. 2015-05-14 17:41:05 -07:00
Grant Limberg 4a0280686c Merge branch 'adamierymenko-dev' into android-jni 2015-05-13 20:52:23 -07:00
Adam Ierymenko a8835cd8b3 Some prep work to make room for perfect forward security (PFS). Will not affect existing clients. 2015-05-13 18:53:37 -07:00
Adam Ierymenko bdce679d84 Should fix deadlock issue in GitHub issue #166 2015-05-13 16:55:18 -07:00
Adam Ierymenko 241f308334 Fix to tap reset code in Windows tap connector. 2015-05-08 16:49:08 -07:00
Adam Ierymenko e744580b89 Fix a bunch of Windows tap issues. Turns out NDIS6 allowed us to ditch some NDIS5 cruft, but I did have to add one hack specific to that one instead. Seems reliable now. 2015-05-08 16:31:50 -07:00
Adam Ierymenko 1b895c45eb Make peer list font a bit smaller. 2015-05-08 15:04:01 -07:00
Adam Ierymenko 2158d26bd7 Show last unicast and multicast frames. 2015-05-08 15:01:05 -07:00
Adam Ierymenko 4565e9948f Now this works... Windows UI wrapper. Turns out there were workarounds, but IE does indeed suck. 2015-05-08 14:58:29 -07:00
Adam Ierymenko c1e5c1c710 Fix some settings on WebControl implementation. 2015-05-08 14:51:24 -07:00
Adam Ierymenko 257187a284 Fixes for Windows WebControl. 2015-05-08 14:47:01 -07:00
Adam Ierymenko 8e888f8df9 Hmm... will this work? Very first child of <head> 2015-05-08 12:41:06 -07:00
Adam Ierymenko 8594e17f2b Move mac-ui into src/ 2015-05-08 12:35:41 -07:00
Adam Ierymenko a40192a40b Scratch that wrapper... it was easy to make, but it turns out WebControl is IE4 (!!!?!). Also prefer NDIS5 to NDIS6 *if* NDIS5 is installed. We will no longer ship it, but this will make older installs use the same driver they are already using. Should ease upgrade. 2015-05-08 12:35:03 -07:00
Adam Ierymenko 92ca53e141 Add pre-build signed UI wrapper .exe. 2015-05-08 12:16:02 -07:00
Adam Ierymenko a913f00670 Windows WebControl based wrapper for web UI. 2015-05-08 11:55:09 -07:00
Adam Ierymenko b1164ed181 icons 2015-05-08 11:08:06 -07:00
Adam Ierymenko c0caba8944 docs 2015-05-08 10:31:01 -07:00
Adam Ierymenko 0be3190d49 UI spacing tweaks. 2015-05-08 10:20:38 -07:00
Adam Ierymenko bd2ce82ea6 Minify JS in UI, add Makefile. 2015-05-08 10:03:35 -07:00
Adam Ierymenko a4a62be698 UI tweaks, get JSXTransformer out. 2015-05-08 09:39:07 -07:00
Grant Limberg da45840e5a Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-05-07 19:16:35 -07:00
Adam Ierymenko 4426899e8c Add support for local user account caching of authtoken.secret as in old UI -- this is now pretty much working. 2015-05-06 21:02:59 -07:00
Adam Ierymenko d56e9fce41 Get user data out of repo. 2015-05-06 20:45:02 -07:00
Adam Ierymenko 5b54612d91 Pass authtoken in from user, and add a wrapper for web UI on Mac. 2015-05-06 20:41:51 -07:00
Grant Limberg 8130b2a0de Merge branch 'adamierymenko-dev' into android-jni 2015-05-06 20:24:01 -07:00
Adam Ierymenko e58047eaa0 UI work... 2015-05-06 19:39:45 -07:00
Adam Ierymenko 03dbec960a UI tweaks 2015-05-06 17:42:29 -07:00
Grant Limberg 20b76d266d Merge branch 'adamierymenko-dev' into android-jni 2015-05-06 17:37:11 -07:00
Adam Ierymenko 4a2c46e008 Well that works... pretty web UI (currently only works on test node with hard-coded auth code... need to figure out how to plumb that) 2015-05-06 17:28:11 -07:00
Kees Bos a425bbc673 Renamed supernode to rootserver 2015-05-06 12:05:20 +02:00
Adam Ierymenko b2b32e5969 Beginning of HTML+Bootstrap+React UI for new desktop client -- looking like it will be easier than retrofitting the old Qt client for the new API. 2015-05-05 20:53:30 -07:00
Grant Limberg bdc5b3d3a5 Merge branch 'adamierymenko-dev' into android-jni 2015-05-04 20:12:26 -07:00
Grant Limberg e28712555d build & package libZeroTierOneSDK.jnilib on Mac oS
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-05-04 20:04:44 -07:00
Adam Ierymenko 40f312a827 When we reset within scope, erase the other entries for that scope so we won't keep resetting the same scope repeatedly. 2015-05-04 19:02:36 -07:00
Adam Ierymenko 18ca6f34ff Always update timestamp. 2015-05-04 18:45:39 -07:00
Adam Ierymenko 59fa687830 Make timeout also apply to null check in iam() 2015-05-04 18:43:24 -07:00
Adam Ierymenko e922324bc6 Stop inlining all the Packet armor/dearmor stuff to reduce binary bloat. This stuff is called all over the place. 2015-05-04 18:39:53 -07:00
Adam Ierymenko b4b067bf12 So we need to keep track of external surface per reporter, since some NATs assign different external IPs for each external destination. Keeping just one known surface could create a race condition. 2015-05-04 18:34:30 -07:00
Adam Ierymenko 625ddf41a7 docs 2015-05-04 17:41:48 -07:00
Adam Ierymenko af66f14761 Merge branch 'adamierymenko-dev' into android-jni 2015-05-04 16:47:18 -07:00
Adam Ierymenko da254d967f Hack around GitHub issue #165 (?) 2015-05-04 14:11:54 -07:00
Grant Limberg 7054c365f2 put a read timeout on the socket 2015-05-02 18:34:47 -07:00
Grant Limberg 06ab338ecc added naive OneService implementation.
Does nothing but send packets to master nodes and listen for packets back.
2015-05-02 18:24:52 -07:00
Grant Limberg ad6ec22857 DataStore now works 2015-05-02 18:22:56 -07:00
Grant Limberg a9307693a6 Adding Data Store implementations for Android and normal Java 2015-05-02 17:32:12 -07:00
Grant Limberg 742c59a7c7 Refactor package name from com.zerotierone.sdk to com.zerotier.sdk 2015-05-02 16:54:00 -07:00
Grant Limberg e79a6915ff ensure java is compiled for JVM 1.7. Android cant read .class files compiled for 1.8 2015-05-02 12:06:07 -07:00
Grant Limberg 818339f966 replace old direct calls to FindClass, GetMethodID, etc with calls that use the cache 2015-05-02 12:05:40 -07:00
Grant Limberg 079d248eab added a JniCache objectet for caching jclass, jmethodID, and jfieldID objects 2015-05-02 12:05:02 -07:00
Grant Limberg 9f2732d661 add the basedir to the ant buildfile 2015-05-02 10:16:10 -07:00
Grant Limberg fb6b56a85f clean up unused imports 2015-05-01 18:27:34 -07:00
Grant Limberg 02b33e3763 Yeah it helps to byte swap the port back to little-endian before sending the port off to Java 2015-04-30 22:07:14 -07:00
Grant Limberg b242886c33 Merge branch 'adamierymenko-dev' into android-jni 2015-04-30 21:51:05 -07:00
Grant Limberg 0a15eae00f Setup native build for Windows Java.
Still need to do Mac & Linux
2015-04-30 21:50:28 -07:00
Grant Limberg 75d7137025 added a class I found to load JNI code from within JAR files on non-android platforms.
That doesn't come for free, unlike android.
2015-04-30 21:50:05 -07:00
Adam Ierymenko 9279bac385 Fix deadlock in SelfAwareness by deferring reconnects. 2015-04-30 21:09:41 -07:00
Adam Ierymenko 105e1a016f Get rid of G++ compiler warning. 2015-04-30 20:41:25 -07:00
Adam Ierymenko 604576075e Add some missing includes that older G++ cares about. 2015-04-30 20:40:33 -07:00
Grant Limberg 52df59c552 Merge branch 'adamierymenko-dev' into android-jni
Conflicts:
	.gitignore
2015-04-30 19:19:45 -07:00
Adam Ierymenko d3820049b8 Add reported external address to OK(HELLO) TRACE to verify SN behavior. 2015-04-30 18:25:31 -07:00
Adam Ierymenko 9eb7698f0e Learn external IP addresses on OK(HELLO) too. 2015-04-30 16:40:04 -07:00
Adam Ierymenko 5185103692 Fix to create-test-root-topology. 2015-04-30 16:13:17 -07:00
Adam Ierymenko 3ac23165c7 Kill old testnet -- was useful in its time, but Docker make running real test networks locally stupid easy and a more realistic simulation. 2015-04-30 16:04:17 -07:00
Adam Ierymenko 9a34fde8a5 Make sure identity.public exists and stays in sync, cleanup extra new in Node, and test script for local testnets. 2015-04-30 16:03:44 -07:00
Adam Ierymenko 918fc8884b Update mktopology so it works again and can easily be used to create test dictionaries. 2015-04-30 15:31:01 -07:00
Adam Ierymenko f3d7c9d681 Helps to index the array when enumerating a C array. 2015-04-30 15:16:21 -07:00
Adam Ierymenko 226e0f8722 docs and Makefile for tcp-proxy 2015-04-30 10:56:45 -07:00
Adam Ierymenko 288d73a4ad A few more refinements to TCP code, ready to integrate with "desperation" stuff and test. 2015-04-30 10:47:27 -07:00
Grant Limberg 9464504e4a DataStoreGet and Put and EventListener appear to work 2015-04-29 21:20:50 -07:00
Grant Limberg 7e0cc28a89 Fixes for bugs pointed out by updating warnings 2015-04-29 19:29:35 -07:00
Grant Limberg 0a2d1e7a66 Ignore windows debug build files 2015-04-29 19:29:18 -07:00
Grant Limberg 9bf9670ff9 add more warnings to the JNI build 2015-04-29 19:14:52 -07:00
Adam Ierymenko a9a3705877 TCP tunneling implementation -- not tested yet and no initiation yet. 2015-04-28 12:43:10 -07:00
Grant Limberg 5983b4367b jclass pointers aren't as cacheable as originally thought.
There is a way to do it.  We can try it later if we determine it's needed for performance reasons.  Otherwise, don't use static to cache them
2015-04-27 18:38:13 -07:00
Grant Limberg d1ed269537 Switch to InetSockAddress instead of InetAddress so we can send the port # to java as well 2015-04-27 17:48:37 -07:00
Grant Limberg 73d68c0c98 Merge branch 'adamierymenko-dev' into android-jni 2015-04-27 17:24:55 -07:00
Adam Ierymenko 7dcde7503a For now just bind TCP to localhost, since we do not permit remote use of the control bus at all yet. 2015-04-26 18:15:40 -07:00
Adam Ierymenko b9f7f75ddf TCP proxy for tunneling (desperation > 0). 2015-04-26 16:38:39 -07:00
Adam Ierymenko a1005ca858 Do not unite() peers across different IP scopes as this would pretty much never work. 2015-04-26 16:03:16 -07:00
Adam Ierymenko 8c5ec54711 . 2015-04-26 14:05:36 -07:00
Adam Ierymenko ab3f4d7539 Was thinking about this HTTP tunneling stuff but decided against for now. Stash unfinished code in attic/ 2015-04-26 14:05:13 -07:00
Adam Ierymenko a1d6df4bf8 Starting on new external updater binary. 2015-04-26 10:01:07 -07:00
Grant Limberg 4c71e92a67 It's now possible to actually create a Node object in Java/Android!!! 2015-04-25 20:47:21 -07:00
Grant Limberg 3bdbc6390f Added logging to Android logcat 2015-04-25 20:46:56 -07:00
Grant Limberg 8a09e0ec3c added NodeException 2015-04-25 20:46:41 -07:00
Grant Limberg db80070ccb fix strings pointing to enum fields in ResultCode java class 2015-04-25 19:19:58 -07:00
Grant Limberg 042f914dc5 If we could not recursively add ZeroTierOneSDK.jar to ZeroTierOneSDK.jar, that would be greeeaaaaat 2015-04-25 19:09:30 -07:00
Grant Limberg ec45aeb42a Merge branch 'adamierymenko-dev' into android-jni 2015-04-25 18:59:52 -07:00
Grant Limberg a86a0ab2b1 Package the Android native libraries right in the .jar file 2015-04-25 18:59:00 -07:00
Grant Limberg 29bb2a9004 fix for a previously renamed class 2015-04-25 18:58:43 -07:00
Grant Limberg 56f8160af8 generate javadocs for the Java SDK 2015-04-25 17:29:07 -07:00
Adam Ierymenko 7af1f3a79a attic cleanup 2015-04-25 17:25:06 -07:00
Adam Ierymenko e78899fddf Rebuild and re-sign the x86 driver... previous attempt was somehow borked but this one loads on Win7/x86 fine. 2015-04-25 16:00:25 -07:00
Adam Ierymenko 9325535ced x86 version of signed NDIS6 driver. 2015-04-25 15:31:27 -07:00
Adam Ierymenko 720ac93ba9 Use NDIS6 driver preferentially if available. 2015-04-25 15:22:43 -07:00
Adam Ierymenko 42b4148876 NDIS6 driver signed x64 build (not fully tested yet, but committing work) 2015-04-25 14:52:02 -07:00
Adam Ierymenko 4b658d83bc Rename old driver to -ndis5. 2015-04-25 13:11:58 -07:00
Adam Ierymenko d4c06e924d Do the same modifications to the NDIS 6 code base as were done to the old 5 driver: disable all the 'tun' functionality, and add the IOCTL for querying the multicast list at Ethernet (L2) level. 2015-04-25 12:21:08 -07:00
Adam Ierymenko 1ebe2ad920 NDIS6 driver with VS project to build -- builds correctly, not customized for ZT yet. 2015-04-24 23:31:51 -07:00
Grant Limberg 0d4283a3fa Cache jclass and jmethod instances for callbacks on the JniRef struct.
This is safe to cache as none of the instantiated callback interfaces can be changed once a Node object is created.
2015-04-24 20:34:36 -07:00
Grant Limberg 9c62ce9e6f implemented EventCallback
All callback methods are now implemented
2015-04-24 20:13:21 -07:00
Grant Limberg f2eed5a65f implemented WirePacketSendFunction 2015-04-24 19:43:17 -07:00
Grant Limberg 5e1fb4e253 Realized that the jclass and jmethodID variables in the callbacks cannot be static
There's no guarantee that ALL calls to the callbacks will be on the same class as they're just interfaces and user defined
2015-04-24 19:35:18 -07:00
Grant Limberg dc00ce4f44 added DataStorePutFunction implementation
updated  DataStorePutListener to also have an onDelete() method
2015-04-24 19:28:44 -07:00
Grant Limberg 53ebd5a9a5 don't need to pass buffer size because java arrays have a .length member 2015-04-24 19:14:59 -07:00
Grant Limberg d5fc2b39aa implemented DataStoreGetFunction callback 2015-04-24 19:11:49 -07:00
Grant Limberg 4137246653 implemented VirtualNetworkFrameFunctionCallback 2015-04-24 18:49:52 -07:00
Grant Limberg 28168fa673 implement VirtualNetworkConfigFunctionCallback 2015-04-24 18:39:17 -07:00
Grant Limberg 99af0f3a88 moved creation of VirtualNetworkConfig objects to ZT1_jniutils
added implementation of networks() method
2015-04-24 18:20:10 -07:00
Grant Limberg 6f07a476a6 create and return the peer array 2015-04-24 18:06:26 -07:00
Grant Limberg 52a20b4b0f create PeerRole and PeerPhysicalPath objects 2015-04-24 17:58:59 -07:00
Grant Limberg f3c29d3f0d rename PhysicalPeerPath -> PeerPhysicalPath to reflect C API 2015-04-24 17:58:31 -07:00
Grant Limberg b3429481cd update build instructions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-24 17:04:08 -07:00
Grant Limberg 0f808e11df Merge branch 'adamierymenko-dev' into android-jni 2015-04-24 16:48:48 -07:00
Adam Ierymenko ce09e363dc Destroy tap devices on Windows 'leave'. 2015-04-24 16:31:19 -07:00
Adam Ierymenko e2c65bf16a Bring Windows service code up to date and into sync. 2015-04-24 15:44:39 -07:00
Adam Ierymenko 0e31551349 Take winhttp out of lib list, since we don't use it anymore. 2015-04-24 15:15:14 -07:00
Adam Ierymenko f5848972f9 Windows now builds and runs selftest correctly, and fixed a Windows (and possibly other platforms) issue in Phy<>. 2015-04-24 15:05:28 -07:00
Adam Ierymenko 54954f5b88 First pass of Windows cleanup and build fixes... 2015-04-24 13:35:17 -07:00
Adam Ierymenko 883a216d2a Build fixes. 2015-04-24 12:29:31 -07:00
Grant Limberg 1a65a79e57 set 'build' as the default ant target
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:14:09 -07:00
Grant Limberg 6dd3c07b25 removing unneeded jni headers
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:09:42 -07:00
Grant Limberg 1df6bc6bc3 just adjusting some alignment
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:09:30 -07:00
Grant Limberg 9ab7280703 added infrastructure for Node.peers() and Node.networks() functions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 23:08:28 -07:00
Grant Limberg 7f6556eba0 node.networkConfig() now creates ArrayLists of multicast subscriptions and assigned addresses
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:48:56 -07:00
Grant Limberg 1bea940323 fix field ID signatures
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:47:56 -07:00
Grant Limberg 6ff2e6ecfe move findNode method back
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 22:46:54 -07:00
Grant Limberg d66f2cd54d Node.networkConfig now only needs to populate the lists of assigned addresses and multicast subscriptions and then it's finished
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:43:16 -07:00
Grant Limberg 46adf870a1 move utility functions from anon namespace to ZT1_jniutils
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:39:07 -07:00
Grant Limberg 4906f8e848 added stub utility functions for creating ArrayLists, appending items to ArrayLists, creating InetAddress objects, and MulticastGroup objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 21:36:33 -07:00
Grant Limberg fa9d42b7e5 finished the JNI implementation of the status() method on Node
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:52:47 -07:00
Grant Limberg 1a528aec76 don't require clean before build
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:34:59 -07:00
Grant Limberg ffb9e2901e fix a build error
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:29:23 -07:00
Grant Limberg 407e2fc7de Added ant build script. Requires NDK_BUILD_LOC environment variable pointing to the ndk-build script
fixed compile erros in Node and VirutalNetworkConfig

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 20:17:29 -07:00
Grant Limberg 667a103a6a added functions to create Event, and VirtualNetworkStatus objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-23 19:16:45 -07:00
Grant Limberg 32a35e6808 scaffolding for implementation of status() and networkConfig()
They should be able to be called, but will not return valid objects yet

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:31:17 -07:00
Grant Limberg 34028aa7c8 Added implemenation for node.address()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:30:37 -07:00
Grant Limberg 3ccaef88b7 Added implementation for Node.version()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:29:45 -07:00
Grant Limberg f5bb57d5aa fix call to networkConfig to pass the network id
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:28:42 -07:00
Grant Limberg a1a35e0279 Can't instantiate enum objects. Fix createResultObject() function so that it still works properly
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 21:14:55 -07:00
Grant Limberg 1308f02b93 multicastSubscribe() and multicastUnsubscribe()
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:33:38 -07:00
Grant Limberg b078d69372 join() and leave() functions
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:29:34 -07:00
Grant Limberg e31e54483c added processBackgroundTasks function
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:25:35 -07:00
Grant Limberg 3c499777c8 added implementation for processWirePacket
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 20:21:12 -07:00
Grant Limberg 9c038d3ecd added a few missing function calls in the ZT1 Node API
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:36:46 -07:00
Grant Limberg 6187a91f4c delete the ZT1_Node object when calling Java_com_zerotierone_sdk_Node_node_1delete
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:29:45 -07:00
Grant Limberg 321b67c73c add a findNode() function to reduce copypasta
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:29:13 -07:00
Grant Limberg 5df253fa69 added implementation for processVirtualNetworkFrame
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:19:45 -07:00
Grant Limberg 3a6807d584 add assignedAddresses member to VirtualNetworConfig class
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:19:08 -07:00
Grant Limberg 787b4a8e50 * Change a few method signatures from java.lang.Long to long[] so that values can be passed back.
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-22 19:18:49 -07:00
Grant Limberg b33e4af49f Merge branch 'adamierymenko-dev' into android-jni 2015-04-22 18:14:14 -07:00
Adam Ierymenko 5202fbdaf3 CRUD 2015-04-22 18:06:26 -07:00
Adam Ierymenko 103dcb072d CRUD 2015-04-21 19:49:04 -07:00
Adam Ierymenko 79f63ba30a Fix: make sure we do not assign broadcast address as an IP to new members. 2015-04-21 18:37:17 -07:00
Adam Ierymenko 71f006cbeb More CRUD, almost done... 2015-04-21 18:08:33 -07:00
Adam Ierymenko e4046964f0 Forgot to run schema2c. 2015-04-21 16:50:02 -07:00
Adam Ierymenko ddebe2d4c7 Network controller CRUD... :P 2015-04-21 16:41:35 -07:00
Grant Limberg 0c8051da15 Move JNI methods to the bottom of the class
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:44:31 -07:00
Grant Limberg e0c8ddb65b call close() from the Node class's finalize method
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:36:59 -07:00
Grant Limberg bd4049fdc0 Added JNI code for construction/destruction of ZT1_Node objects
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:33:42 -07:00
Grant Limberg 5f314f209e Updated Java Node class native methods to pass the node ID
This is so that we know which C-based ZT1_Node struct is being operated on

Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 20:32:29 -07:00
Grant Limberg 99a1a4e65b Generated header files for JNI
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:31:42 -07:00
Grant Limberg ec3a1c87d1 first revision of the java API for ZeroTier One
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:27:15 -07:00
Grant Limberg f40eb665c5 Add build files for compiling ZeroTier One SDK for Android targets
Signed-off-by: Grant Limberg <glimberg@gmail.com>
2015-04-20 18:26:23 -07:00
Adam Ierymenko ed107c4daf Network preferred relay stuff in netconf controller. 2015-04-20 17:47:12 -07:00
Adam Ierymenko 8a13cfdace Add per-network relays to NetworkConfig. 2015-04-20 17:14:16 -07:00
Adam Ierymenko 86c87875a7 OSUtils::resolve() 2015-04-20 16:07:38 -07:00
Adam Ierymenko 69076f8a45 Add per-network relay stuff to sqlite table schema. 2015-04-20 15:46:20 -07:00
Adam Ierymenko 60f05518aa (1) now builds and works on Linux, (2) fix a threading problem causing carsh on shutdown, (3) cleanup in selftest, re-enable Phy and Http tests. 2015-04-20 15:12:31 -07:00
Adam Ierymenko 740121504f Add a timestamp to netconf cache, fix some SQL queries in NC. 2015-04-17 15:21:53 -07:00
Adam Ierymenko 417f56de2f Add some TRACE instrumentation to external surface address awareness. 2015-04-17 12:19:01 -07:00
Adam Ierymenko b51d00146b docs 2015-04-17 10:45:16 -07:00
Adam Ierymenko 8715242e7f build fix 2015-04-16 16:43:35 -07:00
Adam Ierymenko 895c32a0d2 Stash old software updater code, will refactor into separate utility. 2015-04-16 16:17:28 -07:00
Adam Ierymenko 489cc66b78 Don't need these files anymore. 2015-04-16 16:16:25 -07:00
Adam Ierymenko ce77e67e00 docs 2015-04-16 16:15:25 -07:00
Adam Ierymenko 1f5700191f zerotier-cli suspiciously working... that didn't hurt *too* badly. 2015-04-16 16:12:10 -07:00
Adam Ierymenko c4c5fa63d1 Almost done with JSON parsing for tabular output. 2015-04-16 15:51:56 -07:00
Adam Ierymenko 13d5073e5b CLI work and Makefile cleanup. 2015-04-16 15:07:58 -07:00
Adam Ierymenko 8333bf065e Basic CLI working with JSON output. Now to parse and support old tabular form. 2015-04-16 14:55:36 -07:00
Adam Ierymenko 53cbe485f0 Some cleanup, and bite the bullet and go ahead and write a simple Http client. Need a cross-platform built-in one to do cli right. 2015-04-16 14:13:44 -07:00
Adam Ierymenko 6c29e966dd Include a BSD licensed JSON parser for the CLI. 2015-04-16 12:27:51 -07:00
Adam Ierymenko 377367175c Update LZ4 in ext/ 2015-04-16 12:18:47 -07:00
Adam Ierymenko 12b4646ce8 Prettify JSON output. 2015-04-16 12:06:40 -07:00
Adam Ierymenko 4e5d2d2c72 Write a zerotier-one.port file to the home path to make CLI easy to write, and do a backward compatiable CLI in bash instead of as part of the executable. 2015-04-15 19:38:01 -07:00
Adam Ierymenko 21a7e774bb Wire API auth token stuff. 2015-04-15 19:14:12 -07:00
Adam Ierymenko c301d8e438 Remove network/controller -- we will do this in Ruby instead since it will be part of the whole OnePoint project anyway. 2015-04-15 19:01:38 -07:00
Adam Ierymenko d2503172d8 Add some additional detail to the peer record in CAPI and JSON control plane. 2015-04-15 19:00:26 -07:00
Adam Ierymenko 91ca238163 Compile fixes. 2015-04-15 18:47:38 -07:00
Adam Ierymenko 33c8d3c50b Compile fixes. 2015-04-15 18:36:32 -07:00
Adam Ierymenko ea1859541c More cleanup, and fix for the extremely unlikely case of identity collision. 2015-04-15 18:32:25 -07:00
Adam Ierymenko f7b1437154 Putting the main binary back together... 2015-04-15 17:00:26 -07:00
Adam Ierymenko 6369c264e2 Rename netconf to controller and NetworkConfigMaster to NetworkController for consistency. 2015-04-15 15:12:09 -07:00
Adam Ierymenko 871473255b Cleanup, drop 32-bit from Mac build flags since i386 is pretty thoroughly deprecated and dead on OSX. We will have to make our updater stop updating on any 32-bit Macs that might actually still be running ZT1. 2015-04-15 14:54:37 -07:00
Adam Ierymenko a0f8685453 cleanup 2015-04-15 14:44:30 -07:00
Adam Ierymenko 8639538299 Rename One to OneService, create separate sources for other tools. 2015-04-15 14:42:26 -07:00
Adam Ierymenko 98bcc3d4b5 Disable a few noisy TRACEs, and limit how often we confirm new paths to avoid flooding. 2015-04-15 13:15:09 -07:00
Adam Ierymenko 1c9ca73065 Fix some deadlock issues, move awareness of broadcast subscription into core, other bug fixes. 2015-04-15 13:09:20 -07:00
Adam Ierymenko 508519b62a Tap driver load fix. 2015-04-14 19:21:56 -07:00
Adam Ierymenko c9af603b9f Add beacon broadcasting back into Node. 2015-04-14 18:20:03 -07:00
Adam Ierymenko aeb4b42ab3 Make tap itself handle remembering sticky device to nwid mappings. 2015-04-14 18:13:46 -07:00
Adam Ierymenko 67f1f1892f Bunch of tap stuff, IP address assignment hookups, etc. 2015-04-14 17:57:51 -07:00
Adam Ierymenko e205e5fdfe Include tap device name in JSON output for network info. 2015-04-14 15:55:03 -07:00
Adam Ierymenko 347e98dcd2 Just return files from listDirectory() since that is all we need, fix network request on network restore logic, and remember saved networks in service/One 2015-04-14 15:32:05 -07:00
Adam Ierymenko 29a2175b7a Fix missed closedir() 2015-04-14 15:17:59 -07:00
Adam Ierymenko 49d31613b9 Fix some minor issues, now to reintegrate taps. 2015-04-14 15:16:04 -07:00
Adam Ierymenko 758b5caf94 Fix < logic. 2015-04-14 14:52:23 -07:00
Adam Ierymenko 6f4b30add8 Turns out you do have to unpack and compare sockaddr structures due to sin_len / sin6_len not present on all platforms and other junk. 2015-04-14 14:49:34 -07:00
Adam Ierymenko 1cfa67bbdd Bunch more control plane work, and shelve old UI -- React FTW. 2015-04-14 13:56:28 -07:00
Adam Ierymenko a2605561af Basic control plane queries working. 2015-04-13 18:43:33 -07:00
Adam Ierymenko b888e033c0 JSON control plane, almost done... 2015-04-13 18:12:45 -07:00
Adam Ierymenko ff0eff4b7c Decided to back out of doing HTTP/TCP server *and* client within ZT itself. Instead we'll do the TCP tunneling endpoint as a separate little daemon. It will appear here shortly. 2015-04-13 12:27:29 -07:00
Adam Ierymenko 5c1262f324 Basic framework of HTTP server is there. 2015-04-10 19:36:29 -07:00
Adam Ierymenko daef54ba32 HTTP server is in, and works. 2015-04-10 19:08:49 -07:00
Adam Ierymenko 5572b7ffb6 Simplify Phy<> to get rid of more indirections. 2015-04-10 17:07:06 -07:00
Adam Ierymenko 7576911951 Temporarily shelve testnet/ -- will resurrect self-contained testnet later perhaps, but probably will not by the time next version ships. Was mostly for debugging multicast anyway and that is now quite stable. 2015-04-10 11:42:02 -07:00
Adam Ierymenko 9e651b39e4 Add some TRACE around pinging (for now), and refactor service/One to just run in the foreground as some platforms may not require threads at all. 2015-04-10 11:40:45 -07:00
Adam Ierymenko 08a11a6f32 Since which tap to use is chosen statically at compile time and the factories are gone, there is now no need for inheritance or virtual methods (indirect calls) here. Should improve performance slightly to get rid of them. 2015-04-10 10:19:45 -07:00
Adam Ierymenko 5e331d6733 Restrict unite() to desperation==0 since NAT-t only works right now with direct links. 2015-04-10 10:13:50 -07:00
Adam Ierymenko 068d311ecc TRACE compile fixes, other fixes, and it basically works! It says HELLO. 2015-04-09 20:54:00 -07:00
Adam Ierymenko 38200cc6a5 Add data store functions to service/One, and shelve old main.cpp since it will get rebuilt. 2015-04-09 19:58:04 -07:00
Adam Ierymenko 6615a70027 Service code builds now. 2015-04-09 18:22:04 -07:00
Adam Ierymenko 46ecad451c Starting on new service/ code to encapsulate node/ with osdep/ stuff, and add a user pointer to the CAPI. 2015-04-09 18:14:27 -07:00
Adam Ierymenko 9342380146 docs 2015-04-09 11:27:23 -07:00
Adam Ierymenko 7192fe6d15 osdep/ compile fixes, and remove some lingering OS-specific stuff from node/Defaults 2015-04-08 19:03:30 -07:00
Adam Ierymenko d761330465 No more tap factories. 2015-04-08 18:47:06 -07:00
Adam Ierymenko ccc73b920e Node peer list function for CAPI, and some Peer cleanup. 2015-04-08 18:45:21 -07:00
Adam Ierymenko d9e9b60a98 Node status and network list. 2015-04-08 18:25:40 -07:00
Adam Ierymenko e34bc961db Add awareness of online status, and put old OS-dep utils in OSUtils. 2015-04-08 17:10:21 -07:00
Adam Ierymenko 0751eaabd8 Clean OS-dep stuff out of node/Utils. 2015-04-08 16:55:00 -07:00
Adam Ierymenko 12431ce95d Clean out attic. 2015-04-08 16:50:14 -07:00
Adam Ierymenko 4d5a6a25d3 Add events for packet decode errors, etc., and re-implement TRACE as an event. 2015-04-08 16:49:21 -07:00
Adam Ierymenko 9d9d0ef12c Rename StatusCallback to more descriptive EventCallback. 2015-04-08 16:07:47 -07:00
Adam Ierymenko c894710ac1 Remove Logger.hpp references. 2015-04-08 16:00:48 -07:00
Adam Ierymenko 608b5ca13a . 2015-04-08 15:56:19 -07:00
Adam Ierymenko 37bd6fdb9c Move Logger to attic -- last bit of OS-specific stuff to get out of core. 2015-04-08 15:56:11 -07:00
Adam Ierymenko 7529d050c7 All of node/ now compiles again! 2015-04-08 15:42:23 -07:00
Adam Ierymenko bf2ff964e1 Utils::now() removal and a bunch of compile fixes. 2015-04-08 15:26:45 -07:00
Adam Ierymenko ee2f51f48e Make Toplogy use dataStoreXX() methods from Node, and get rid of old TCP stuff. 2015-04-08 15:12:04 -07:00
Adam Ierymenko 40bfe37a19 Use max of core or most recent path desperation for pings. 2015-04-08 14:58:23 -07:00
Adam Ierymenko 59af674e74 Announce multicast groups on multicast subscribe. 2015-04-07 19:35:16 -07:00
Adam Ierymenko 6de7996218 Math fix. 2015-04-07 19:32:26 -07:00
Adam Ierymenko 49f031ccb4 Tons of refactoring, change to desperation algorithm to use max of core or link, porting over core loop code from old Node.cpp to new CAPI version, etc. 2015-04-07 19:31:11 -07:00
Adam Ierymenko 9e55f882d3 Starting to port from old Node() -- identity generation. 2015-04-07 16:41:56 -07:00
Adam Ierymenko 8210ed4805 Implement read from object store. 2015-04-07 14:11:47 -07:00
Adam Ierymenko 0a90681849 Add ping(), and a logic fix in SelfAwareness. 2015-04-07 12:32:05 -07:00
Adam Ierymenko 24608d5ca3 Always use HELLO to contact, and we now confirm newly learned paths via a two-way handshake to prevent half-connects. 2015-04-07 12:22:33 -07:00
Adam Ierymenko eae2c89b09 Mutex locking fix. 2015-04-07 11:58:41 -07:00
Adam Ierymenko 52c3b7c34e Implemented empirical determination of external addressing, paritioned per scope. 2015-04-07 11:56:10 -07:00
Adam Ierymenko 817824b88b Some external surface awareness work, and IP scope classification. 2015-04-07 10:57:59 -07:00
Adam Ierymenko a2821e9000 Add code to check external surface against reported surface from other trusted peers, and also rename ExternalSurface to SelfAwareness because lulz. 2015-04-06 20:17:21 -07:00
Adam Ierymenko 76ad19f411 Use binary_search for multicast groups, which are kept in sorted order. 2015-04-06 19:41:55 -07:00
Adam Ierymenko 758bf949db Check for subscribed multicast groups should be able to check groups bridged behind me. 2015-04-06 19:34:36 -07:00
Adam Ierymenko 4e691c8e22 build fixes 2015-04-06 18:56:08 -07:00
Adam Ierymenko 6807ccd710 Don't need to announce on multicast leave. 2015-04-06 18:28:18 -07:00
Adam Ierymenko 51f46a009a Multicast group join/leave and group membership announcement. 2015-04-06 18:27:24 -07:00
Adam Ierymenko 8001b2c0cb Network now calls port config function as per new API. 2015-04-06 16:52:52 -07:00
Adam Ierymenko a86300c58f Network build fixes and cleanup of remaining internal references to _tap 2015-04-06 15:47:57 -07:00
Adam Ierymenko 488f5bf977 More build fixes, and attic/ some stuff. 2015-04-06 15:14:54 -07:00
Adam Ierymenko 197d272287 More NAT strategy cleanup. 2015-04-06 15:08:45 -07:00
Adam Ierymenko be4683a96d Get rid of random port strategy -- research does not support. 2015-04-06 15:03:08 -07:00
Adam Ierymenko 5f351f2f6b build fixes. 2015-04-06 14:55:40 -07:00
Adam Ierymenko f4fd2d4971 Bring IncomingPacket into line with new changes. 2015-04-06 14:50:53 -07:00
Adam Ierymenko a95f1e1418 Eliminate redundant SharedPtr assignment. 2015-04-03 17:01:07 -07:00
Adam Ierymenko 6eb9289367 Bunch more cleanup, improvements to NAT traversal logic, finished updating Switch. 2015-04-03 16:52:53 -07:00
Adam Ierymenko ee0f56355b Send path simplification. 2015-04-03 13:14:37 -07:00
Adam Ierymenko a69e1876f1 The concept of link desperation (escalating to less desirable transports) simplifies a ton of stuff. Loads of spaghetti logic can die since we no longer have to make these decisions down in the core. 2015-04-02 17:54:56 -07:00
Adam Ierymenko 5f51653f9c More cleanup. 2015-04-01 19:16:07 -07:00
Adam Ierymenko 0214dbc277 More cleanup. 2015-04-01 19:15:21 -07:00
Adam Ierymenko 1f28ce3980 Tons more refactoring: simplify Network, move explicit management of Tap out, redo COM serialization, etc. 2015-04-01 19:09:18 -07:00
Adam Ierymenko 49349470a0 ... 2015-04-01 16:27:14 -07:00
Adam Ierymenko 8130848020 More refactoring... and update the API a bit... turns out my strategy for reducing indirect function calls also increased memcpy()s which are more expensive. This is simpler and faster. 2015-04-01 14:59:44 -07:00
Adam Ierymenko 7ff0cab1b7 docs 2015-03-31 18:33:39 -07:00
Adam Ierymenko b723855751 Refactoring... lalalala... 2015-03-31 18:17:11 -07:00
Adam Ierymenko 36eab4f1a9 Whole heap more cleanup and refactoring... 2015-03-31 17:53:34 -07:00
Adam Ierymenko 647ce82b86 Move more stuff into osdep/ -- node/ will not use threads directly. 2015-03-31 15:23:14 -07:00
Adam Ierymenko e61a40a956 docs 2015-03-31 14:12:33 -07:00
Adam Ierymenko a61acf36d2 osnet -> osdep 2015-03-31 14:11:21 -07:00
Adam Ierymenko 8990fb8267 osnet -> osdep 2015-03-31 14:10:02 -07:00
Adam Ierymenko 2c5dbecb3c More CAPI work, and move old control/ and old node/Node to attic. 2015-03-31 13:54:50 -07:00
Adam Ierymenko fe94c9460b Phy is a better name than Wire, and other cleanup. 2015-03-31 11:52:10 -07:00
Adam Ierymenko fe87c1db67 Work on new simplified C API -- required for embedded, language bindings, mobile (language bindings again), etc. 2015-03-30 19:46:07 -07:00
Adam Ierymenko 60158aa5dd Turns out that node/ likely has no business with or need for the system IP routing table. So shelve that code for now. 2015-03-30 17:48:48 -07:00
Adam Ierymenko 3c1a59fa24 Wire selftest, and passes all tests. 2015-03-30 15:37:44 -07:00
Adam Ierymenko b6241f6cb1 Build fixes. 2015-03-30 13:21:35 -07:00
Adam Ierymenko 4445bfc869 Wire should be good to test. 2015-03-26 14:44:31 -07:00
Adam Ierymenko 8d409def74 More Wire cleanup/docs and minor fixes. 2015-03-24 13:45:31 -07:00
Adam Ierymenko 91810c5f44 A bit more cleanup and doc work on new select abstraction 2015-03-24 10:09:05 -07:00
Adam Ierymenko 64ea58d523 Most of new cleaner IO abstraction. 2015-03-23 17:07:47 -07:00
Adam Ierymenko 96737368aa Add MIT-licensed Joyent http-parser lib to ext/ for use with new control plane. 2015-03-20 13:32:31 -07:00
Adam Ierymenko 7ee1a1151f Add SqliteNetworkConfigMaster::DBC for external access to raw sqlite3 db. 2015-03-20 12:21:18 -07:00
Adam Ierymenko a8a92c5b89 A whole lot of Sqlite netconf master work, and some fixes elsewhere in the code. 2015-03-18 16:10:48 -07:00
Adam Ierymenko cea3f28155 DB init works now. 2015-03-17 16:27:52 -07:00
Adam Ierymenko ba69240bcb Sqlite auto-init and version check. 2015-03-17 15:20:45 -07:00
Adam Ierymenko 49a2450e76 Include the Sqlite schema to auto-init the database. 2015-03-17 14:54:13 -07:00
Adam Ierymenko 278c8fd9f1 Wire up externally specified NetworkConfigMaster 2015-03-13 13:53:15 -07:00
Adam Ierymenko 61d89bd118 docs 2015-03-12 14:27:14 -07:00
Adam Ierymenko 1b0908fab2 Delete duplicate redis-schema.md 2015-03-12 14:04:21 -07:00
Adam Ierymenko 31bf0a4ea6 Netconf build fixes, schema, etc. 2015-03-12 14:03:53 -07:00
Adam Ierymenko fab951e98a Sqlite schema for netconf. 2015-03-12 09:56:03 -07:00
Adam Ierymenko ab211cf599 Changed my mind design-wise on netconf/ -- will embed using SQLite. This fits much better into the OnePoint plans. I am also officially sick of NoSQL, which in this cases forces you to invent things that SQL gives you for free. 2015-03-11 08:44:38 -07:00
Adam Ierymenko badf260e1f Add historic protocol docs exhibit. 2015-03-02 06:50:42 -08:00
Adam Ierymenko 66f29f09da Make clean fixes. 2015-02-26 14:54:56 -08:00
Adam Ierymenko ecffa9f5e7 Redis network config master work, and the beginnings of some actual unit test code. 2015-02-24 16:15:01 -08:00
Adam Ierymenko b6fba5934a RedisNetworkConfigMaster in its own folder. Also fix some hex/decimal Redis database confusion. 2015-02-24 14:17:57 -08:00
Adam Ierymenko 78fc62d967 netconf/ is where Redis code lives 2015-02-24 12:41:24 -08:00
Adam Ierymenko ff255a34de Make NetworkConfigMaster a plugin to get Redis and other non-endpoint code out of node/ 2015-02-24 12:28:58 -08:00
Adam Ierymenko 93012b0ee5 Re-incorporation: ZeroTier Networks -> ZeroTier, Inc. [Delaware] 2015-02-17 13:11:34 -08:00
Adam Ierymenko 89f0c948f8 Physical address change message verb. 2015-02-04 11:59:02 -08:00
Adam Ierymenko eeed31b396 Ping supernodes on surface change, and also reset TCP flag. 2015-02-02 17:02:23 -08:00
Adam Ierymenko b7148c107d Rip out network environment fingerprint. This will be replaced by constant monitoring of actual external address surface. 2015-02-02 16:40:57 -08:00
Adam Ierymenko b1bf3f68c3 Drop support for legacy P5 multicast, as there are fewer than 1% of these remaining on the network. 2015-02-02 16:34:01 -08:00
Adam Ierymenko 37d23336ed Surface logic in Topology. 2015-02-02 16:23:26 -08:00
Adam Ierymenko 61cff47f5b Code to track externally visible address surface. 2015-02-02 15:24:05 -08:00
Adam Ierymenko c30bf7957e Hash code method for InetAddress 2015-02-02 14:44:24 -08:00
Adam Ierymenko d73a11b60b Add netconf build option to Mac build file too. 2015-01-13 16:45:23 -08:00
Adam Ierymenko 83227dc386 Now demote Amsterdam supernode. Appears to be having issues due to some sort of poor hosting provider performance. 2015-01-13 08:43:38 -08:00
Adam Ierymenko fbc6ca28b7 Merge branch 'adamierymenko-dev' of ssh://earth.zerotier.net:55522/git/ZeroTierOne into adamierymenko-dev 2015-01-12 09:49:11 -08:00
Adam Ierymenko 72f926dc41 Add new faster supernode in Paris, France. 2015-01-12 09:22:37 -08:00
Adam Ierymenko eab3ca1401 docs 2015-01-09 18:44:17 -05:00
Adam Ierymenko c8c5d3b06e Create netconf master if redis options are in local.conf. 2015-01-09 18:25:41 -05:00
Adam Ierymenko 0b84c10ccc Add confirmation step to new netconf, with the caveat that it will be disabled for older netconf servers to avoid race. Also add some comments. 2015-01-09 16:35:20 -05:00
Adam Ierymenko afea153a0b Build fixes. 2015-01-08 18:17:02 -05:00
Adam Ierymenko 64ba596e0b C++ network config master ready to test. 2015-01-08 14:27:55 -08:00
Adam Ierymenko 60fb28a90a Cleanup, new C++ netconf code is almost ready to test! 2015-01-06 17:16:54 -08:00
Adam Ierymenko a369c69091 C++ netconf master Redis plumbing. 2015-01-06 13:45:10 -08:00
Adam Ierymenko f043321281 Revised Redis schema. 2015-01-06 11:04:53 -08:00
Adam Ierymenko b644d2a893 Add timestamp field to network config requests. 2015-01-05 17:51:50 -08:00
Adam Ierymenko 4e95384ad6 Cleanup, add tristate to config code in Network, and happy new year! 2015-01-05 17:47:59 -08:00
Adam Ierymenko 08ba2ff752 Upgrade LZ4. 2015-01-05 16:23:32 -08:00
Adam Ierymenko efa0bab296 Stash old Node.JS netconf-service in attic/ 2015-01-05 16:20:20 -08:00
Adam Ierymenko 96e9a90e8e docs 2015-01-05 16:19:56 -08:00
Adam Ierymenko 87c599df5c Back out service message type -- YAGNI violation. 2015-01-05 15:52:02 -08:00
Adam Ierymenko 56cfe1d603 Strip out old Service code, add new service message type. 2015-01-05 11:47:22 -08:00
Adam Ierymenko 95e303d6f3 VERSION 1.0.2: Experimental FreeBSD support!
Version 1.0.2 brings experimental FreeBSD support. It has ONLY been tested
on FreeBSD 10 on an x64 system, and should be considered alpha for this
platform for now.

This version is not going to be pushed out to the entire world via software
update, and the binary version distributed for other platforms via the
zerotier.com web site will remain 1.0.1 as there are no other meaningful
user-facing changes. This is just an interim release to let FreeBSD users
try it out. If you find bugs, please enter them on GitHub or do a pull
request and fix them yourself.
2014-12-19 15:25:28 -08:00
Adam Ierymenko ebb63cce70 Merge branch 'adamierymenko-dev' of ssh://earth.zerotier.net:55522/git/ZeroTierOne into adamierymenko-dev 2014-12-19 15:24:23 -08:00
Adam Ierymenko f24283a674 VERSION 1.0.2: Experimental FreeBSD support!
Version 1.0.2 brings experimental FreeBSD support. It has ONLY been tested
on FreeBSD 10 on an x64 system, and should be considered alpha for this
platform for now.

This version is not going to be pushed out to the entire world via software
update, and the binary version distributed for other platforms via the
zerotier.com web site will remain 1.0.1 as there are no other meaningful
user-facing changes. This is just an interim release to let FreeBSD users
try it out. If you find bugs, please enter them on GitHub or do a pull
request and fix them yourself.
2014-12-19 15:20:47 -08:00
Adam Ierymenko f60dfe4963 FreeBSD works, and some documentation fixes. 2014-12-19 15:18:20 -08:00
Adam Ierymenko 536bcf6505 FreeBSD builds! 2014-12-19 14:33:58 -08:00
Adam Ierymenko 1a02bcc9f5 Fork OSXEthernetTapFactory -> BSDEthernetTapFactory 2014-12-19 13:34:06 -08:00
Adam Ierymenko d10abab786 Remove &s from restarts in installer -- probably part of the restart problem. 2014-12-16 12:32:53 -05:00
Adam Ierymenko ff539c22f9 locallyValidate() is expensive -- stop doing it on every HELLO since in most cases we already know the identity and know it is valid 2014-12-16 09:29:40 -08:00
Adam Ierymenko 0324ef2a47 VERSION 1.0.1
This version is mostly a bug fix release. It fixes a bug that could cause
the service to crash on Windows while running the GUI application. It also
contains a number of fixes to the Linux installer and Linux support for
systemd-based init systems.

It also includes a minor tweak to the multicast algorithm. Version 1.0.0
sent multicasts in a deterministic order, while this version randomizes
the order. The vast majority of users will notice nothing, but this may result
in superior coverage for service announcements on very large networks. It's
a hard variation to test, so we're releasing like this to gather information
from users about the effect. Nothing will change on small networks, and
ordinary multicast functions like ARP and NDP should be unaffected.

The next version will likely focus on additional improvements to Microsoft
Windows support, since there are several known Windows issues in need of
attention. We're working on an NDIS6-based Tap driver that should address
the driver issues experienced by a small number of Windows 7 users.
2014-12-05 12:10:18 -08:00
Adam Ierymenko cd2bf6f4b3 Stash make-freebsd.mk in attic/ to indicate that the FreeBSD port is not done net. Coming soon! 2014-12-05 09:36:16 -08:00
Adam Ierymenko ad4923846a Add .autoupdating to Debian package version too. 2014-12-05 17:34:05 +00:00
Adam Ierymenko 83a6edd08e Make RPM version contain .autoupdating to indicate that it auto updates outside normal RPM channels. 2014-12-05 12:26:53 -05:00
Adam Ierymenko 58f2dc5cf3 RPM build support in buildinstaller.sh 2014-12-04 20:13:41 -05:00
Adam Ierymenko 3a786ccc17 Set Debian arch correctly on armv6l (armhf) 2014-12-04 22:38:49 +00:00
Adam Ierymenko b3a9bfca4d Fix Debian package upgrade process. 2014-12-04 21:28:03 +00:00
Adam Ierymenko 03c7dc2b4c Add .service to unit name in uninstall too. 2014-12-04 00:16:10 +00:00
Adam Ierymenko 000eac5a2b Another systemd change... should fix problems on some systems. 2014-12-03 16:05:18 -08:00
Adam Ierymenko 62c31e70d4 Systemd permission fix in Linux installer. 2014-12-03 23:57:08 +00:00
Adam Ierymenko 1b6af7836e Don't restart ZeroTier One service if version has not changed. 2014-12-03 23:25:06 +00:00
Adam Ierymenko 638ae153cc fix service command, eliminate all uses of killall since it might be missing 2014-12-03 22:46:44 +00:00
Adam Ierymenko 059aaae7a9 Preinst and postinst Debian scripts. 2014-12-03 22:09:17 +00:00
Adam Ierymenko 4bf2fa3edb Basic Debian package support in buildinstaller.sh 2014-12-03 21:40:33 +00:00
Adam Ierymenko 149dbff3ea Windows Visual Studio meaningless-warning-ectomy. 2014-12-02 16:50:53 -08:00
Adam Ierymenko c030294bf5 Clean up some unused Windows files. 2014-12-02 16:43:01 -08:00
Adam Ierymenko 30e82a4d9c Fix network enumeration buffer size bug -- reported by user Neal Symms via LiveAgent 2014-12-02 12:53:30 -08:00
Adam Ierymenko 8c64046a53 docs 2014-11-26 14:59:43 -08:00
Adam Ierymenko 04e4c5263e Remove more legacy code -- just doing the supernode redist for old multicast is now good enough given the small number of legacy nodes left. 2014-11-26 13:39:57 -08:00
Adam Ierymenko 4303376ba6 cleanup and docs 2014-11-26 13:30:00 -08:00
Adam Ierymenko cda61fe2d9 docs and cleanup 2014-11-26 13:14:18 -08:00
Adam Ierymenko 0f505411cf Enable legacy multicast in Constants. 2014-11-25 14:12:33 -08:00
Adam Ierymenko 15d3e383e6 Add ZT_SUPPORT_LEGACY_MULTICAST ifdef to enable the legacy code to all be toggled. 2014-11-25 12:46:51 -08:00
Adam Ierymenko 6888c6482c Re-enable legacy multicast distribution -- still too many pre1.0.0 nodes online. 2014-11-24 10:37:34 -08:00
Adam Ierymenko d772639cc6 Multicast code cleanup. 2014-11-24 10:05:16 -08:00
Adam Ierymenko acac88cf77 A few more tweaks to MC algo... 2014-11-23 14:00:27 -08:00
Adam Ierymenko 0bcac1fd79 Add a bunch of high-resolution try/catch safety in Node main loop to attempt to snare gremlin. 2014-11-21 11:54:06 -08:00
Adam Ierymenko 959f611a65 Fix thinko in multicast changes... works now! 2014-11-21 11:27:53 -08:00
Adam Ierymenko 7619b0ecbd Send multicasts in random order.
This should not affect most users, but on large networks it should cause service
announcements to work a lot better. This is the result of a prolonged discussion
with a user about the visibility of game servers on a large network. The old
multicast algorithm was de-facto randomized due to its distributed nature, while
the new algorithm is more deterministic. This will restore some randomization
beyond limit-overflow conditions.

It won't affect small networks at all.
2014-11-21 10:50:27 -08:00
Adam Ierymenko 0c85b4ef5f Tweak to symmetric NAT buster to add one to the number of ports above the current one it attempts. 2014-11-20 13:42:18 -08:00
Adam Ierymenko ee9e6a3c6b Change path selection logic to exclude non-fixed and non-active paths -- possible fix for "NAT traversal coma" issue. Also fix a typo. 2014-11-20 13:20:16 -08:00
Adam Ierymenko 7b6f10e859 Optimization: we don't need to verify signatures on certs if they're certs we already have and have verified. 2014-11-13 12:40:51 -08:00
Adam Ierymenko c61e9c0ef9 Prevent "software laser" in legacy multicast support. Already hotpatched in supernodes. 2014-11-13 14:21:06 -05:00
Adam Ierymenko b1b37d9d72 Increase paltry listen() backlog size to prevent Linux kernel syn flood fallback (only really affects supernodes). 2014-11-12 14:05:03 -08:00
Adam Ierymenko 1bd5a1ebcd Make selftest build and run on FreeBSD 10 with gmake 2014-11-04 11:20:38 -08:00
Adam Ierymenko 14e4ffd15f VERSION 1.0.0
ZeroTier 1.0.0 brings a number of under the hood improvements and bug
fixes. These include but are not limited to:

 * A simpler, faster multicast algorithm that places full burden
   for multicast propagation on the sender. This results in better
   fairness without CPU-intensive signature/verify on every packet,
   lower latency for intra-data-center SDN operations, and avoids
   distributed burdens that are intrinsically unfriendly to mobile
   clients subject to wake frequency limits and battery life
   constraints. In the future this may be augmented to allow
   optimized delivery to multiple recipients at the same site via
   federation.

 * Significant code reorg to move toward mobile support (iOS, Android)
   and future SDK packaging.

 * A number of efficiency and stability improvements.

 * Bug fixes for Linux and ARM users.

 * Improved NAT traversal, including limited support for port
   numbering scheme guessing to traverse some symmetric NATs.

Upgrade from 0.9.x is not required but is strongly recommended. Older
clients using the old multicast algorithm are presently supported via
legacy hooks, and these may go away at some point in the future. We'll
monitor the status of the network and try to keep legacy support around
as long as people need it, but it'll probably be pulled once 95%+ of
clients are 1.0.0 or newer.

The next versions will bring further bug fixes, improved user experience,
more enterprise-grade features for intra-data-center use, and more!
2014-10-30 12:49:16 -07:00
Adam Ierymenko 16461eca1f docs 2014-10-30 12:47:26 -07:00
Adam Ierymenko 8f29f19e98 Fix for UI client. 2014-10-30 00:12:45 -07:00
Adam Ierymenko 5ca20da7af Windows service fix -- it helps if we actually launch the control socket thing. 2014-10-29 23:57:54 -07:00
Adam Ierymenko 8bd9f7d51d Build fix for UI and mac. 2014-10-29 19:54:24 -07:00
Adam Ierymenko 0e84eb3852 Back off default multicast limit just a little. 2014-10-29 18:25:24 -07:00
Adam Ierymenko 4923ab2945 Windows build fix, set up Windows solution with new layout. 2014-10-29 17:40:23 -07:00
Adam Ierymenko 4c59497b95 Linux build fixes for testnet. 2014-10-29 16:32:24 -07:00
Adam Ierymenko 5484cf4309 More cleanup, and fix a bug in Multicaster::gather() 2014-10-29 16:24:19 -07:00
Adam Ierymenko 22d8aa4dc9 Moderate efficiency improvement on multicast gather result parsing, and go ahead and keep track of total known peers. 2014-10-29 15:26:32 -07:00
Adam Ierymenko 95f421024a Code cleanup, and fix some unsafe pointer handling in Network. 2014-10-29 13:57:37 -07:00
Adam Ierymenko f65b48d447 Thread sync bug... 2014-10-28 17:29:45 -07:00
Adam Ierymenko 5bb854e504 Fix a nasty bug introduced in packet fragmentation a while back during refactoring, and a few other things related to multicast. 2014-10-28 17:25:34 -07:00
Adam Ierymenko faff84e63a docs 2014-10-28 16:14:05 -07:00
Adam Ierymenko 9a5f6f020f docs 2014-10-28 15:53:11 -07:00
Adam Ierymenko 4dec598fb8 Make multicast gather slightly more aggressive, and add total to list command in testnet. 2014-10-28 15:33:10 -07:00
Adam Ierymenko 3e948fcd93 .... aaaaaaand multicast testnet functionsa are in! 2014-10-28 15:06:43 -07:00
Adam Ierymenko 8aa75321e2 docs 2014-10-28 14:46:15 -07:00
Adam Ierymenko ffbf0781fe docs 2014-10-28 14:27:21 -07:00
Adam Ierymenko e4966c7a07 docs 2014-10-28 14:25:44 -07:00
Adam Ierymenko ac23f74547 docs 2014-10-28 14:24:07 -07:00
Adam Ierymenko fa60463da5 docs 2014-10-28 14:23:39 -07:00
Adam Ierymenko 3d85a615fb NULL dereference on still-initializing node bug fix in status query commands, and doc updates. 2014-10-28 14:17:39 -07:00
Adam Ierymenko f873881a0d Helps to use a proper multithreaded queue instead of ugly plebian hackery. 2014-10-28 12:28:45 -07:00
Adam Ierymenko 934a575a74 Testnet seems to work a bit better now... 2014-10-27 18:23:10 -07:00
Adam Ierymenko fe7b429866 ... 2014-10-27 17:32:37 -07:00
Adam Ierymenko 295f6a20e0 Testnet works! sort of... 2014-10-27 14:25:00 -07:00
Adam Ierymenko 6a94a4a51b Testnet WIP 2014-10-27 09:03:38 -07:00
Adam Ierymenko 8672ca9cf8 Prep for real tests like alltoall. 2014-10-24 17:29:09 -07:00
Adam Ierymenko a75a7547b4 Deadlock fix... 2014-10-24 17:11:23 -07:00
Adam Ierymenko 3857116724 More testnet work. 2014-10-24 16:35:06 -07:00
Adam Ierymenko 5c7cd53f13 Testnet sort of works! spins up supernodes. 2014-10-24 08:48:44 -07:00
Adam Ierymenko 4fbb098daa Testnet work... getting there! 2014-10-23 16:46:09 -07:00
Adam Ierymenko 0a195e7bc0 Some work on simulated net... 2014-10-22 09:52:29 -07:00
Adam Ierymenko ae228ade8c Starting on simulated socket manager. 2014-10-21 17:00:25 -07:00
Adam Ierymenko 4a5756e7fb cleanup 2014-10-21 16:21:45 -07:00
Adam Ierymenko 29ba34ab7c Kill old testnet stuff, update main.cpp for new SocketManager abstraction. 2014-10-21 15:33:35 -07:00
Adam Ierymenko 2436e22f46 More work on abstracting socket manager. 2014-10-21 15:18:50 -07:00
Adam Ierymenko 128a131070 About halfway there in refactoring to support pluggable SocketManager. 2014-10-21 14:26:10 -07:00
Adam Ierymenko 6bc9a938cf Move socket manager implementation into osnet/ 2014-10-21 11:25:31 -07:00
Adam Ierymenko 0e47f13f14 Simplify locking semantics some more to address a deadlock. 2014-10-21 10:42:04 -07:00
Adam Ierymenko 7c0f5e97e1 Don't need to check peer version for every item in txQueue since there is only one peer. 2014-10-19 15:20:19 -07:00
Adam Ierymenko 0fd562bebc One more Windows build fix. 2014-10-19 13:10:23 -07:00
Adam Ierymenko 8730d30575 Now for some clang compile fixes... 2014-10-19 13:07:50 -07:00
Adam Ierymenko babf3787c6 Switch VS2012 build back to real, not self-test. 2014-10-19 12:58:13 -07:00
Adam Ierymenko 74f36f5dc0 Windows build fixes. 2014-10-19 12:56:39 -07:00
Adam Ierymenko 2eeb3dee9e Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-10-18 15:02:03 +02:00
Adam Ierymenko 4951e5e1b5 This is a --strategy=ours merge to allow adamierymenko-dev to replace
the current content of detached-network-test. This is ready for another
test in 'headless' mode.

Merge branch 'detached-network-test' into adamierymenko-dev
2014-10-18 15:00:47 +02:00
Adam Ierymenko 6429c51ec7 Merge branch 'detached-network-test' into adamierymenko-dev 2014-10-18 14:57:04 +02:00
Adam Ierymenko a8bd8fff93 Make several changes to eliminate potential deadlock or recursive lock conditions, and add back rescan of multicast groups on network startup. 2014-10-14 16:38:27 -07:00
Adam Ierymenko a94b0e6a43 Get rid of rescanMulticastGroups() in Network thread since this can deadlock... the fact that this can happen is probably bad design. 2014-10-14 15:58:03 -07:00
Adam Ierymenko 7a37326cc0 Fix sleeper bug that probably did nothing in setSupernodes(). 2014-10-14 14:59:17 -07:00
Adam Ierymenko 42d644a57e More fixes to legacy support, and to a potential issue on quit. 2014-10-14 12:37:35 -07:00
Adam Ierymenko 023cac4ebb Add -g to optimized crypto code in ZT_DEBUG=1 build mode. 2014-10-14 10:22:27 -07:00
Adam Ierymenko 2416491cbc Permanently retire peers.persist, but make iddb.d always enabled instead since identities are what we really want to cache. 2014-10-13 14:12:51 -07:00
Adam Ierymenko 6e23986bb3 Another build fix. 2014-10-13 13:09:02 -07:00
Adam Ierymenko 1921e28c5f Build fix. 2014-10-13 12:35:43 -07:00
Adam Ierymenko 52314dcdf6 GitHub issue #111 2014-10-13 11:47:14 -07:00
Adam Ierymenko d8d4aace42 Fix for init.d/zerotier-one (again) 2014-10-13 12:55:16 -04:00
Adam Ierymenko 05309037a8 Yank potentially costly support for TTL out of UdpSocket since we dont use this anymore. 2014-10-13 09:37:17 -07:00
Adam Ierymenko 7943414c89 Part two of fix to GitHub issue #118 -- need to test thoroughly though. 2014-10-13 08:15:00 -07:00
Adam Ierymenko c7c545bf6c Fix for part one of GitHub issue #118 2014-10-13 08:11:19 -07:00
Adam Ierymenko 6316011024 Make crypto and compression build optimized in debug, and also try disabling peers.persist -- might ship this way as it seems more trouble than its worth. 2014-10-12 11:42:49 -07:00
Adam Ierymenko 8b0846d077 Delete bunch of commented out code. 2014-10-11 16:53:21 -07:00
Adam Ierymenko 0d017c043f Stop persisting last announcement time since Multicaster is volatile. Also some more legacy multicast fixes. 2014-10-11 16:26:02 -07:00
Adam Ierymenko c2aac69a9f Fixes to legacy peer support. 2014-10-11 15:49:31 -07:00
Adam Ierymenko a9c6913f12 . 2014-10-11 10:38:52 -07:00
Adam Ierymenko e071c05f1b Add a sanity limit to legacy multicast repeater function in supernode-mode nodes, and change netconf-master to issue multicast limit (ml) instead of old p5 stuff. 2014-10-10 14:59:07 -07:00
Adam Ierymenko 03dc823ad7 (1) Back off a little on default max multicast limit since 128 is pretty bandwidth heavy, (2) add a little to default multicast rate limit since new MC algo is fairerererer, (3) decided not to involve netconf masters in multicast so take that out of list of who gets LIKEs. 2014-10-10 12:55:06 -07:00
Adam Ierymenko 1774e615a1 <= MTU 2014-10-10 09:09:56 -07:00
Adam Ierymenko 56f8f8aa24 Return self in GATHER requests if self is a member of multicast group, and reinstate legacy support. 2014-10-09 18:32:05 -07:00
Adam Ierymenko 4941c8a1f3 New multicast bug fixes, TRACE improvements, and temporarily disable legacy multicast for debugging purposes. 2014-10-09 17:58:31 -07:00
Adam Ierymenko d5e0f7e3e4 Reorg multicast packet, and a whole bunch of refactoring around the pushing of certificates of membership. 2014-10-09 12:42:25 -07:00
Adam Ierymenko 620e64c58f Supernode propagation of legacy multicast frames was brokezored. 2014-10-09 09:03:12 -07:00
Adam Ierymenko b809dad94a Bug fix in zerotier-cli (Unix) 2014-10-07 16:16:22 -07:00
Adam Ierymenko b13845e528 . 2014-10-07 15:26:12 -07:00
Adam Ierymenko 3f15752f73 Add IPv4 address assignment to ffffffffffffffff test network. 2014-10-07 14:34:00 -07:00
Adam Ierymenko cb6fd3afb3 g++ compiler warning fix 2014-10-07 13:18:08 -07:00
Adam Ierymenko 7788a3d45d . 2014-10-06 14:56:49 -07:00
Adam Ierymenko 923c325a40 Add another private-testnet root topology debug option using 10.0.0.1 as the supernode. 2014-10-06 13:19:04 -07:00
Adam Ierymenko 87f1b1b1e3 Bug fix in new multicast frame handler, handling of old "P5" multicast frames in new way. 2014-10-06 13:16:16 -07:00
Adam Ierymenko ab22feba9a Bump version to 1.0.0, add legacy support code to Multicaster to not send new frame to known-to-be-old peers. 2014-10-05 10:34:25 -07:00
Adam Ierymenko 10c196df50 Send a VERB_P5_MULTICAST_FRAME to the supernode for each multicast -- for now. This will allow supernodes to echo these down to pre-1.0.0 peers. 2014-10-04 13:46:29 -07:00
Adam Ierymenko 2c8321be1f Pull logic to always send new multicasts to supernode since we need to do that differently, re-add support for active bridges, and remove some gratuitous use of std::set where not needed. 2014-10-04 13:15:02 -07:00
Adam Ierymenko 62da7e67b6 Add some rate limiting to implicit gathers, and always send multicasts to at least one supernode so they can broadcast to old peers (temporary). 2014-10-03 22:30:10 -07:00
Adam Ierymenko e7c81ef34e Turns out that needed to be a list after all. Also clean up Multicaster::gather(). 2014-10-03 22:03:19 -07:00
Adam Ierymenko 3f7e7e8a88 Do not multicast to self. 2014-10-03 18:42:41 -07:00
Adam Ierymenko 496109fdcc Announce multicast group changes on network rescanMulticastGroups() 2014-10-03 18:27:42 -07:00
Adam Ierymenko aad344bb84 Add test network support to Network. 2014-10-03 16:14:34 -07:00
Adam Ierymenko 13fc20b0ee Add inject (undocumented in help) to NodeControlService. 2014-10-03 15:59:49 -07:00
Adam Ierymenko 351db7f1a0 Plumb injectPacketFromHost through to API. 2014-10-03 14:49:11 -07:00
Adam Ierymenko 6ab7b1b915 Add local-testnet clean script, and make a really ugly hacky fix in main.c for the -q option. (All that personality stuff needs to be rewritten. Yuck.) 2014-10-03 13:41:52 -07:00
Adam Ierymenko f853bc6a86 Fix root topology override 2014-10-03 13:19:13 -07:00
Adam Ierymenko d7189dd6c7 . 2014-10-03 13:06:13 -07:00
Adam Ierymenko 5fc3c0812a run-local-testnet script 2014-10-03 13:02:36 -07:00
Adam Ierymenko 67aa23530b More work on adding testnet and user-mode capabilities for local network simulation. 2014-10-03 11:59:50 -07:00
Adam Ierymenko 2a58c3fb98 Root topology testnet stuff... will ship this so people can easily run the local testnet app. 2014-10-03 09:36:39 -07:00
Adam Ierymenko 96fa3f7550 Work on in-place testnet support. 2014-10-02 16:33:08 -07:00
Adam Ierymenko 1109046782 Last steps before test: parse OK(MULTICAST_GATHER) and OK(MULTICAST_FRAME) 2014-10-02 13:50:37 -07:00
Adam Ierymenko 49dc47ff38 Make multicast gathering a bit smarter. 2014-10-02 11:35:37 -07:00
Adam Ierymenko dee86e2448 But since we are now using middle 3 bits we can assign sane values for the cipher suite enum. 2014-10-02 11:13:53 -07:00
Adam Ierymenko 17da733f97 Gotta support old encrypted flag, move cipher spec to middle 3 bits... due to some shortsighted design early-on. In the future this can die once there are no old peers. 2014-10-02 11:08:59 -07:00
Adam Ierymenko 23836d4c11 Change "encrypted" flag to full cipher suite selector. Go ahead and reserve AES256-GCM which might be added in the future. 2014-10-02 10:54:34 -07:00
Adam Ierymenko e53d208ea4 Improve security posture by eliminating non-const data() accessor from Buffer. 2014-10-02 10:06:29 -07:00
Adam Ierymenko e8c5495b61 Yes, zero my secret key data. Yes I really, really mean it. 2014-10-02 09:08:31 -07:00
Adam Ierymenko 28646eee0a A bit more IncomingPacket cleanup... almost ready to test, just need OK() handling. 2014-10-01 16:29:52 -07:00
Adam Ierymenko e1882b614b Some cleanup, Multicaster now sends multicasts as it gets additional members. 2014-10-01 14:05:25 -07:00
Adam Ierymenko ae082c3cb8 Yay... now everything compiles! Getting close to testing on this. Still have not added backward compatibility support for relaying of multicasts to 0.9.X clients yet but that will be easy. Will test with heterogenous 1.0.0 clients only first. 2014-10-01 12:41:48 -07:00
Adam Ierymenko ea6124dd2f IncomingPacket builds! 2014-09-30 17:33:20 -07:00
Adam Ierymenko b41437780b Add origin to new MULTICAST_FRAME, move security check for certs into Network to remove redundant code and bug-proneness, more work on IncomingPacket... 2014-09-30 17:26:34 -07:00
Adam Ierymenko 2659427864 Multicaster needs to be global, not per-network, and a bunch of other stuff. 2014-09-30 16:28:25 -07:00
Adam Ierymenko 8607aa7c3c Everything in for new multicast except IncomingPacket parsing... 2014-09-30 08:38:03 -07:00
Adam Ierymenko ed0ba49502 A few more revisions to new multicast verbs. 2014-09-26 14:18:25 -07:00
Adam Ierymenko 2d41055bdc Some Network code cleanup. 2014-09-26 12:23:43 -07:00
Adam Ierymenko 027060dad1 Most of new multicast code builds... now on to packet parsing. 2014-09-25 22:13:31 -07:00
Adam Ierymenko 0778332747 . 2014-09-25 22:08:52 -07:00
Adam Ierymenko 9e186bbd89 . 2014-09-25 15:57:43 -07:00
Adam Ierymenko 050a0ce85d . 2014-09-25 15:08:29 -07:00
Adam Ierymenko 6c87f9f765 Rename MulticastTopology to Multicaster -- same name as old multicast controller but different code. More descriptive though. 2014-09-24 14:02:16 -07:00
Adam Ierymenko 81b12b6826 Rename the ubiquitous _r pointer to RuntimeEnvironment to RR just to be a little more consistent about using _ to denote private member variables. 2014-09-24 13:53:03 -07:00
Adam Ierymenko 431476e2e4 Some more multicast algo work... 2014-09-24 13:45:58 -07:00
Adam Ierymenko 557801a09e Rename PacketDecoder to much more descriptive IncomingPacket 2014-09-24 09:04:09 -07:00
Adam Ierymenko 9180a30986 . 2014-09-24 09:01:58 -07:00
Adam Ierymenko 61d0f27d2a Make MulticastTopology have its own mutex. 2014-09-23 10:26:30 -07:00
Adam Ierymenko c49e253e21 . 2014-09-22 15:03:16 -07:00
Adam Ierymenko 954f9cbc13 Yet more WIP on mulitcast algo... 2014-09-22 13:18:24 -07:00
Adam Ierymenko d9abd4d9be Work on defining new direct broadcast multicast algorithm. 2014-09-18 18:28:14 -07:00
Adam Ierymenko d37c3ad30f VERSION 0.9.3: unreleased update with some fixes for Pi users
This version is being tagged and bagged, despite the fact that it's not
going to be released and won't be merged into master until 1.0.0 is ready.

It contains several Linux build fixes, a fix for a unix domain socket resource
leak, and build fixes for the Raspberry Pi.
2014-09-18 13:40:58 -07:00
Adam Ierymenko 4708231046 Fix for GitHub issue #122 and other fixes 2014-09-18 10:01:30 -07:00
Adam Ierymenko 924f030994 docs 2014-09-18 09:41:12 -07:00
Adam Ierymenko 6b76cac6cf Back off from thrashing shutdownIfUnreadableCheck, fix bug in control service. 2014-09-17 14:19:58 -07:00
Adam Ierymenko 2762db8408 More work on control bus refactor... 2014-09-17 12:54:39 -07:00
Adam Ierymenko edff13dcae More control/ refactoring 2014-09-17 09:50:49 -07:00
Adam Ierymenko e22fae2397 it compiles again! 2014-09-16 15:47:00 -07:00
Adam Ierymenko 73dd9d3b74 Make sure open() has third argument 2014-09-16 08:58:49 -07:00
Adam Ierymenko 8d2e20ede6 Get rid of __align stuff in Salsa20 -- not portable, does not seem to help much on newer chips. 2014-09-16 08:53:18 -07:00
Adam Ierymenko 5c1c70a604 cleanup 2014-09-16 08:19:39 -07:00
Adam Ierymenko fb22ef053b Move rest of NodeControl stuff out of node/ and into control/ 2014-09-15 16:32:55 -07:00
Adam Ierymenko 4ba4269344 cleanup 2014-09-15 09:45:57 -07:00
Adam Ierymenko 2dcf584834 rename ipc/ to control/ 2014-09-15 09:44:29 -07:00
Adam Ierymenko 13aba7640b refactoring for SDK 2014-09-15 09:43:57 -07:00
Adam Ierymenko 2e46bb4264 build fixes 2014-09-13 14:15:26 -07:00
Adam Ierymenko 1d37204a37 Refactoring in progress... pardon our dust... 2014-09-12 16:57:37 -07:00
Adam Ierymenko 6b4346d1ac work in progress on API refactor 2014-09-10 17:16:40 -07:00
Adam Ierymenko ea0f836ef1 Turns out we do want to propagate packets unauthenticated in the supernode case. This is fine. 2014-09-08 14:33:12 -04:00
Adam Ierymenko b8729de9da Temporarily DISABLE multicast authentication (doing in branch, will reenable in dev) 2014-09-08 08:25:06 -07:00
Adam Ierymenko 4e9280fc7a Rip out dead "firewall opener" code, replace in pipeline with anti-symmetric-NAT tactics. 2014-09-05 16:23:24 -07:00
Adam Ierymenko d02ecfb288 IP assignment and change cleanup -- leave IPs that were never configured via ZT static assignment alone. 2014-09-05 15:35:09 -07:00
Adam Ierymenko 3afc629ac5 Bit of network config parser cleanup. 2014-09-05 14:56:11 -07:00
Adam Ierymenko 6e1339fedf Remove zerotier-idtool symlink on mac uninstall.sh 2014-09-05 11:39:54 -07:00
Adam Ierymenko 7d4b6767eb Old-school GCC build fix -- make sure __GCC__ is defined 2014-09-05 17:48:59 +00:00
Adam Ierymenko 93f9b4392d Enable configuration of multicast algorithm parameters in netconf 2014-09-04 14:25:07 -07:00
Adam Ierymenko 6df9546742 Fix for missing broadcast address on Linux Ethernet taps. 2014-09-04 13:36:25 -04:00
Adam Ierymenko 4dbeb97eb9 docs 2014-09-03 16:50:06 -07:00
Adam Ierymenko 34349d1a61 docs 2014-09-03 16:48:02 -07:00
Adam Ierymenko 6497a4a0f6 initdb changes 2014-09-03 19:15:53 -04:00
Adam Ierymenko b8d29cb6ba Some netconf-service renames and add initdb script for user use. 2014-09-03 20:04:58 +00:00
Adam Ierymenko e77e224171 bin2c warning removed 2014-09-03 12:25:28 -07:00
Adam Ierymenko dcea212e40 Add noupdate flag in root topologies, add ability for mktopology to read from a template. 2014-09-03 11:56:36 -07:00
Adam Ierymenko 644db7a04a Let people build installers for any machine type on Linux, just canonicalize the x86 and x86_64 types. 2014-08-27 20:15:41 -04:00
Adam Ierymenko 00b16f6aa6 Fix for GitHub issue #110 -- failure to bind IPv6 now non-fatal 2014-08-27 20:09:56 -04:00
Adam Ierymenko 1952db5069 Only enable SSE Salsa20 on x86 and x86_64 Linux 2014-08-27 20:01:24 -04:00
Adam Ierymenko 6f8364ba59 VERSION 0.9.2:
The primary focus of this version is better integration with the
Microsoft Windows operating system.

Virtual networks should now be detected as "real" networks. For
each network, a message box should pop up the first time the network
is detected and classified allowing the user to choose its services
and security designation. On Windows 7 this is "work," "home," or
"public." On Windows 8 it's a simple choice of whether or not to
enable file and printer sharing and other services.

Several bugs have been fixed. Among these are a Windows threading
issue, several minor threading deadlock issues that could manifest
if rapidly adding and removing networks, and a command line interface
issue. The network list now shows the network MAC address as well,
a UI oversight in previous versions. A vectorized SSE implementation
of Salsa20 is now included for improved encrypt/decrypt performance.

The sending of low-TTL "firewall opener" packets has been disabled
in this version, since they may not be necessary and may harm NAT
traversal in some configurations. We will measure the effectiveness
of NAT traversal and see if this change improves performance in the
field.

Finally, this version obsoletes both the Tokyo and Sydney supernodes
in favor of a single larger supernode in Singapore. This decision was
made on the basis of bandwidth costs-- both Tokyo and Sydney are
significantly more expensive. We'd like to keep the basic service free,
so keeping bandwidth costs for relaying low is important. Since NAT
traversal works well and is constantly being improved, most users will
not see a speed decrease from this. Some Chinese users may see
improved performance since Singapore may be closer than Tokyo to many
Chinese cities.

The next major releases will focus on better Macintosh platform integration,
further improvements to NAT traversal, and UI improvements.
2014-08-22 12:05:56 -07:00
Adam Ierymenko eadff71d37 Another fix to Network life cycle. 2014-08-21 18:07:27 -07:00
Adam Ierymenko af62a6cade Forgot to uncomment secret debug #define of death. 2014-08-21 17:49:46 -07:00
Adam Ierymenko de4e29288d Fix for crazy Windows threading bug... repeatedly adding and removing a network now doesn't leave networks in limbo. 2014-08-21 17:49:05 -07:00
Adam Ierymenko 44d58ee871 Change 1.1.1.1 pseudo-IP used for default route hack to 25.255.255.254, since 1.1.1.1 is from a now-in-use IPv4 block while 25.0.0.0/8 is still unrouted. It can be changed in the future without impacting anything, since Windows keys off the MAC not the IP to classify networks. 2014-08-21 08:26:39 -07:00
Adam Ierymenko 9d5819ff44 Version bump to 0.9.2 -- preparing for release... 2014-08-20 18:29:27 -07:00
Adam Ierymenko 08d7fe0432 Fix for GitHub issue #102 2014-08-20 12:36:11 -07:00
Adam Ierymenko 9f2571cc01 Some UI fixes for Windows. 2014-08-20 10:22:30 -07:00
Adam Ierymenko b4b2e2ed9f ... 2014-08-19 18:21:21 -07:00
Adam Ierymenko 17ebd0afc7 Disable service management in UI -- installer should automatically start service and this is annoying for testing purposes. 2014-08-19 18:14:50 -07:00
Adam Ierymenko 351b7f3a09 UI stuff and sign .dmg on build. 2014-08-19 17:42:17 -07:00
Adam Ierymenko 721625d512 Add MAC to listnetworks, and some other make stuff. 2014-08-19 14:11:02 -07:00
Adam Ierymenko 282114e96c Makefile changes, and make Topology::getBestSupernode() return the "next" supernode if I am a supernode. Also some comment cleanup. 2014-08-19 10:09:21 -07:00
Adam Ierymenko 95d123cfc2 Do HttpClient refactoring for Windows. 2014-08-18 14:34:04 -07:00
Adam Ierymenko f5cbb45ab9 Increase sleep/wake detection threshold... might want to switch to using native interfaces to really detect this in the future since this is not 100% reliable. 2014-08-18 10:13:25 -04:00
Adam Ierymenko b7b9b9c0b7 Add "make debug" to make building debug one-offs easier (Linux). 2014-08-18 10:07:03 -04:00
Adam Ierymenko 715afc0314 Default to built-in root topology if signature check fails (instead of exiting) 2014-08-16 14:01:25 -07:00
Adam Ierymenko f281886bfd Small thread safety fix in HttpClient. 2014-08-16 13:32:33 -07:00
Adam Ierymenko 4f0fcc582e Refactor HttpClient a bit. 2014-08-16 09:08:52 -07:00
Adam Ierymenko aa59cfd545 Web request part of supernode resync (not quite done, needs test) 2014-08-15 23:37:35 -04:00
Adam Ierymenko f696299cfc docs 2014-08-15 12:59:49 -04:00
Adam Ierymenko b0719eacf9 Add encrypt/decrypt to attic. 2014-08-15 12:59:07 -04:00
Adam Ierymenko c2187c8759 (1) distribute default root-topology in new dictionary format, (2) bump peer serialization version to force obsolescence of old supernodes, (3) stop outputting a log message every time we poll for software updates 2014-08-14 19:52:22 -04:00
Adam Ierymenko 56296f96db Regenerate root topology dictionary with field fix. 2014-08-14 18:54:53 -04:00
Adam Ierymenko be6b61b1bc Accept supernode dictionaries in Topology, also fix (unused) field name in one of these. 2014-08-14 18:06:18 -04:00
Adam Ierymenko f8d4611d15 (1) Tweak LAN locator beacon frequencies, (2) Windows virtual networks
now show up as *real* networks and prompt the user to set their
location and firewall status (public, private, home/work, etc.).

The hack used to achieve #2 should not be examined by children or those
suffering from epilepsy or heart conditions.
2014-08-12 17:20:34 -07:00
Adam Ierymenko f25bd41a03 Some fixes to firewall config code. 2014-08-08 15:53:27 -07:00
Adam Ierymenko fe3ad5e2cc Fix a Windows bug in refactored tap code, and always make sure we have a firewall exception rule on startup. 2014-08-08 14:57:13 -07:00
Adam Ierymenko 502ea66f15 Kill ugly old getSecureRandom() and replace with simple wrapper for Windows CAPI and *nix /dev/urandom, and some build fixes. 2014-08-08 11:53:55 -07:00
Adam Ierymenko 673aab5ba2 Fix an oversight in signed dictionaries: the timestamp and signing identity should themselves be part of the signature. Also include the raw dictionary in addition to the bin2c version in root-topology/ 2014-08-08 12:46:00 -04:00
Adam Ierymenko 77457cbff1 Windows compile fixes, compiler warning fix, unfreed memory fix in main.c (though it would not have mattered since program exits immediately after). 2014-08-07 19:08:41 -07:00
Adam Ierymenko db0d17cebb Change topology URL to something prettier. 2014-08-07 20:27:05 -04:00
Adam Ierymenko dd58006d65 Rename topology/ to be more descriptive, and some more updates. 2014-08-07 20:21:07 -04:00
Adam Ierymenko f0ebb0b0f1 More root topology stuff. 2014-08-07 20:14:24 -04:00
Adam Ierymenko 8c9d3146df make clean fix 2014-08-07 18:46:04 -04:00
Adam Ierymenko 117f977ce3 mktopology for making new signed topology root server dictionaries 2014-08-07 18:45:11 -04:00
Adam Ierymenko d8e5d9d6e8 Singapore supernode -- its baaaack 2014-08-07 21:19:34 +00:00
Adam Ierymenko 1f5feb75fb LinuxEthernetTap refactor. 2014-08-07 20:40:23 +00:00
Adam Ierymenko 05031ff938 Linux build stuff. 2014-08-07 13:05:17 -04:00
Adam Ierymenko adfb71fa6b Compile for for TRACE, remove old TESTNET cruft. 2014-08-07 08:49:43 -07:00
Adam Ierymenko 37341048a9 Silence kextload/kextunload output, error handling improvements. 2014-08-07 08:41:57 -07:00
Adam Ierymenko b3491f9de1 ifdef out Unix-only output redirect function on Windows 2014-08-07 06:36:46 -07:00
Adam Ierymenko 80fc584923 Fix for GitHub issue #97 2014-08-07 06:35:54 -07:00
Adam Ierymenko b7389995f4 Make install scripts also symlink zerotier-idtool script, and doc updates. 2014-08-07 06:25:01 -07:00
Adam Ierymenko 92d9ad4a7f Some tap interface changes and integration into main.cpp for *nix systems. 2014-08-06 16:24:30 -07:00
Adam Ierymenko 8a804b5257 (1) Disable firewall openers (its easy to re-enable), (2) Do some prep work for making supernode topology hot-updatable. 2014-08-05 14:05:50 -07:00
Adam Ierymenko e3c5ada3a7 Add signatures to Dictionary, and fix unhex() API in Utils to be a little safer. 2014-08-05 09:56:49 -07:00
Adam Ierymenko 7adf0eac7e Windows Ethernet tap refactoring complete. 2014-08-04 21:48:59 -07:00
Adam Ierymenko df0a8e8450 Linux routing table now works. 2014-07-31 20:13:29 -04:00
Adam Ierymenko 526435859f Newly broken out OSX tap driver builds now. 2014-07-31 15:13:48 -07:00
Adam Ierymenko 98d426e1d5 Path fixes in osnet/ stuff 2014-07-31 14:31:32 -07:00
Adam Ierymenko b80c229d87 Tons of code cleanup, refactor Network to use EthernetTapFactory, probably also fix GitHub issue #90 2014-07-31 14:09:32 -07:00
Adam Ierymenko 9b93141dd0 Upgrade LZ4 to latest version. 2014-07-30 15:34:15 -07:00
Adam Ierymenko 59ebc9d41e docs 2014-07-28 09:10:56 -07:00
Adam Ierymenko f0199d6770 Windows routing table interface (untested). 2014-07-28 09:08:56 -07:00
Adam Ierymenko f2d372545a Salsa20 SSE Windows build fix -- turns out you can't be as loose with SSE intrinsics in Visual Studio 2014-07-26 20:07:38 -07:00
Adam Ierymenko 9809511c4c Another rename... 2014-07-26 13:11:45 -07:00
Adam Ierymenko 538e8a86c8 Move node/osdep/ to sys/ 2014-07-26 13:10:41 -07:00
Adam Ierymenko 27aa6ea44e Linux routing table support work. 2014-07-25 16:16:05 -04:00
Adam Ierymenko 7475c4047e A bunch more osdep/ work... 2014-07-23 09:14:53 -07:00
Adam Ierymenko 5e58a7d54a Split UnixEthernetTap by platform to get rid of ifdef spaghetti. 2014-07-21 09:18:33 -07:00
Adam Ierymenko 6a174483d8 Ethernet tap factory interface. 2014-07-18 17:26:08 -07:00
Adam Ierymenko a76d9d4408 Move OS-dependent implementations of generic interfaces to osdep/ in preparation for TapFactory refactor. 2014-07-17 17:19:18 -07:00
Adam Ierymenko 1189f4a568 Set/delete functionality in BSD routing table. 2014-07-17 17:17:59 -07:00
Adam Ierymenko 51766e6549 BSD routing table works... that hurt much worse than it should have. 2014-07-17 13:08:37 -07:00
Adam Ierymenko d315156733 BSD routing table implementation work. 2014-07-16 15:13:53 -07:00
Adam Ierymenko 4c4675e3ac Cleanup, add __BSD__ 2014-07-15 20:49:13 -07:00
Adam Ierymenko 49ef980ecf Scale back Salsa20 benchmark a bit to not take too long on slow boxes. 2014-07-15 21:02:56 -04:00
Adam Ierymenko 12692c551e SSE optimized Salsa20 -- anywhere from 20% to 50% faster than plain C version 2014-07-15 17:56:09 -07:00
Adam Ierymenko 00f9305ad8 Routing table base class. 2014-07-15 13:48:42 -07:00
Adam Ierymenko 0097949ba9 . 2014-07-15 12:32:06 -07:00
Adam Ierymenko 1b33a9e807 . 2014-07-15 12:21:24 -07:00
Adam Ierymenko 4a0b33561c Starting to define system network stack interface. 2014-07-13 12:57:30 -07:00
Adam Ierymenko 96faaa85cf VERSION 0.9.1: bug fixes and experimental bridging support
This version fixes several bugs including an issue with networks that have
EtherType filtering disabled, a file permission issue that affected non-English
versions of Windows, a multicast propagation bug that caused multicasts to
be dropped more often than they should be, and an issue with IP auto-configuration.

It also introduces experimental support for bridging between physical and virtual
networks, a much-requested and powerful ability that's been planned from the start.
ZeroTier One can now replace the functionality of ordinary VPNs, link multiple
offices into a single LAN, and connect virtual machine backplanes in the cloud to
physical networks at home, among other things.

Bridging support isn't "officially" out yet, since the web UI part is still
in development. But when that is done, an official announcement will be
made on the blog and users can try it out. So far bridging has only
been tested under Linux with the Linux kernel's native bridging driver.
YMMV on other platforms. Try it out and let us know by filing bugs at GitHub
or e-mailing them to "contact@zerotier.com".
2014-07-03 13:32:53 -07:00
Adam Ierymenko f82c7006ea Leave IP addresses alone instead of deleting them from tap if they are not members of any of the networks under management. 2014-07-02 15:59:08 -07:00
Adam Ierymenko 681af253ef Fix for GitHub issue #88 - actually do in the code what the web UI expects it to do. 2014-07-01 09:27:33 -07:00
Adam Ierymenko 88bdb81791 Keep track of basic aliveness for peers regardless if direct or indirect connectivity and use this for multicast propagation. Also consolidate adding of active bridges via the same functor as regular multicast next hops. 2014-06-30 11:31:04 -07:00
Adam Ierymenko 458f6ae7c3 Only add active bridges to top of MC propagation list if they are alive. Otherwise a dead active bridge might kill multicast for us. 2014-06-26 18:13:48 -07:00
Adam Ierymenko 999e963533 Fix for network not found in netconf. 2014-06-27 00:47:07 +00:00
Adam Ierymenko 5336f2600a Send ACCESS_DENIED if network not found. 2014-06-26 17:38:33 -07:00
Adam Ierymenko 38433e85bf More little stuff in crypto code. 2014-06-26 17:23:10 -07:00
Adam Ierymenko c3cbc92757 Some crypto comment fixes. 2014-06-26 17:15:20 -07:00
Adam Ierymenko 45a1e048bb Add enabled/disabled status to network. 2014-06-26 17:05:07 -07:00
Adam Ierymenko 40bd460b1c Some comment revisions and additional sanity checks. 2014-06-23 08:19:41 -07:00
Adam Ierymenko ae7143d693 Comments and cleanup. 2014-06-21 12:19:10 -07:00
Adam Ierymenko aead1050fb Bridging (GitHub issue #68) does indeed work! Just needed to fix a packet size thinko. 2014-06-21 12:29:33 -04:00
Adam Ierymenko 6e485833ef . 2014-06-21 12:25:10 -04:00
Adam Ierymenko be0a8ec1f1 . 2014-06-21 12:16:25 -04:00
Adam Ierymenko 11e1f7a3fb . 2014-06-21 12:01:26 -04:00
Adam Ierymenko 0b0d5fabac Bridging #68 should work now! 2014-06-21 11:59:08 -04:00
Adam Ierymenko 35aa0921ee . 2014-06-21 11:47:26 -04:00
Adam Ierymenko 2f8936181c Debug code -- temporary. 2014-06-21 08:36:23 -07:00
Adam Ierymenko 4c3fb8cf10 Don't list node as an active bridge if it's not authorized. (Wouldn't work anyway.) 2014-06-20 16:04:53 -07:00
Adam Ierymenko c3cea55493 Some cleanup in PacketDecoder. 2014-06-18 09:00:53 -07:00
Adam Ierymenko 5d467f0f45 Some TRACE improvements and comment revs. 2014-06-18 08:25:30 -07:00
Adam Ierymenko 2162a419e3 Some logging fixes. 2014-06-17 13:52:55 -07:00
Adam Ierymenko f15271f31f Get rid of pointer type punning warning/issue on g++. 2014-06-17 15:54:35 -04:00
Adam Ierymenko 9d6488c31a Typo fix. 2014-06-16 20:41:23 +00:00
Adam Ierymenko adc922d7fb Support for bridging fields in netconf. 2014-06-16 13:26:46 -07:00
Adam Ierymenko cf4700bc26 Simplify network briding modes -- we only need passive toggle and active bridge list, not three mode types. Also change isOpen to isPublic for terminology consistency. 2014-06-14 20:24:19 +00:00
Adam Ierymenko 367b5439e1 Run icacls.exe twice, once for each change - GitHub issue #71 2014-06-14 12:52:06 -07:00
Adam Ierymenko 6802da457e Bridging pretty much ready to test! Got Switch all wired up. Also fix a latent probably-never-triggered bug in MULTICAST_FRAME handling. GitHub issue #68 2014-06-13 21:06:34 -07:00
Adam Ierymenko 5682f0b772 Some more bridging work... wiring up in Switch - GitHub issue #68 2014-06-13 17:49:33 -07:00
Adam Ierymenko 08b7bb3c7a Network memory for bridge-side multicast groups that we learn - GitHub issue #68 2014-06-13 14:06:34 -07:00
Adam Ierymenko d6a4f8d77b Add flags to EXT_FRAME for better future proofness. 2014-06-12 11:40:30 -07:00
Adam Ierymenko c30f9832b0 Packet decoder work for EXT_FRAME for bridging - GitHub issue #68 2014-06-10 21:41:34 -07:00
Adam Ierymenko d44e1349d8 Bridge routing table - GitHub issue #68 2014-06-10 17:18:59 -07:00
Adam Ierymenko 6f831d5370 Bridging fields in Redis schema for netconf master. 2014-06-10 15:51:54 -07:00
Adam Ierymenko 4e1f49258b Bridging in NetworkConfig - GitHub Issue #68 2014-06-10 15:47:20 -07:00
Adam Ierymenko fb31f93c52 Protocol messages for bridging. GitHub issue #68 2014-06-10 15:25:15 -07:00
Adam Ierymenko f720f04fa0 Installer updates from 0.9.0 release -- only useful to me. 2014-05-29 20:23:25 -07:00
Adam Ierymenko 7a56c3c396 VERSION 0.9.0: upgrade required!
Version 0.9.0 adds a network-wide toggle for blanket broadcast (ff:ff:ff:ff:ff:ff), contains changes for compatibility with the new web site and netconf server code, and most importantly introduces unique non-conflicting MAC address schemes on a per-virtual-network basis.

The MAC address change is necessary to support bridging, which is the next major feature to be added. It's not absolutely required, but it makes sure that things work properly in the (probably very rare) case that two virtual networks happen to be directly or indirectly bridged together.

The MAC change means that 0.9.0 is a required update. Clients not updating will find themselves unable to communicate with older versions. The underlying protocol is the same, but MAC address resolution and routing will not work properly. Those running binary releases will be updated automatically, while those running from source must download and rebuild.

This version also fixes two minor security issues, including one involving file permissions on non-English Windows versions.
2014-05-29 17:53:30 -07:00
Adam Ierymenko 994565bdeb Fix for GitHub issue #71 2014-05-29 15:06:05 -07:00
Adam Ierymenko 67498e576c Delete some obsolete stuff. 2014-05-29 18:36:17 +00:00
Adam Ierymenko eae130467b Build fix for Windows setsockopt(). 2014-05-29 11:22:35 -07:00
Adam Ierymenko f764cf8d31 Make UDP send and receive buffers as big as possible to reduce packet loss. 2014-05-28 12:17:43 -07:00
Adam Ierymenko 49247180dc Add lastSeen and identity to member record if not present. 2014-05-28 01:32:27 +00:00
Adam Ierymenko 914bebba31 Re-enable exit on stream close in netconf service. 2014-05-27 15:59:09 +00:00
Adam Ierymenko 4b773b61f5 Netconf fixes. 2014-05-24 00:10:23 +00:00
Adam Ierymenko 657f6ae342 Don't transmit broadcasts if enableBroadcast is false on a network. 2014-05-23 19:52:39 -04:00
Adam Ierymenko 2861229558 Windows build fixes for MAC changes (in tap driver), some comments and cleanup in MAC.hpp. 2014-05-23 16:21:57 -07:00
Adam Ierymenko f939d0ee62 Upgrade AIP for new version of Advanced Installer, bump to 0.9.0. 2014-05-23 16:08:05 -07:00
Adam Ierymenko 77c58e741d GitHub issue #58 - options after path on command line were ignored, fixed. 2014-05-23 15:21:28 -07:00
Adam Ierymenko 66a38a9e7c Default for private should be true. 2014-05-23 15:15:44 -07:00
Adam Ierymenko 31ddc49da2 GitHub issue #67 2014-05-23 15:13:34 -07:00
Adam Ierymenko 317995b921 Fixed for Linux tap for GitHub Issue #69 2014-05-23 17:35:35 -04:00
Adam Ierymenko beb7b5bbe5 GitHub Issue #69 - make MAC assignment schema differ between virtual networks. 2014-05-23 14:32:31 -07:00
Adam Ierymenko 05f5755bb1 Allow Redis DB# select. 2014-05-23 00:35:11 +00:00
Adam Ierymenko cfd92cb18d Remove old netconf code. 2014-05-22 21:05:49 +00:00
Adam Ierymenko 2456d3a197 Node redis module update. 2014-05-22 21:05:08 +00:00
Adam Ierymenko f0b821f880 . 2014-05-21 02:48:58 +00:00
Adam Ierymenko 319f9a9346 Netconf testing and fixes. 2014-05-20 20:05:11 +00:00
Adam Ierymenko 596e5dd583 Another sanity check on filename for GitHub issue #72 2014-05-19 16:16:34 +00:00
Adam Ierymenko b958a2d30c Redis schema updates and fix for GitHub issue #72 2014-05-19 16:13:42 +00:00
Adam Ierymenko e270887391 Some Redis schema changes. 2014-05-14 17:48:50 +00:00
Adam Ierymenko 986773cc9c ZT_USE_TESTNET define in makefiles. 2014-05-09 11:52:53 -07:00
Adam Ierymenko ecbcc9eb2c TESTNET supernodes need different addresses. 2014-05-09 11:45:38 -07:00
Adam Ierymenko 1ad29fe31f Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-05-09 15:40:08 +00:00
Adam Ierymenko 42f6aae259 More netconf work... set ZT_HOME and chdir there on service launch. 2014-05-09 15:39:51 +00:00
Adam Ierymenko de485ad900 Add testnet ports and ZT_USE_TESTNET define for contacting the test.zerotier.com net instead of the live net. 2014-05-08 17:53:22 -07:00
Adam Ierymenko 99c5fae9da Make Service communicate via empty-line-delimited Dictionary objects instead of the old size prefix way. 2014-05-08 21:27:59 +00:00
Adam Ierymenko 98f0418fb9 A little more cleanup in node code. 2014-05-08 00:47:46 +00:00
Adam Ierymenko d7977fa3e1 Make certificate of membership works in node code! 2014-05-08 00:22:20 +00:00
Adam Ierymenko 1e6475fad6 Clean out unused netconf fields, rename a few, work on new netconf server. 2014-05-08 00:11:50 +00:00
Adam Ierymenko d5f95b721d Yet more work on netconf master, add redis docs. 2014-05-07 02:45:15 +00:00
Adam Ierymenko ae2eeff5c6 . 2014-05-06 00:24:21 +00:00
Adam Ierymenko 08da4b8c7b Add mkcom functionality to zerotier-idtool for use by new NodeJS netconf-master code. 2014-05-06 00:15:21 +00:00
Adam Ierymenko 0ba0c6d04d New netconf... 2014-05-06 00:05:11 +00:00
Adam Ierymenko 93f24ea86a Some work on new netconf service... 2014-05-05 22:11:21 +00:00
Adam Ierymenko f8eae84e15 Retire old netconf mess. 2014-05-05 15:05:11 +00:00
Adam Ierymenko 7831c4bfef Cleanup, dead code removal, some pretty insignificant security stuff that's based on recommendations. 2014-04-18 00:14:12 -07:00
Adam Ierymenko 5f45977e3e Update GitHub README 2014-04-16 11:40:48 -07:00
Adam Ierymenko d187ec82d4 Adding supernode yig.zerotier.com (Sydney, Australia) and removing mi-go.zerotier.com (Singapore) due to real-world usage data. 2014-04-15 14:37:19 -07:00
Adam Ierymenko 42c3474223 VERSION 0.8.2
This version fixes a few more issues with TCP tunneling including GitHub issue #63.
It also adds automatic announcement and location of peers on physical LANs (GitHub
issue #56) which should greatly improve performance if you happen to be on the same
LAN or WiFi network as another peer. It can take 60 seconds or so for this to occur,
but it should.
2014-04-10 22:46:17 -07:00
Adam Ierymenko aee742e767 More toward GitHub issue #56 2014-04-10 16:30:15 -07:00
Adam Ierymenko c9294c1a78 Prevent recursive transit of ZeroTier packets, toward GitHub issue #56 2014-04-10 14:22:25 -07:00
Adam Ierymenko b117ff5435 Probable fix for GitHub issue #63 - do not unite() if either path is TCP, since doing so can result in asymmetric failed NAT-t over UDP if one side has a firewall that permits outgoing UDP but not incoming. 2014-04-10 11:17:54 -07:00
Adam Ierymenko 119ef5ecbf More logic cleanup and some documentation / comment improvements. 2014-04-10 10:00:20 -07:00
Adam Ierymenko 8fb442d81a Yet more cleanup to TCP logic, this time adding a master switch and adding UDP preference in send(). 2014-04-09 17:08:35 -07:00
Adam Ierymenko 73153b89b4 Some cleanup, and use best (not first) UDP addresses for NAT-t VERB_RENDEZVOUS computation. 2014-04-09 16:00:25 -07:00
Adam Ierymenko d9836adbf6 .... aaaaaand... GitHub issue #61 was caused by the fact that we were no longer deleting taps on Windows! 2014-04-09 15:34:03 -07:00
Adam Ierymenko 420edf23ad Was not closing _shutdownSignalPipe in UnixEthernetTap either... 2014-04-09 15:32:37 -07:00
Adam Ierymenko 6c5f6feb5e Set close-on-exec in attempt to head off GitHub issue #61 2014-04-09 15:22:08 -07:00
Adam Ierymenko a1c1c82b0d VERSION 0.8.1
This, quick on the heels of 0.8.0, fixes the fact that TCP tunneling was
broken. :)

There was a bug that only manifested in some cases, and not on my testnet.
I took the opportunity to clean up some of that logic generally. I need a
better testnet, but that will have to wait until we exit beta and hopefully
I can earn a little bit of money off this. A better testnet will require
a big beefy virtualization box or two to run hundreds to thousands of KVMs.

Also fixed a tiny cosmetic issue on Windows. Other than that no changes.
2014-04-09 13:03:33 -07:00
Adam Ierymenko 83a0d988ec Text point size readjustment not needed on child windows in Windows? 2014-04-09 12:19:46 -07:00
Adam Ierymenko a8c12369fd More tweaks to TCP logic for GitHub issue #60 2014-04-09 12:10:05 -07:00
Adam Ierymenko 28a6d328a5 Some adjustments to TCP logic for GitHub issue #60 2014-04-09 11:55:24 -07:00
Adam Ierymenko dd404b8ba3 VERSION 0.8.0
This version introduces a major new feature requested by several users,
both via the user survey and otherwise: TCP tunneling.

If you are not able to communicate over UDP/9993, ZeroTier One will switch to
TCP connections to ZeroTier's supernodes. This is always slower than UDP, but
will allow you to communicate behind all but the most extremely restrictive
firewalls. This TCP traffic travels over port 443 and looks like HTTPS (SSL)
traffic (though it isn't), since that port is almost always open.

This also fixes several minor bugs and attempts to improve the robustness of
Windows tap driver management. Several users have reported spurious issues
with the Windows tap device, though I was unable to reproduce any of these with
clean VMs. (Tried Windows 7 and 8.1, both x86 and x64. No luck.) But I tried
to beef up the tap code anyway in the hopes of catching it. It now tries a lot
harder to make sure the tap is up and running.

There was some significant under the hood refactoring in support of TCP, so
this was a non-trivial change.

I bumped the version to 0.8 to indicate that more and more features are being
crossed off the list as we approach 1.0 and exit from beta. After this, the next
major feature will be LAN announcement to find direct paths to peers on the
same physical LAN. But assuming that 0.8.0 goes smoothly, I am going to divert
attention to the web site. A new design is coming that is much cleaner, sharper,
and easier to use.

Thank you all for all your excellent feedback! We're well on the way to a killer
product that makes conventional VPNs and other kludges obsolete.
2014-04-08 22:38:51 -07:00
Adam Ierymenko 1c636afe3f Fix typo. 2014-04-08 16:43:36 -07:00
Adam Ierymenko 48a1799f49 More Windows tap cleanup... seems solid. We'll see. 2014-04-08 16:10:48 -07:00
Adam Ierymenko bf24de43fe Windows tap: be REAL REAL REAL PARANOID. Wake up sheeple. 2014-04-08 15:47:33 -07:00
Adam Ierymenko 76d9ea911d Another Qt build fix... need the right tap driver in build just to make symbols work even though UI doesn't use that code. 2014-04-08 14:16:45 -07:00
Adam Ierymenko ff773def26 Remove EthernetTap.cpp from UI build project. 2014-04-08 13:59:31 -07:00
Adam Ierymenko 5abfb11813 Some installer stuff, complete refactoring of Windows side of newly split tap driver. Seems to work. Now to see if the cleanup we did here gets rid of the zombie tap device issue on Windows. 2014-04-08 12:00:21 -07:00
Adam Ierymenko 0b8d6c7f4a Builds and runs on Unix with EthernetTap changes, now for Windows... and for what we did this for: a refactor of the Windows tap connector. 2014-04-07 15:39:33 -07:00
Adam Ierymenko 6c60305a96 Split EthernetTap into subclasses, work in progress... 2014-04-07 14:47:39 -07:00
Adam Ierymenko 19c4d82512 Intaller upgrade and stuff, fix to Windows service for new Node API changes. 2014-04-04 16:59:02 -07:00
Adam Ierymenko e11149bcae Fix network widget spacer issue on Windows. 2014-04-04 12:25:48 -07:00
Adam Ierymenko fe85426df6 A few more tweaks to TCP failover... seems to be switching back and forth pretty well now! 2014-04-03 17:12:34 -07:00
Adam Ierymenko 158002d2d1 Tweak some timings and stuff. 2014-04-03 16:19:41 -07:00
Adam Ierymenko c96d3ebf8c Such ping logic. So edge case. 2014-04-03 14:36:52 -07:00
Adam Ierymenko b1088a6bd7 Make Unix domain sockets mode 0777 so that properly authorized non-privileged users can access them (if they have auth token). 2014-04-02 17:21:26 -07:00
Adam Ierymenko f0223490be Make GUI work with new control client API, make control client look for user authtoken.secret if system unreadable. 2014-04-02 17:12:04 -07:00
Adam Ierymenko 81e5690410 More tweaks to TCP failover logic. Such edge case. 2014-04-02 17:32:47 -04:00
Adam Ierymenko 700a450806 More tweaks to algorithm for determining when to fail over to TCP, and stop supernodes from resynchronizing unless explicitly ordered. 2014-04-01 18:39:10 -07:00
Adam Ierymenko 0e1fc06a6f The remove paths on send fail thing in Peer.cpp was not well thought out, and there is no point in mallocing the TCP write buffer. 2014-04-01 15:55:05 -07:00
Adam Ierymenko c3b41c289d Resynchronize on startup. 2014-04-01 14:12:54 -07:00
Adam Ierymenko 6ab95e0391 Get : out of Path.toString() since this will conflict with : in IPv6 IPs. 2014-04-01 08:52:52 -07:00
Adam Ierymenko 67b3fa9311 Clean up main.o in Linux make clean. 2014-03-31 22:38:46 -07:00
Adam Ierymenko 316e8d1939 Build fix. 2014-03-31 22:30:08 -07:00
Adam Ierymenko f13493edb2 Oops... turns out we need to differentiate incoming from outgoing TCP and indeed learn incoming TCP paths. Otherwise the recipient of a TCP connection does not know to reply via TCP! Heh. 2014-03-31 22:23:55 -07:00
Adam Ierymenko 595b386afc Increase maximum packet fragments to make room for huge multicasts with certificates of membership tagged onto them. This likely will not actually increase the number of fragments in practice much, since these are then subsequently compressed. But the buffer needs to be allocated with room for them, otherwise these packets get dropped with a range_error exception internally. 2014-03-31 14:53:33 -07:00
Adam Ierymenko 8e587ae481 Clean dead paths from peers. 2014-03-31 11:41:14 -07:00
Adam Ierymenko acb056e3b1 Small readability fix. 2014-03-28 21:04:15 -07:00
Adam Ierymenko 5ef2c6fd6f Add TCP/443 to all supernodes in Defaults. 2014-03-28 15:51:19 -07:00
Adam Ierymenko 1a0572d7e7 Remove UDP-breaking debug code. 2014-03-28 13:58:18 -07:00
Adam Ierymenko 7957ab6b1d Windows uses exceptfds to report failed async connect() in select(). TCP now done on Windows (I think). 2014-03-28 13:37:21 -07:00
Adam Ierymenko e8b613e625 TCP connections work on Windows now. 2014-03-28 12:26:33 -07:00
Adam Ierymenko 9c68a343f6 Reduce some TRACE noise. 2014-03-27 18:57:20 -07:00
Adam Ierymenko 881ff08269 Make multiple attempts to open the tap device on Windows. 2014-03-27 18:50:10 -07:00
Adam Ierymenko e3239d23f4 Windows build fix. 2014-03-27 18:39:58 -07:00
Adam Ierymenko f9c92b0351 Build fix from merge. 2014-03-27 18:24:57 -07:00
Adam Ierymenko b73c36acbf Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com:222/git/ZeroTierOne into adamierymenko-dev 2014-03-27 18:23:02 -07:00
Adam Ierymenko 181369964f Make TCP optional, rename port constant. 2014-03-27 18:22:53 -07:00
Adam Ierymenko d2c5d71502 Finally fixed TCP sockets. 2014-03-27 17:42:02 -07:00
Adam Ierymenko c231510f8b More TCP-related fixes and tweaks to ping timing, resynchronize, and startup. 2014-03-27 17:02:52 -07:00
Adam Ierymenko 2ac56fd120 Fix TCP connection accumulation problem, still having issues with TCP tunneling. 2014-03-26 17:59:45 -07:00
Adam Ierymenko e6b23059ac Change the way TCP failover is invoked. 2014-03-26 16:44:58 -07:00
Adam Ierymenko 04169b5150 If I want it to pick the first, actually picking the first is helpful. 2014-03-26 15:44:24 -07:00
Adam Ierymenko daaec84c6b Add TCP channel support for supernode list, make Peer pick the first path if all paths are equally dead. 2014-03-26 15:35:15 -07:00
Adam Ierymenko 73c1d43f2f Crank down default multicast preload and max balance just a little bit... should not impact non-lame protocols. 2014-03-25 21:48:16 -07:00
Adam Ierymenko ab5a460177 Apply multicast rate limits on a network to ourselves and do not send multicasts that would exceed limits, for GitHub issue #55 2014-03-25 21:38:54 -07:00
Adam Ierymenko 67a85221d5 WINDOWS IS SUFFERING 2014-03-25 17:31:03 -07:00
Adam Ierymenko 328be8f846 Make Windows build, add (untested) Windows named pipe based IPC code. 2014-03-25 08:37:08 -07:00
Adam Ierymenko d9b91758e0 Fix command line interface. 2014-03-21 14:58:35 -07:00
Adam Ierymenko 4e26ade2df Fix deadlock in refactored code. 2014-03-21 14:31:10 -07:00
Adam Ierymenko 8d3eb1a258 A few renamings to be consistent. 2014-03-21 14:18:35 -07:00
Adam Ierymenko 33ad3deaee Builds with new Path code. 2014-03-21 13:46:55 -07:00
Adam Ierymenko ba3f04deed Work in progress: refactoring paths, adding TCP fallback. 2014-03-20 20:07:35 -07:00
Adam Ierymenko 45e823d27c Reworking of paths in Peer work-in-progress, and TCP connect support in SocketManager. Also add FD_SETSIZE checking for the default select implementation of sockets. 2014-03-20 18:49:33 -07:00
Adam Ierymenko 70b736f440 Put mac back to release default build flags. 2014-03-20 14:44:13 -07:00
Adam Ierymenko 97e6b38144 MULTICAST_FRAME TRACE improvements. 2014-03-20 14:24:15 -07:00
Adam Ierymenko 7a45ff460d More deadlock fixes in new I/O. 2014-03-20 14:00:05 -07:00
Adam Ierymenko 6f5a4d7e29 Fix blocking socket issues in new socket I/O code. 2014-03-20 13:21:58 -07:00
Adam Ierymenko 4d0ad9abb6 Fix TRACE bug and new UDP socket code issue. 2014-03-19 23:10:34 -07:00
Adam Ierymenko 15e8c18106 Bug fixes. 2014-03-19 22:01:32 -07:00
Adam Ierymenko 1c555e4b96 command bus fix 2014-03-19 16:59:23 -07:00
Adam Ierymenko 6fdb360e2a More IPC work. 2014-03-19 16:05:03 -07:00
Adam Ierymenko 0d847d9410 More build fixes. 2014-03-19 15:29:00 -07:00
Adam Ierymenko abc82d6a52 IPC changes and SocketManager changes all build! 2014-03-19 13:56:48 -07:00
Adam Ierymenko acf7d70d24 Integrate IPC stuff into NodeConfig. 2014-03-19 08:20:09 -07:00
Adam Ierymenko 3be4c38946 IPC stuff for Unix. 2014-03-18 18:44:44 -07:00
Adam Ierymenko 6a1bd52854 New IPC work... 2014-03-18 17:19:32 -07:00
Adam Ierymenko 0b75992737 Everything but the local config bus... blech. 2014-03-18 14:33:57 -07:00
Adam Ierymenko 91fef21973 More ripping out of old condition stuff. 2014-03-18 12:21:22 -07:00
Adam Ierymenko dc0f3559be Rip out old condition and Demarc stuff... 2014-03-18 12:00:15 -07:00
Adam Ierymenko bb25128406 TCP socket. 2014-03-18 11:53:53 -07:00
Adam Ierymenko bf5d8de999 More new socket I/O work... 2014-03-17 16:29:53 -07:00
Adam Ierymenko 1a0a6755b1 UDP socket implementation. 2014-03-17 16:18:44 -07:00
Adam Ierymenko 8adbbe092d Drop old Demarc.cpp code. 2014-03-17 15:15:02 -07:00
Adam Ierymenko bd749e040d Compile fixes. 2014-03-17 15:14:22 -07:00
Adam Ierymenko 7e80d7e551 Bunch of work in progress on new socket multiplexer and plumbing for TCP jailbreaking... Don't try to build, won't yet. 2014-03-17 09:05:43 -07:00
Adam Ierymenko ce09d00679 Security improvements to Linux build flags mirroring OSX improvements. 2014-03-11 11:50:04 -07:00
Adam Ierymenko dbd7a06ea9 Enable PIE to allow ASLR (security) 2014-03-11 10:56:38 -07:00
Adam Ierymenko 74c2e644a9 Change -O4 to -O3 -flto on OSX for new clang (should work with older one too) 2014-03-11 10:18:39 -07:00
Adam Ierymenko dfee7e0389 VERSION 0.7.2: first Windows release!
Version 0.7.2 marks the first release of ZeroTier One for Windows. Binaries will be
released to a few select testers at first, then to the whole world. Installation from
MSI and auto-update appear to be working. So far Windows 7 and 8 and Windows Server
2008 or newer are supported. Vista has issues so it's not supported at the moment,
and may not be since nobody seems to use it (according to Google Analytics).
2014-03-07 15:20:37 -08:00
Adam Ierymenko 60f25ccdf9 Some text changes, remove unused modules from installer project. 2014-03-07 14:25:24 -08:00
Adam Ierymenko 2b0dbead17 Disable Vista in installer. 2014-03-06 15:32:30 -08:00
Adam Ierymenko d0b506c12b Fix crash on uninitialized taps. 2014-03-06 15:11:08 -08:00
Adam Ierymenko 742261c7fc (1) Fix menu bar item font size on Windows, (2) fix for possible Windows EthernetTap infinite loop while enumerating registry. 2014-03-06 14:06:31 -08:00
Adam Ierymenko 939cdc82a2 VERSION 0.7.1: small Linux compile fix on g++, does not merit new release 2014-03-05 15:40:31 -08:00
Adam Ierymenko a207ce13c0 VERSION 0.7.1: installation fixes, new supernode
This version contains fixes to Linux installation and deployment and adds a
new supernode in Tokyo, Japan. It also has a working Windows installer, though
a bit more testing is going to take place before Windows binaries are
actually released.
2014-03-05 15:19:45 -08:00
Adam Ierymenko 17c77da38f Fix GitHub issue #45 - Linux install issues 2014-03-05 23:57:25 +01:00
Adam Ierymenko 54313212a4 New supernode: shoggoth.zerotier.com in Tokyo, Japan! This just about covers the entire world for global low-latency peer location and relaying. 2014-03-05 23:21:23 +01:00
Adam Ierymenko b2673eab55 Revisions to Linux install script, and support for init.d or upstart systems without chkconfig (Ubuntu). 2014-03-05 22:33:58 +01:00
Adam Ierymenko 282d41bc94 Script to build UI against our own new precompiled Win32 static Qt binary, which paradoxiclally results in a smaller executable than dynamic Qt and doesn't require us to bundle a million DLLs. Also update installer to reflect that. Finally, add a step to the installer to remove all instances of the tap device on full uninstall so as not to leave orphaned junk in your network connections or device manager. Looking good! 2014-03-05 09:52:59 -08:00
Adam Ierymenko b72c2c6358 Disable SSE on 32-bit Windows builds since people might still be using old school chips... x64 builds with SSE since pretty much all AMD64/x86_64 chips have it. 2014-03-04 11:18:34 -08:00
Adam Ierymenko 5581339d5b Build with /MT on Windows so we can stop having to install a redistributable... makes installer less noisy but unfortunately makes binary bigger. Oh well. 2014-03-04 11:16:39 -08:00
Adam Ierymenko 78f3966d66 Make sysV init script run as daemon, for GitHub issue #45 2014-03-03 12:00:26 -08:00
Adam Ierymenko bae9fa1480 -d switch for daemonizing on Unix 2014-03-03 11:53:43 -08:00
Adam Ierymenko cef750d1d2 Add option to install drivers in driver cache on Windows, needed for Windows installer. Blech. 2014-03-03 10:23:19 -08:00
Adam Ierymenko be36eda858 Add prerequisites (VS2012 redistributables) to installer. 2014-02-28 16:09:42 -08:00
Adam Ierymenko 13fbf9a200 *nix build fix 2014-02-28 15:05:56 -08:00
Adam Ierymenko f2a03f68bd Add code to clean unused permanent tap interfaces on Windows (but not used yet). 2014-02-28 15:04:50 -08:00
Adam Ierymenko d997c1a32a Installer work... 2014-02-28 12:20:05 -08:00
Adam Ierymenko d27251ec4e Make AtomicCounter use <atomic> on Windows (eventually this will replace it on other platforms), and some installer work. 2014-02-28 09:15:29 -08:00
Adam Ierymenko 9ae6403346 Installer works, and fix for ugly fonts in pulldown menus in main windows in UI. Also remove dummy installer, which we don't need anymore. 2014-02-27 21:56:57 -08:00
Adam Ierymenko 39d411ce0b Installer work... 2014-02-27 21:28:34 -08:00
Adam Ierymenko 93fe848bb6 Ignore a build dir. 2014-02-27 16:39:02 -08:00
Adam Ierymenko 9d05897f7a Windows service works now! 2014-02-27 16:28:55 -08:00
Adam Ierymenko cbeb9c5236 Installer work, sign devcon. 2014-02-26 16:32:32 -08:00
Adam Ierymenko 2203958798 Windows auto-updater invocation works... time to try an installer! 2014-02-26 14:37:21 -08:00
Adam Ierymenko 268ec8d1e0 Fix for GitHub issue #40: updates.d not being cleared. 2014-02-24 13:23:03 -08:00
Adam Ierymenko 093d745b86 ZT_OFFICIAL_RELEASE and ZT_AUTO_UPDATE in Windows build in Release mode. 2014-02-23 09:06:55 -08:00
Adam Ierymenko 655b6d1996 Windows auto-update URL and dummy Windows update for testing. 2014-02-23 08:01:52 -08:00
Adam Ierymenko 833a0621fa Windows service auto-update work. 2014-02-21 23:49:24 -08:00
Adam Ierymenko b5c3a92be2 Boring stuff: update dates in copyrights across all files. 2014-02-16 12:40:22 -08:00
Adam Ierymenko 78694bb2f5 VERSION 0.7.0: another documentation update (no version change or code changes) 2014-02-16 12:10:43 -08:00
Adam Ierymenko 297cfd86fa VERSION 0.7.0: updated docs (no version change)
See previous commit message for 0.7.0 release notes.
2014-02-16 12:08:13 -08:00
Adam Ierymenko 43b2bf6c16 VERSION 0.7.0: fix two bugs reported on GitHub, public binaries now in the wild!
Version 0.7.0 commemorates public beta binaries now being in the wild for Mac
and Linux platforms, though this actually happened a few days ago with 0.6.14.

This version fixes two bugs. First, the Linux installer/updater now supports
both systemd and regular SysV init. It will detect which your distro uses at
install/update time and install the zerotier-one service accordingly.

Secondly, this fixes an issue that caused the service to always show ONLINE
in the GUI or 'zerotier-cli info' even if there was no net connection. The
online status should be more reliably reported now.
2014-02-14 22:22:19 -08:00
Adam Ierymenko aceb938e07 Another Linux installer fix: do not clobber existing directory permissions! 2014-02-14 21:45:42 -08:00
Adam Ierymenko 68f44fb932 Another little Linux installer fix. 2014-02-15 00:29:32 -05:00
Adam Ierymenko e38619dd02 Small fix to Linux installer. 2014-02-14 21:14:34 -08:00
Adam Ierymenko 4ec7cd2760 Fix for GitHub issue #38: compute whether we are ONLINE a little differently 2014-02-14 16:23:03 -08:00
Adam Ierymenko b0277ab904 Clean up old init.d installation files on systemd systems if present. 2014-02-14 15:28:45 -08:00
Adam Ierymenko 87b26b0aaf Systemd support on Linux - GitHub issue #39 2014-02-14 15:18:59 -08:00
Adam Ierymenko 01d13c153d Fix compiler warnings in Linux build. 2014-02-14 13:08:54 -08:00
Adam Ierymenko c17082a4f8 VERSION 0.6.14: bug fixes, Unix device persistence
This version adds persistence of *nix device names (where possible), and fixes
a possible crash in Topology.cpp that was introduced in a previous revision.

It also adds a new supernode located in Singapore!
2014-02-11 15:16:42 -08:00
Adam Ierymenko 9acfd3eb73 Build fix on Linux with G++. 2014-02-11 23:09:53 +00:00
Adam Ierymenko 0ad84b8723 Possible bug fix in Topology, have to test... 2014-02-11 15:02:21 -08:00
Adam Ierymenko 3f912eb4ad Fix for GitHub issue #37: remember *nix device names. 2014-02-11 14:21:59 -08:00
Adam Ierymenko f1b45f7df0 A few little fixes in NodeConfig. 2014-02-11 13:20:51 -08:00
Adam Ierymenko 29c18d4bde Add new Singapore supernode! 2014-02-11 08:57:25 -08:00
Adam Ierymenko 33728840ec More local.conf stuff. 2014-02-10 16:46:53 -08:00
Adam Ierymenko cd339486b7 local.conf in NodeConfig 2014-02-10 14:22:57 -08:00
Adam Ierymenko e54a34d8dd Finally found a Windows installer option that doesn't cost $500 or require me to climb a huge learning curve just to do a basic software install. 2014-02-08 22:22:18 -08:00
Adam Ierymenko d24b192f8c Remove old updates from updates.d on Node startup. 2014-02-07 09:13:08 -08:00
Adam Ierymenko 0442d7e2d6 Forgot to save solution file. 2014-02-06 23:14:41 -08:00
Adam Ierymenko 5b97bb247e More Windows service work... it builds! Now to do a new installer and test. Also fix a Windows compile warning in Switch.cpp. 2014-02-06 23:12:12 -08:00
Adam Ierymenko 8a7486577a Windows service work, remove old installer... not sure exactly what we're going to use. 2014-02-06 22:06:27 -08:00
Adam Ierymenko 6d17993eb6 Fix a possible infinite loop in netconf service... in the long term need to fix IP assignment logic period cause the current incarnation sucks. 2014-02-06 10:59:50 -08:00
Adam Ierymenko d0e5da2884 Fix copyright notice. 2014-02-05 16:38:54 -08:00
Adam Ierymenko d5b50ee466 C++ service base stuff taken from MS public domain example project and modified slightly. 2014-02-05 16:37:50 -08:00
Adam Ierymenko 8031fe00c7 Delete C# service... going C++, probably integrating with core. 2014-02-05 14:27:31 -08:00
Adam Ierymenko 3f6152806f Add security notice the first time a user joins a public network. 2014-02-05 12:38:37 -08:00
Adam Ierymenko 7fdca150a9 VERSION 0.6.13: small bug fix, UI work
This is just a small bug fix and some UI work. Version bumps will be
coming faster too to test auto-update.
2014-02-04 22:15:57 -08:00
Adam Ierymenko 165de71754 Quick start rev. 2014-02-04 22:08:42 -08:00
Adam Ierymenko 6b1a4b6e64 Undo last commit... 2014-02-04 17:06:50 -08:00
Adam Ierymenko aaf0ef6b19 Pull static image version of quick start guide. 2014-02-04 16:31:23 -08:00
Adam Ierymenko fb2745ba3b Remove another script that doesn't really belong here. 2014-02-04 14:26:09 -08:00
Adam Ierymenko d452ed7db8 Fix inverted sense bug in new skip-stale-relay logic. 2014-02-03 21:15:29 -08:00
Adam Ierymenko 8f5cd0a361 VERSION 0.6.12: code cleanup in peers and IP address enumeration improvements
This version ties up some stuff that remains in the core before binary release.
It adds support for direct interface IP enumeration on *nix systems, as well
as a fix for IPv6 link-local addresses on OSX. This also contains some cleanup
in Peer and some improvements to help detect and route around dead or unreachable
supernodes.

Getting close!
2014-02-03 16:53:38 -08:00
Adam Ierymenko d7bc3c6f4a Fix infinite loop bug introduced in last commit. 2014-02-03 12:28:23 -08:00
Adam Ierymenko d04e5a1fe0 Add a simple but very nice mechanism for avoiding potentially dead supernodes. 2014-02-03 11:09:09 -08:00
Adam Ierymenko bf5f09a0c7 Yank a code path it turns out we probably don't want. 2014-02-03 10:46:37 -08:00
Adam Ierymenko a154d660d9 Some work on background service that runs the actual zerotier-one process. 2014-02-02 23:48:44 -08:00
Adam Ierymenko 7a49d50187 Windows installer work... 2014-02-02 17:38:22 -08:00
Adam Ierymenko ce0bd93289 Make software update run a little more often for now. 2014-02-02 16:46:27 -08:00
Adam Ierymenko 0fdefdf7a4 So Linux has getifaddrs() too! Yay! 2014-02-02 02:21:09 -05:00
Adam Ierymenko 8236f20759 Private struct ifmaddrs for OSX cause struct ifmaddrs is missing too on OSX 10.6. 2014-02-01 23:18:31 -08:00
Adam Ierymenko e16b2a8831 Real implementation of ips() on OSX, now for Linux. 2014-02-01 23:10:04 -08:00
Adam Ierymenko f7fbc6f633 Remove submit script. 2014-02-01 22:31:52 -08:00
Adam Ierymenko 3a9b0cf132 UI quick start guide. 2014-02-01 21:55:32 -08:00
Adam Ierymenko 2a3e646b94 Manually generate IPv6 link-local address only on Mac. 2014-02-01 14:02:14 -08:00
Adam Ierymenko 64231aa3f0 Fix for GitHub issue #36 on OSX... results in a duplicate entry for IPv6 link-local but seems okay... need to test on OSX 10.6 though. 2014-01-31 15:55:45 -08:00
Adam Ierymenko 117e6fb356 Remove some more junk from tap driver tree. 2014-01-31 12:40:06 -08:00
Adam Ierymenko 03ea06fa84 VERSION 0.6.11: Windows wrap-up work, NAT-t fixes
This version fixes a minor NAT traversal issue. In the past, NAT-t links had a timeout
but otherwise were preserved. This version makes them more ephemeral and invalidates
them on sleep/wake or changes in network configuration or environment.

This is because many NAT setups are very fragile with regard to hole punches, so the
past stickiness of links caused dead links to persist too long and break connectivity
between peers.

This is about 75% of what needs to be done to greatly improve robustness. The other 25%
involves detecting failed links or failed relays.

This version is also almost done for the Windows platform, moving us even closer to
binary release.
2014-01-30 15:49:08 -08:00
Adam Ierymenko 525ab3faa9 Take TRACE back out of Mac makefile, fix a few decode little things. 2014-01-30 15:26:12 -08:00
Adam Ierymenko 490e86dde3 Bunch of fixes to startup, pinging, and choice of route. Also some TRACE updates. 2014-01-30 14:23:52 -08:00
Adam Ierymenko 6e076e77d8 More work on connection reset stuff... 2014-01-29 22:04:23 -08:00
Adam Ierymenko d75f2f7051 SIGHUP now causes resync with peers. 2014-01-29 17:24:55 -08:00
Adam Ierymenko aa1be9fcad Some TRACE cleanup. 2014-01-29 20:09:55 -05:00
Adam Ierymenko 17796aaed4 TRACE NOP receipt. 2014-01-29 17:08:03 -08:00
Adam Ierymenko 2355fa973e Tiny compiler warning fix. 2014-01-29 18:27:02 -05:00
Adam Ierymenko 694e9f2bdc Some cleanup and rationalization of main loop. 2014-01-29 14:09:12 -08:00
Adam Ierymenko 372566295e Alternate order of packet emission in unite(). 2014-01-29 12:11:01 -08:00
Adam Ierymenko 4e85213473 Yank RuntimeEnvironment from SysEnv. 2014-01-29 09:58:17 -08:00
Adam Ierymenko d6a346ca6e Fix for GitHub issue #35 and also possibly partial fix for #29 issues. 2014-01-28 16:12:24 -08:00
Adam Ierymenko 8b65b3e6d7 Yank PROBE stuff since it's not used and was a premature addition to the protocol. 2014-01-28 10:41:43 -08:00
Adam Ierymenko ffffc0179f Fix a couple compile items. 2014-01-27 23:16:15 -08:00
Adam Ierymenko f80ec871f6 Make EthernetTap creation occur in a background thread in Network since it's a time consuming operation on Windows. This fixes one of the last remaining Windows problems. 2014-01-27 23:13:36 -08:00
Adam Ierymenko e0cb5caef2 UI appearance tweaks. 2014-01-27 14:55:56 -08:00
Adam Ierymenko afbbf61588 Delete persistent tap device on Windows when we leave a network. 2014-01-26 22:47:08 -08:00
Adam Ierymenko 28665079a0 Windows UI appearance fixes (font issue, etc.) and fix to WinSock init on GUI client. 2014-01-26 22:24:29 -08:00
Adam Ierymenko 80997f652b Few small cleanup things... 2014-01-26 10:59:33 -08:00
Adam Ierymenko 9d67a02b5f Lock down individual files in networks.d instead of directory since directory ACLs are more complex on Windows. 2014-01-26 10:32:12 -08:00
Adam Ierymenko 22efa1ab53 Windows Installer work, fix 100% CPU bug in EthernetTap on Windows, Windows lockDownFile() implementation that uses 'cacls' utility. 2014-01-26 10:21:43 -08:00
Adam Ierymenko f19d1e253a Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com/git/ZeroTierOne into adamierymenko-dev 2014-01-24 23:15:38 -08:00
Adam Ierymenko b65f7f7895 Qt GUI now builds and runs on Windows. On Windows it can (via its manifest) automatically request admin rights on launch, which plugs it nicely into Windows' admin rights system without requiring file copies and such. 2014-01-24 23:15:14 -08:00
Adam Ierymenko fb49d2ced9 Small mac installer script fix. 2014-01-24 17:30:46 -08:00
Adam Ierymenko 434ce96f2c Officially signed 32-bit build of Windows tap driver. 2014-01-24 17:29:46 -08:00
Adam Ierymenko 6ae2c5f5c7 VERSION 0.6.10: Windows runs again!
Not a significant release for OSS users, but this version marks a significant
increase in workitude on the Windows platform. A properly and officially
signed x64 driver is also included. x86 drivers and more Windows work including
Qt UI are coming soon.
2014-01-24 15:05:04 -08:00
Adam Ierymenko 6f4e494e06 Bunch of UI style improvements. 2014-01-24 13:26:24 -08:00
Adam Ierymenko eb554a504d Fix for allIps -> ips in EthernetTap on Unix. 2014-01-23 16:25:51 -08:00
Adam Ierymenko 8771418170 Fix bug in tap driver introduced during unused code purge (deleted the part that acknowledges writes!), and fix bug in EthernetTap causing 0000 for etherType. Windows works now! Yay! 2014-01-23 16:10:24 -08:00
Adam Ierymenko 2f37ea842f Couple of Windows fixes, get rid of ips()/allIps() distinction in EthernetTap. (Will need to be fixed on Unix now... later.) 2014-01-23 14:15:00 -08:00
Adam Ierymenko 9232ba1da0 Tap works on Windows now, sort of. Now I discovered that Windows has two mechanisms for assigning IP addresses: the registry and lower-level calls. Joy. 2014-01-22 23:46:33 -08:00
Adam Ierymenko a0916b926f Finally got the Windows x64 driver signed correctly. Turns out signtool.exe with the older (NDIS5) version of the Windows DDK does not understand cross-certificates, yet it blithely continues on and signs incorrectly anyway. Got it working by using DigiCert's own certificate tool which includes a sign files operation. Must be done manually but this doesn't have to be done often. F@!K. 2014-01-22 22:11:22 -08:00
Adam Ierymenko 2da6a7570b More tap driver work, increment version number, remove old binaries since signatures may not have been valid. 2014-01-22 18:38:45 -08:00
Adam Ierymenko 2498ecbc84 Windows compile fixes, check if running as administrator on startup for Windows. 2014-01-21 16:49:34 -08:00
Adam Ierymenko 4935fdf6e4 Windows ignore file updates 2014-01-21 13:18:19 -08:00
Adam Ierymenko 370dd6c4da Several things:
(1) Add a bunch of tedious type casts to eliminate unnecessary compiler warnings on Windows X64 builds.

(2) Some EthernetTap work to integrate Windows custom IOCTL for multicast group lookup (not done quite yet).

(3) Dump some more info in selftest to make sure our Windows path lookup functions are returning sane results.
2014-01-21 13:07:22 -08:00
Adam Ierymenko 06ca24e8e2 More work on Windows service, cleanup. 2014-01-21 09:18:12 -08:00
Adam Ierymenko c4425c836a Ignores... 2014-01-20 17:04:44 -08:00
Adam Ierymenko f0dd90d9d7 Windows Service stubs... 2014-01-20 17:03:15 -08:00
Adam Ierymenko 6bc5a84a2d Windows build fixes and installer work... 2014-01-20 16:16:01 -08:00
Adam Ierymenko 3375363d93 More tap driver cleanup, and add IOCTL to get L2 multicast ethernet address subscriptions. 2014-01-20 14:33:05 -08:00
Adam Ierymenko fbb40b98ad Add Windows Build folder to ignore list. 2014-01-20 11:20:13 -08:00
Adam Ierymenko a365a0e3ba Remove a lot of code that we don't need from tap-windows, further winnowing down this fork of OpenVPN's tap-windows to a more minimal version that does only basic Ethernet tap functionality. 2014-01-20 11:18:55 -08:00
Adam Ierymenko 45c5b66e9e Self test now passes on Windows. 2014-01-18 14:53:59 -08:00
Adam Ierymenko f303c24d3c Build fix. 2014-01-18 10:23:44 -08:00
Adam Ierymenko 3d4762eab3 Merge branch 'adamierymenko-dev' of ssh://shub-niggurath.zerotier.com/git/ZeroTierOne into adamierymenko-dev
Conflicts:
	.gitignore
2014-01-18 10:19:53 -08:00
Adam Ierymenko a5896264fa Builds on Windows now. 2014-01-18 10:17:15 -08:00
Adam Ierymenko 4d1cca1150 Remove VC++ warnings in C25519, also add inline to short methods. 2014-01-18 09:44:35 -08:00
Adam Ierymenko 092e6e947e .gitignore fixes for Windows 2014-01-17 17:11:35 -08:00
Adam Ierymenko 07f505971c Windows build fixes. 2014-01-17 17:09:59 -08:00
Adam Ierymenko 7eccc5ebf2 Windows HTTP client code (untested) 2014-01-17 16:18:21 -08:00
Adam Ierymenko dab124dfb9 VERSION 0.6.9: more UI, installation, and packaging work...
Another release leading up to official binary releases... not much to the core,
but quite a bit of work on the UI, installation, and such.

This version will build and run on OSX 10.6 while previous versions would fail
due to a missing getifmaddrs() function.
2014-01-17 12:57:31 -08:00
Adam Ierymenko 8be664cca9 UI cleanup and license dialog. 2014-01-17 10:36:58 -08:00
Adam Ierymenko 866edd41a7 Build DMG from makefile for Mac. 2014-01-16 17:23:49 -08:00
Adam Ierymenko 412f93122d Add our own getifmaddrs() since this convenience function is not in OSX 10.6. 2014-01-16 15:11:59 -08:00
Adam Ierymenko 3201d1d493 mkdir fix in mac install 2014-01-16 14:14:23 -08:00
Adam Ierymenko 9df7f65dd5 Mac installation, and dump pre10.8 stuff because it turns out that 10.6 loads the existing kext fine. 2014-01-16 13:53:31 -08:00
Adam Ierymenko e23be8c91a Get rid of make stuff for helpers that are gone. 2014-01-15 21:30:43 -08:00
Adam Ierymenko 99c384e110 New way of doing authenticate and install. Now with more kittens. 2014-01-15 17:00:53 -08:00
Adam Ierymenko 49076d406e Cheezy little helper apps: kill them with fire. There is a better way. A cleaner way. A nicer way. A way with more kittens. 2014-01-15 10:32:01 -08:00
Adam Ierymenko 9e491decc0 Build stuff... 2014-01-14 21:15:13 -08:00
Adam Ierymenko ad77d9b014 Rebuild tap.kext on OSX 10.6 for all versions so it works on that platform. 2014-01-14 16:08:04 -08:00
Adam Ierymenko 4788d911ad Remove ZT1 GPL copyright from the top of code that is basically all Daniel Bernstein's 2014-01-14 08:27:59 -08:00
Adam Ierymenko 80ea7db9c0 Add a waiting for service message on startup to not confuse user. 2014-01-13 11:16:38 -08:00
662 changed files with 100674 additions and 25656 deletions

No files matched your search

+76 -25
View File
@@ -1,34 +1,85 @@
/ext/llvm-g++-Xcode4.6.2
/ext/llvm-g++-Xcode4.6.2.tar.bz2
/zerotier-*
/ZeroTierUI/*.user
*.o
# Main binaries created in *nix builds
/zerotier-one
/zerotier-idtool
/zerotier-cli
/zerotier-selftest
/zerotier
# OS-created garbage files from various platforms
.DS_Store
.Apple*
*.dSYM
/netconf-service/netconf-test
/netconf-service/netconf.service
/ipch
/ZeroTierOne.sdf
/ZeroTierOne.v11.suo
/vsprojects/SelfTest/Debug
/vsprojects/SelfTest/Release
/vsprojects/ZeroTierOne/Debug
/vsprojects/ZeroTierOne/Release
/vsprojects/ZeroTierOne/x64
/vsprojects/TapDriver/Win32
/vsprojects/TapDriver/x64
/vsprojects/InstallerUpdater/obj
/vsprojects/Service/obj
/vsprojects/SelfTest/SelfTest.aps
/Build/*
Thumbs.db
# Windows build droppings
/windows/ZeroTierOne.sdf
/windows/ZeroTierOne.v11.suo
/windows/x64
/windows/Win32
/windows/*/x64
/windows/*/Win32
/windows/ZeroTierOne/Release
/windows/ZeroTierOneService/obj
/windows/ZeroTierOneService/bin
/windows/Build
/windows/Debug
/windows/Release
/windows/WebUIWrapper/bin
/windows/WebUIWrapper/obj
/ext/installfiles/windows/ZeroTier One-SetupFiles
/ext/installfiles/windows/Prerequisites
/ext/installfiles/windows/*-cache
/ZeroTier One.msi
# *nix/Mac build droppings
/build-*
/ZeroTierOneInstaller-*
/examples/docker/zerotier-one
/examples/docker/test-*.env
/world/mkworld
/world/*.c25519
zt1-src.tar.gz
# Miscellaneous temporaries, build files, etc.
*.log
*.opensdf
*.user
*.cache
*.obj
*.tlog
/build-*
/ZeroTierOneInstaller-*
.qmake.stash
*.pid
*.pkg
*.o
*.a
*.dylib
*.so
*.so.*
*.o-*
*.core
*.deb
*.rpm
*.autosave
*.tmp
doc/*.1
doc/*.2
doc/*.8
.depend
node_modules
debian/files
debian/zerotier-one
debian/zerotier-one*.debhelper
debian/*.log
debian/zerotier-one.substvars
# Java/Android/JNI build droppings
java/obj/
java/libs/
java/bin/
java/classes/
java/doc/
java/build_win64/
java/build_win32/
/java/mac32_64/
windows/WinUI/obj/
windows/WinUI/bin/
windows/ZeroTierOne/Debug/
/ext/installfiles/windows/chocolatey/zerotier-one/*.nupkg
+80
View File
@@ -0,0 +1,80 @@
## Primary Authors
* ZeroTier Core and ZeroTier One virtual networking service<br>
Adam Ierymenko / adam.ierymenko@zerotier.com
* Java JNI Interface to enable Android application development, and Android app itself (code for that is elsewhere)<br>
Grant Limberg / glimberg@gmail.com
* ZeroTier SDK (formerly known as Network Containers)<br>
Joseph Henry / joseph.henry@zerotier.com
## Third Party Contributors
* A number of fixes and improvements to the new controller, other stuff.<br>
Kees Bos / https://github.com/keesbos/
* Debugging and testing, OpenWRT support fixes.<br>
Moritz Warning / moritzwarning@web.de
* Debian GNU/Linux packaging, manual pages, and license compliance edits.<br>
Ben Finney <ben+zerotier@benfinney.id.au>
* Several others made smaller contributions, which GitHub tracks here:<br>
https://github.com/zerotier/ZeroTierOne/graphs/contributors/
## Third-Party Code
These are included in ext/ for platforms that do not have them available in common repositories. Otherwise they may be linked and the package may ship with them as dependencies.
* LZ4 compression algorithm by Yann Collet
* Files: ext/lz4/*
* Home page: http://code.google.com/p/lz4/
* License grant: BSD attribution
* http-parser by Joyent, Inc. (many authors)
* Files: ext/http-parser/*
* Home page: https://github.com/joyent/http-parser/
* License grant: MIT/Expat
* json-parser by James McLaughlin
* Files: ext/json-parser/*
* Home page: https://github.com/udp/json-parser/
* License grant: BSD attribution
* TunTapOSX by Mattias Nissler
* Files: ext/tap-mac/tuntap/*
* Home page: http://tuntaposx.sourceforge.net/
* License grant: BSD attribution no-endorsement
* ZeroTier Modifications: change interface name to zt#, increase max MTU, increase max devices
* tap-windows6 by the OpenVPN project
* Files: windows/TapDriver6/*
* Home page:
https://github.com/OpenVPN/tap-windows6/
* License grant: GNU GPL v2
* ZeroTier Modifications: change name of driver to ZeroTier, add ioctl() to get L2 multicast memberships (source is in ext/ and modifications inherit GPL)
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519
digital signature algorithm, and Poly1305 MAC algorithm, all by
Daniel J. Bernstein
* Files:
node/Salsa20.hpp
node/C25519.hpp
node/Poly1305.hpp
* Home page: http://cr.yp.to/
* License grant: public domain
* MiniUPNPC and libnatpmp by Thomas Bernard
* Files:
ext/libnatpmp/*
ext/miniupnpc/*
* Home page: http://miniupnp.free.fr/
* License grant: BSD attribution no-endorsement
-21
View File
@@ -1,21 +0,0 @@
ZeroTier One is designed and written by Adam Ierymenko, with a few bug
fixes and other contributions from other users. Information about all
contributors can be found on the GitHub home page at:
https://github.com/zerotier/ZeroTierOne
ZeroTier One includes the following third party code:
* LZ4 compression algorithm by Yann Collet (BSD license)
http://code.google.com/p/lz4/
* TunTapOSX by Mattias Nissler (forked for ZT1) (BSD license)
http://tuntaposx.sourceforge.net
* tap-windows by the OpenVPN project (forked for ZT1) (GPL)
https://github.com/OpenVPN/tap-windows
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519
digital signature algorithm, and Poly1305 MAC algorithm, all by
Daniel J. Bernstein (public domain)
http://cr.yp.to/
-45
View File
@@ -1,45 +0,0 @@
Building ZeroTier One on different platforms:
(See RUNNING.txt for what to do next.)
Developers note: there is currently no management of dependencies on *nix
platforms, so you should make clean ; make if you change a header. Will
do this eventually.
-- Linux
make
That's it. Add ZT_AUTO_UPDATE=1 to the make command line to build an
auto-update-enabled version that will update from ZeroTier's servers.
This is disabled by default since such a build will automatically
replace itself with our binary distributions.
-- MacOS
make
The same ZT_AUTO_UPDATE=1 option as Linux supports can be used here to
build an auto-update-enabled version. By default auto-updates are not
enabled.
If you are building ext/tap-mac you will need a different version of the
OSX gcc compiler chain than what currently ships (clang). We've got a copy
available here:
http://download.zerotier.com/dev/llvm-g++-Xcode4.6.2.tar.bz2
Un-tar this into ext/ (it's excluded in .gitignore) and then 'make' in
ext/tap-mac/tuntap/src/tap.
Most users should not need to build tap-mac, since a binary is included
in ext/bin.
To build the UI you will need Qt version 5.0 or later. The Qt home must
be symbolically linked into "Qt" in the parent directory of the ZeroTier
One source tree. Then you can type "make mac-ui" and the UI should build.
You can also load the UI in Qt Creator and build/test it that way.
-- Windows
Here be dragons.
+17
View File
@@ -0,0 +1,17 @@
ZeroTier One, an endpoint server for the ZeroTier virtual network layer.
Copyright © 2011–2016 ZeroTier, Inc.
ZeroTier One is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 3 of the License, or (at
your option) any later version.
See the file ‘LICENSE.GPL-3’ for the text of the GNU GPL version 3.
If that file is not present, see <http://www.gnu.org/licenses/>.
..
Local variables:
coding: utf-8
mode: text
End:
vim: fileencoding=utf-8 filetype=text :
+339
View File
@@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
+674
View File
File diff suppressed because it is too large. Load diff
-13
View File
@@ -1,13 +0,0 @@
ZeroTier One is licensed under the terms of the GNU General Public License
version 3, which are available here:
http://gplv3.fsf.org/
Modification and redistribution of ZeroTier One is permitted in source form.
Binary distribution is permitted provided all copyright notices remain
intact and any modifications to the source code are also distributed.
ZeroTier One may not be embedded into any closed-source application (e.g. via
linking), nor may closed-source derivatives be created, without a separately
negotiated license from ZeroTier Networks LLC. See the terms of the GPLv3 for
details.
+7
View File
@@ -9,3 +9,10 @@ endif
ifeq ($(OSTYPE),Linux)
include make-linux.mk
endif
ifeq ($(OSTYPE),FreeBSD)
include make-freebsd.mk
endif
ifeq ($(OSTYPE),OpenBSD)
include make-freebsd.mk
endif
+63
View File
@@ -0,0 +1,63 @@
ZeroTier Official Release Steps
======
This is mostly for ZeroTier internal use, but others who want to do builds might find it helpful.
Note: Many of these steps will require GPG and other signing keys that are kept in cold storage and must be mounted.
# Bumping the Version and Preparing Installers
The version must be incremented in all of the following files:
/version.h
/zerotier-one.spec
/debian/changelog
/ext/installfiles/mac/ZeroTier One.pkgproj
/ext/installfiles/windows/chocolatey/zerotier-one.nuspec
/ext/installfiles/windows/ZeroTier One.aip
The final .AIP file can only be edited on Windows with [Advanced Installer Enterprise](http://www.advancedinstaller.com/). In addition to incrementing the version be sure that a new product code is generated. (The "upgrade code" GUID on the other hand must never change.)
# Building for Supported Platforms
## Macintosh
Mac's easy. Just type:
make official
You will need [Packages](http://s.sudre.free.fr/Software/Packages/about.html) and our release signing key in the keychain.
## Linux
Mount the GPG key for *contact@zerotier.com* and then on an x86_64 box with a recent version of Docker and an Internet connection run:
make distclean
cd linux-build-farm
./build.sh
This will build i386 and x86_64 packages. Now ssh into our build Raspberry Pi and type `make debian` there to build the Raspbian armhf package. Copy it to `debian-jessie/` inside `linux-build-farm` so that it will be included in the repositories we generate. Now generate the YUM and APT repos:
rm -rf ~/.aptly*
rm -rf /tmp/zt-rpm-repo
./make-apt-repos.sh
./make-rpm-repos.sh
This will require the passphrase for *contact@zerotier.com*.
The contents of ~/.aptly/public must be published as `debian/` on `download.zerotier.com`. The contents of /tmp/zt-rpm-repo are published as `redhat/` on same.
## Windows
First load the Visual Studio solution and rebuild the UI and ZeroTier One in both x64 and i386 `Release` mode. Then load [Advanced Installer Enterprise](http://www.advancedinstaller.com/), check that the version is correct, and build. The build will fail if any build artifacts are missing, and Windows must have our product singing key (from DigiCert) available to sign the resulting MSI file. The MSI must then be tested on at least a few different CLEAN Windows VMs to ensure that the installer is valid and properly signed.
*After the MSI is published to download.zerotier.com in the proper RELEASE/#.#.#/dist subfolder for its version* the Chocolatey package must be rebuilt and published. Open a command prompt, change to `ext/installfiles/windows/chocolatey`, and type `choco pack`. Then use `choco push` to push it to Chocolatey (API key required).
choco pack
choco push zerotier-one.#.#.#.nupkg -s https://chocolatey.org/
Note that this does not cover rebuilding the drivers or their containing MSI projects, as this is typically not necessary and they are shipped in binary form in the repository for convenience.
## iOS, Android
... no docs here yet since this is done entirely out of band with regular installs.
+92 -9
View File
@@ -1,18 +1,101 @@
ZeroTier One
ZeroTier - A Planetary Ethernet Switch
======
ZeroTier One creates flat virtual Ethernet networks of almost unlimited size. [Visit ZeroTier Networks on the web](https://www.zerotier.com/) for more information.
ZeroTier is a software-based managed Ethernet switch for planet Earth.
This project is now in beta, which means that major incompatible protocol shifts should now become considerably more rare. You should still update very often if you plan to use it. Binary packages with auto-update are coming very soon.
It erases the LAN/WAN distinction and makes VPNs, tunnels, proxies, and other kludges arising from the inflexible nature of physical networks obsolete. Everything is encrypted end-to-end and traffic takes the most direct (peer to peer) path available.
Follow the [ZeroTier blog](http://blog.zerotier.com/) and the [GitHub project](https://github.com/zerotier/ZeroTierOne) to stay up to date.
This repository contains ZeroTier One, a service that provides ZeroTier network connectivity to devices running Windows, Mac, Linux, iOS, Android, and FreeBSD and makes joining virtual networks as easy as joining IRC or Slack channels. It also contains the OS-independent core ZeroTier protocol implementation in [node/](node/).
See BUILDING.txt and RUNNING.txt for instructions. It currently runs on Mac and Linux. A Windows port is well along the way to completion. If you're brave you can load the Visual Studio 2012 solution and play around.
Visit [ZeroTier's site](https://www.zerotier.com/) for more information and [pre-built binary packages](https://www.zerotier.com/download.shtml). Apps for Android and iOS are available for free in the Google Play and Apple app stores.
Once you have it running you can join the Earth network -- a LAN for the planet -- by using the 'zerotier-cli' tool: 'sudo zerotier-cli join 8056c2e21c000001'. Right now Earth is the only network. Ability to create private networks, as well as some additional special-purpose public ones, will be coming soon. (Note: previous alpha versions auto-joined Earth, but since 0.5.0 it no longer does this.)
### Getting Started
Note that this won't work if your firewall does not allow outbound UDP. It must allow two way UDP conversations on port 9993 at a minimum.
ZeroTier's basic operation is easy to understand. Devices have 10-digit *ZeroTier addresses* like `89e92ceee5` and networks have 16-digit network IDs like `8056c2e21c000001`. All it takes for a device to join a network is its 16-digit ID, and all it takes for a network to authorize a device is its 10-digit address. Everything else is automatic.
ZeroTier One is licensed under the GNU General Public License version 3. You are free to use, modify, or redistribute it under the terms of that license. If you would like to embed ZeroTier One in a closed source product or create a closed source derivative product, contact ZeroTier Networks LLC.
A "device" can be anything really: desktops, laptops, phones, servers, VMs/VPSes, containers, and even (soon) apps.
(c)2012-2013 [ZeroTier Networks LLC](https://www.zerotier.com/)
For testing we provide a public virtual network called *Earth* with network ID `8056c2e21c000001`. On Linux and Mac you can do this with:
sudo zerotier-cli join 8056c2e21c000001
Now wait about 30 seconds and check your system with `ip addr list` or `ifconfig`. You'll see a new interface whose name starts with *zt* and it should quickly get an IPv4 and an IPv6 address. Once you see it get an IP, try pinging `earth.zerotier.net` at `29.209.112.93`. If you've joined Earth from more than one system, try pinging your other machine.
*(IPv4 addresses for Earth are assigned from the block 28.0.0.0/7, which is not a part of the public Internet but is non-standard for private networks. It's used to avoid IP conflicts during testing. Your networks can run any IP addressing scheme you want.)*
If you don't want to belong to a giant Ethernet party line anymore, just type:
sudo zerotier-cli leave 8056c2e21c000001
The *zt* interface will disappear. You're no longer on the network.
To create networks of your own you'll need a network controller. You can use [our hosted controller at my.zerotier.com](https://my.zerotier.com) which is free for up to 100 devices on an unlimited number of networks, or you can build your own controller and run it through its local JSON API. See [README.md in controller/](controller/) for more information.
### Building from Source
For Mac, Linux, and BSD, just type "make" (or "gmake" on BSD). You won't need much installed; here are the requirements for various platforms:
* **Mac**: Xcode command line tools. It should build on OSX 10.7 or newer.
* **Linux**: gcc/g++ (4.9 or newer recommended) or clang/clang++ (3.4 or newer recommended) Makefile will use clang by default if available. The Linux build will auto-detect the presence of development headers for *json-parser*, *http-parser*, *li8bnatpmp*, and *libminiupnpc* and will link against the system libraries for these if they are present and recent enough. Otherwise the bundled versions in [ext/](ext/) will be used. Type `make install` to install the binaries and other files on the system, though this will not create init.d or systemd links.
* **FreeBSD**: C++ compiler (G++ usually) and GNU make (gmake).
Each supported platform has its own *make-XXX.mk* file that contains the actual make rules for the platform. The right .mk file is included by the main Makefile based on the GNU make *OSTYPE* variable. Take a look at the .mk file for your platform for other targets, debug build rules, etc.
Typing `make selftest` will build a *zerotier-selftest* binary which unit tests various internals and reports on a few aspects of the build environment. It's a good idea to try this on novel platforms or architectures.
Windows, of course, is special. We build for Windows with Microsoft Visual Studio 2012 on Windows 7. A solution file is located in the *windows/* subfolder. Newer versions of Visual Studio (and Windows) may work but haven't been tested. Older versions almost certainly will not, since they lack things like *stdint.h* and certain STL features. MinGW or other ports of gcc/clang to Windows should also work but haven't been tested.
32 and 64 bit X86 and ARM (e.g. Raspberry Pi, Android) are officially supported. Community members have built for MIPS and Sparc without issues.
### Running
Running *zerotier-one* with -h will show help.
On Linux and BSD you can start the service with:
sudo ./zerotier-one -d
A home folder for your system will automatically be created.
The service is controlled via the JSON API, which by default is available at 127.0.0.1 port 9993. We include a *zerotier-cli* command line utility to make API calls for standard things like joining and leaving networks. The *authtoken.secret* file in the home folder contains the secret token for accessing this API. See README.md in [service/](service/) for API documentation.
Here's where home folders live (by default) on each OS:
* **Linux**: `/var/lib/zerotier-one`
* **FreeBSD**: `/var/db/zerotier-one`
* **Mac**: `/Library/Application Support/ZeroTier/One`
* **Windows**: `\ProgramData\ZeroTier\One` (That's for Windows 7. The base 'shared app data' folder might be different on different Windows versions.)
Running ZeroTier One on a Mac is the same, but OSX requires a kernel extension. We ship a signed binary build of the ZeroTier tap device driver, which can be installed on Mac with:
sudo make install-mac-tap
This will create the home folder for Mac, place *tap.kext* there, and set its modes correctly to enable ZeroTier One to manage it with *kextload* and *kextunload*.
### Troubleshooting
For most users, it just works.
If you are running a local system firewall, we recommend adding a rule permitting UDP port 9993 inbound and outbound. If you installed binaries for Windows this should be done automatically. Other platforms might require manual editing of local firewall rules depending on your configuration.
The Mac firewall can be found under "Security" in System Preferences. Linux has a variety of firewall configuration systems and tools. If you're using Ubuntu's *ufw*, you can do this:
sudo ufw allow 9993/udp
On CentOS check `/etc/sysconfig/iptables` for IPTables rules. For other distributions consult your distribution's documentation. You'll also have to check the UIs or documentation for commercial third party firewall applications like Little Snitch (Mac), McAfee Firewall Enterprise (Windows), etc. if you are running any of those. Some corporate environments might have centrally managed firewall software, so you might also have to contact IT.
ZeroTier One peers will automatically locate each other and communicate directly over a local wired LAN *if UDP port 9993 inbound is open*. If that port is filtered, they won't be able to see each others' LAN announcement packets. If you're experiencing poor performance between devices on the same physical network, check their firewall settings. Without LAN auto-location peers must attempt "loopback" NAT traversal, which sometimes fails and in any case requires that every packet traverse your external router twice.
Users behind certain types of firewalls and "symmetric" NAT devices may not able able to connect to external peers directly at all. ZeroTier has limited support for port prediction and will *attempt* to traverse symmetric NATs, but this doesn't always work. If P2P connectivity fails you'll be bouncing UDP packets off our relay servers resulting in slower performance. Some NAT router(s) have a configurable NAT mode, and setting this to "full cone" will eliminate this problem. If you do this you may also see a magical improvement for things like VoIP phones, Skype, BitTorrent, WebRTC, certain games, etc., since all of these use NAT traversal techniques similar to ours.
If you're interested, there's a [technical deep dive about NAT traversal on our blog](https://www.zerotier.com/blog/?p=226). A troubleshooting tool to help you diagnose NAT issues is planned for the future as are uPnP/IGD/NAT-PMP and IPv6 transport.
If a firewall between you and the Internet blocks ZeroTier's UDP traffic, you will fall back to last-resort TCP tunneling to rootservers over port 443 (https impersonation). This will work almost anywhere but is *very slow* compared to UDP or direct peer to peer connectivity.
### Contributing
Please make pull requests against the `dev` branch. The `master` branch is release, and `edge` is for unstable and work in progress changes and is not likely to work.
### License
The ZeroTier source code is open source and is licensed under the GNU GPL v3 (not LGPL). If you'd like to embed it in a closed-source commercial product or appliance, please e-mail [contact@zerotier.com](mailto:contact@zerotier.com) to discuss commercial licensing. Otherwise it can be used for free.
-78
View File
@@ -1,78 +0,0 @@
First build it -- see BUILDING.txt -- then...
-- MacOS --
By convention, ZeroTier One will keep its state here on mac:
/Library/Application Support/ZeroTier/One
ZeroTier ships with a kernel extension for its own tap device, which it
stores in the above directory. To install this, type:
sudo make -f Makefile.mac install-mac-tap
This will create the ZeroTier One home above if it does not exist and install
the kext there. Note that the kext must be owned by root:wheel. The make
rule for install-mac-tap takes care of that.
Next, simply run the binary. It must be run as root to open the tap device.
If run with no options, it will use the default home directory above.
sudo ./zerotier-one &
Finally, join the Earth network (the big public LAN and the only net for now):
sudo zerotier-cli join 8056c2e21c000001
Try pinging earth.zerotier.net and going to http://earth.zerotier.net/ in a
browser to see if you're online.
-- Linux
On Linux, the default ZeroTier home is:
/var/lib/zerotier-one
Just type:
sudo mkdir /var/lib/zerotier-one
sudo ./zerotier-one &
When run with no options, ZT1 uses its default home path on the current
platform. Note that ZT1 requires the Linux tap driver, so it must be
available in the kernel or as a module. In most Linux distributions it's
included out of the box and should just work.
Finally, join the Earth network (the big public LAN and the only net for now):
sudo zerotier-cli join bc8f9a8ee3000001
Try pinging earth.zerotier.net and going to http://earth.zerotier.net/ in a
browser to see if you're online.
-- Windows
Port in progress, and it's going to pretty much always be more painful to
build than *nix systems. Just wait for the binary release unless you're
brave, in which case you can load the VS2012 solution and play around.
-- Open UDP port 9993
As noted in README.md, to actually function properly, you need to open
UDP port 9993 in your firewall. Following are instructions to open UDP port
9993 for specific operating systems.
--- Ubuntu (version 12.04 and possibly other versions, too)
Follow the Ubuntu documentation about UFW https://help.ubuntu.com/community/UFW
Check if your UFW is active.
sudo ufw status verbose
If it is active, open UDP port 9993
sudo ufw allow 9993/udp
You should now be able to ping and browse earth.zerotier.net
-20
View File
@@ -1,20 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist SYSTEM "file://localhost/System/Library/DTDs/PropertyList.dtd">
<plist version="0.9">
<dict>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>CFBundleIconFile</key>
<string>zt1icon.icns</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleGetInfoString</key>
<string>ZeroTier One (Mac GUI)</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleExecutable</key>
<string>ZeroTier One</string>
<key>CFBundleIdentifier</key>
<string>com.zerotier.ZeroTierOne</string>
</dict>
</plist>
-101
View File
@@ -1,101 +0,0 @@
QT += core gui widgets network
TARGET = "ZeroTier One"
TEMPLATE = app
win32:RC_FILE = ZeroTierUI.rc
mac:ICON = zt1icon.icns
mac:QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.6
mac:QMAKE_INFO_PLIST = Info.plist
SOURCES += main.cpp\
mainwindow.cpp \
aboutwindow.cpp \
../node/C25519.cpp \
../node/CertificateOfMembership.cpp \
../node/Defaults.cpp \
../node/Demarc.cpp \
../node/EthernetTap.cpp \
../node/HttpClient.cpp \
../node/Identity.cpp \
../node/InetAddress.cpp \
../node/Logger.cpp \
../node/Multicaster.cpp \
../node/Network.cpp \
../node/NetworkConfig.cpp \
../node/Node.cpp \
../node/NodeConfig.cpp \
../node/Packet.cpp \
../node/PacketDecoder.cpp \
../node/Peer.cpp \
../node/Poly1305.cpp \
../node/Salsa20.cpp \
../node/Service.cpp \
../node/SHA512.cpp \
../node/SoftwareUpdater.cpp \
../node/Switch.cpp \
../node/SysEnv.cpp \
../node/Topology.cpp \
../node/UdpSocket.cpp \
../node/Utils.cpp \
../ext/lz4/lz4.c \
../ext/lz4/lz4hc.c \
networkwidget.cpp \
installdialog.cpp
HEADERS += mainwindow.h \
aboutwindow.h \
../node/Node.hpp \
../node/Utils.hpp \
../node/Defaults.hpp \
../node/Address.hpp \
../node/Array.hpp \
../node/AtomicCounter.hpp \
../node/BandwidthAccount.hpp \
../node/Buffer.hpp \
../node/C25519.hpp \
../node/CertificateOfMembership.hpp \
../node/CMWC4096.hpp \
../node/Condition.hpp \
../node/Constants.hpp \
../node/Demarc.hpp \
../node/Dictionary.hpp \
../node/EthernetTap.hpp \
../node/HttpClient.hpp \
../node/Identity.hpp \
../node/InetAddress.hpp \
../node/Logger.hpp \
../node/MAC.hpp \
../node/Multicaster.hpp \
../node/MulticastGroup.hpp \
../node/Mutex.hpp \
../node/Network.hpp \
../node/NetworkConfig.hpp \
../node/NodeConfig.hpp \
../node/NonCopyable.hpp \
../node/Packet.hpp \
../node/PacketDecoder.hpp \
../node/Peer.hpp \
../node/Poly1305.hpp \
../node/RuntimeEnvironment.hpp \
../node/Salsa20.hpp \
../node/Service.hpp \
../node/SHA512.hpp \
../node/SharedPtr.hpp \
../node/SoftwareUpdater.hpp \
../node/Switch.hpp \
../node/SysEnv.hpp \
../node/Thread.hpp \
../node/Topology.hpp \
../node/UdpSocket.hpp \
../ext/lz4/lz4.h \
../ext/lz4/lz4hc.h \
networkwidget.h \
installdialog.h
FORMS += mainwindow.ui \
aboutwindow.ui \
networkwidget.ui \
installdialog.ui
RESOURCES += \
resources.qrc
-1
View File
@@ -1 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "zt1icon.ico"
-254
View File
@@ -1,254 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>AboutWindow</class>
<widget class="QDialog" name="AboutWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>508</width>
<height>261</height>
</rect>
</property>
<property name="windowTitle">
<string>About ZeroTier One</string>
</property>
<property name="windowIcon">
<iconset resource="resources.qrc">
<normaloff>:/img/zt1icon.png</normaloff>:/img/zt1icon.png</iconset>
</property>
<property name="sizeGripEnabled">
<bool>true</bool>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="leftMargin">
<number>6</number>
</property>
<property name="topMargin">
<number>6</number>
</property>
<property name="rightMargin">
<number>6</number>
</property>
<property name="bottomMargin">
<number>6</number>
</property>
<item>
<widget class="QWidget" name="widget" native="true">
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QLabel" name="iconLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>128</width>
<height>128</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="pixmap">
<pixmap resource="resources.qrc">:/img/zt1icon.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_2">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="aboutTextLabel">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="font">
<font>
<weight>50</weight>
<bold>false</bold>
</font>
</property>
<property name="textFormat">
<enum>Qt::PlainText</enum>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<property name="textInteractionFlags">
<set>Qt::NoTextInteraction</set>
</property>
</widget>
</item>
<item>
<widget class="QWidget" name="widget_2" native="true">
<layout class="QHBoxLayout" name="horizontalLayout_2">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="standardButtons">
<set>QDialogButtonBox::Ok</set>
</property>
<property name="centerButtons">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
<resources>
<include location="resources.qrc"/>
</resources>
<connections>
<connection>
<sender>buttonBox</sender>
<signal>accepted()</signal>
<receiver>AboutWindow</receiver>
<slot>accept()</slot>
<hints>
<hint type="sourcelabel">
<x>248</x>
<y>254</y>
</hint>
<hint type="destinationlabel">
<x>157</x>
<y>274</y>
</hint>
</hints>
</connection>
<connection>
<sender>buttonBox</sender>
<signal>rejected()</signal>
<receiver>AboutWindow</receiver>
<slot>reject()</slot>
<hints>
<hint type="sourcelabel">
<x>316</x>
<y>260</y>
</hint>
<hint type="destinationlabel">
<x>286</x>
<y>274</y>
</hint>
</hints>
</connection>
</connections>
</ui>
@@ -1,52 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleExecutable</key>
<string>applet</string>
<key>CFBundleIconFile</key>
<string>applet</string>
<key>CFBundleIdentifier</key>
<string>com.zerotier.one.ZeroTierOneMacAuthenticateScript</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>ZeroTier One (Authenticate)</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>aplt</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
<string>10.6</string>
</dict>
<key>LSRequiresCarbon</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>(c) 2013-2014 ZeroTier Networks LLC</string>
<key>WindowState</key>
<dict>
<key>dividerCollapsed</key>
<false/>
<key>eventLogLevel</key>
<integer>-1</integer>
<key>name</key>
<string>ScriptWindowState</string>
<key>positionOfDivider</key>
<real>333</real>
<key>savedFrame</key>
<string>239 124 602 597 0 0 1280 778 </string>
<key>selectedTabView</key>
<string>event log</string>
</dict>
</dict>
</plist>
@@ -1 +0,0 @@
APPLaplt
Loaded 20 of 662 files, more files were not shown because too many files have changed in this diff. Show more