Compare commits

..
1691 Commits
Author SHA1 Message Date
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
Adam Ierymenko 48745eca57 Fix ARM dpkg build. 2015-11-16 19:54:58 -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
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
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
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
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
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
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
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
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
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
Adam Ierymenko 4e9d430476 Make root and relay selection somewhat more robust. 2015-11-02 16:03:28 -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
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
Adam Ierymenko fd3916a49e More test stuff... make it more granular and less batch based. 2015-11-02 13:17:11 -08:00
Adam Ierymenko e53ef9642e test stuff. 2015-11-02 12:31:34 -08:00
Adam Ierymenko 29249db5d2 Big test stuff. 2015-11-02 11:37:32 -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
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
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
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
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
Adam Ierymenko 51fcc75354 Some cleanup, and use getPeerNoCache() exclusively in Cluster. 2015-10-27 17:36:47 -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
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
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
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
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
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
Adam Ierymenko 738fa5a5e5 . 2015-10-16 12:10:57 -07: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
Adam Ierymenko a775ee7d31 . 2015-10-14 16:21:39 -07:00
Adam Ierymenko 9ece8c465e decrypt fix 2015-10-14 15:49:41 -07: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
Adam Ierymenko c312ae221f Fix for world size in OK(HELLO) 2015-10-14 10:45:33 -07: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
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
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
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
Adam Ierymenko 70fe7dd1fd cleanup 2015-10-12 16:40:57 -07: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
Adam Ierymenko 97dee9de36 Add more helpful example stuff. 2015-10-09 12:50:52 -07: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
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
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
Adam Ierymenko 59da8b2a4b Logging of circuit test results to disk. 2015-10-08 15:44:06 -07: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
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 477feee8a3 Some work on CIRCUIT_TEST, and a significant speedup to Poly1305. 2015-10-06 17:55:57 -07: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
Adam Ierymenko a7bd1eaa40 Never assign v4 IPs ending in .255 even within range. 2015-09-28 15:28:30 -07:00
Adam Ierymenko 2d0adb562d Specify circuit test messages. 2015-09-27 11:37:39 -07: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
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
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
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
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
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
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
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 ef316ced3b Fix JSON. 2015-09-14 11:59:43 -07:00
Grant Limberg f7d3e262a9 ifdef default assignments 2015-09-11 17:16: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
Adam Ierymenko c1a53a2653 ARP cache and responder agent code for use in netcon and iOS. 2015-09-11 11:45:04 -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
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
Adam Ierymenko 1f7a41cff8 Fix to allowing identity to be populated if not present. 2015-09-10 14:37:34 -07:00
Adam Ierymenko 9a723be263 Add socketpair support to Phy. 2015-09-10 13:18:57 -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 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 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
Adam Ierymenko bacb8f56c3 VERSION 0.6.8: changes in preparation for binary release
This version contains no significant changes to the engine itself, just to
the installer, the GUI, and packaging and such. It's all stuff for prep for
the big release, which is fast approaching!
2014-01-10 21:46:36 -08:00
Adam Ierymenko d553555880 Add "you have not joined any networks" placeholder if networks list is empty. 2014-01-10 21:40:38 -08:00
Adam Ierymenko 9e508779c2 Installer AppleScript finally reinvokes the app correctly. 2014-01-10 21:26:50 -08:00
Adam Ierymenko 14d144ea22 UI stuff, re-launch app from AppleScript after install (still needs a bit of work) 2014-01-10 17:31:10 -08:00
Adam Ierymenko 305ed0b3c5 Cleanup in installer code in app. 2014-01-10 16:41:44 -08:00
Adam Ierymenko 9208c6b4e6 QMessageBox cleanup. 2014-01-10 16:05:54 -08:00
Adam Ierymenko def893fe40 Add GPL notice to UI code. 2014-01-10 15:27:44 -08:00
Adam Ierymenko 2a3c9e73e5 More mac installer fixes. 2014-01-10 14:09:08 -08:00
Adam Ierymenko 15854a1b14 Mac installer work... 2014-01-09 22:58:31 -08:00
Adam Ierymenko 12a0a9dedd Update cert IDs for official build. 2014-01-09 21:15:00 -08:00
Adam Ierymenko 5c90afa296 Work on mac launch script, sign binary mac tap driver kext (and there was much rejoicing!) 2014-01-09 11:00:36 -08:00
Adam Ierymenko 68ddba60a3 Another fix to mdfind line in Mac scripts. 2014-01-08 23:35:26 -08:00
Adam Ierymenko 3482d836ae Mac install fixes, more internal use scripts. 2014-01-08 23:12:03 -08:00
Adam Ierymenko 60731e6d02 Update URLs for auto-update, check supernode version in one more place, delete pid before executing updater. 2014-01-07 16:37:36 -08:00
Adam Ierymenko c1256fff5b Remove some legacy code from the core loop. 2014-01-07 15:06:02 -08:00
Adam Ierymenko ddb77b1454 Make rules for internal use. 2014-01-07 14:48:56 -08:00
Adam Ierymenko afec5b0f2e Official release maker... again only of academic interest to others. 2014-01-07 14:12:57 -08:00
Adam Ierymenko eb1598831a Include tap.kext in mac installer. 2014-01-07 13:35:20 -08:00
Adam Ierymenko ea73e736c8 Official release stuff... of only academic interest to open source third party users. 2014-01-07 13:06:34 -08:00
Adam Ierymenko f2976178c9 Installer bugfix on Linux. 2014-01-06 13:25:07 -05:00
Adam Ierymenko 76638aae76 Linux installer builds... 2014-01-06 13:11:32 -05:00
Adam Ierymenko 2edaf0588a Linux installer work... 2014-01-06 12:56:00 -05:00
Adam Ierymenko e525e3a571 Ready to test app-driven service install on Mac. 2014-01-05 20:59:41 -08:00
Adam Ierymenko a19c19c58c Refactor SoftwareUpdate to make .nfo parse and signature check code easily reusable so it can be used from the Qt GUI code. 2014-01-05 16:24:12 -08:00
Adam Ierymenko 67a71868cb Install dialog in UI. 2014-01-03 22:14:30 -08:00
Adam Ierymenko 029f64495c Linux buildinstaller fix. 2014-01-03 16:53:55 -08:00
Adam Ierymenko 63d6052159 Mac installer work. 2014-01-03 16:53:00 -08:00
Adam Ierymenko 50043f9cd6 Remove previous installer code. 2014-01-03 16:16:21 -08:00
Adam Ierymenko 59b1623477 More install/deploy work for mac... 2014-01-03 15:39:09 -08:00
Adam Ierymenko 22b52858e0 Fix -h in zerotier-cli and move code to find auth token into LocalClient, also move auth token for mac into Mac-standard Library/Application Support location. 2014-01-03 14:03:29 -08:00
Adam Ierymenko baea75f2df Installer app helper... 2014-01-03 12:15:47 -08:00
Adam Ierymenko 69c993357d Update mac launcher and uninstaller to use mdfind to locate app. 2014-01-03 10:26:40 -08:00
Adam Ierymenko fb685bcb1d New Unix installer is script-based with a payload... no fracking idea what I will do for Windows. 2014-01-03 09:00:59 -08:00
Adam Ierymenko 14e4e9e479 Phasing out existing installer, delete some stuff... 2014-01-01 17:02:28 -08:00
Adam Ierymenko b99940f8a1 Forget mac .pkg, we will integrate the installer into the app and have it launch it on first run. This is much more user-friendly. 2014-01-01 16:13:35 -08:00
Adam Ierymenko 3d76d6649f Add step to build in helpers to mac app and codesign. 2013-12-31 16:26:14 -08:00
Adam Ierymenko 7519d8ca2c Sign the AppleScript helper app that the UI calls to install the token file. 2013-12-31 16:20:28 -08:00
Adam Ierymenko 9f28eec95c VERSION 0.6.7: revert change for GitHub issue #20
This will have to be thought out more. The old version worked fine 99% of the
time so we'll revisit this.
2013-12-31 11:36:13 -08:00
592 changed files with 82894 additions and 24347 deletions

No files matched your search

+68 -28
View File
@@ -1,38 +1,78 @@
/ext/llvm-g++-Xcode4.6.2
/ext/llvm-g++-Xcode4.6.2.tar.bz2
# Main binaries created in *nix builds
/zerotier-*
/build-ZeroTierUI-*
/ZeroTierUI/*.user
*.o
# OS-created garbage files from various platforms
.DS_Store
.Apple*
*.dSYM
netconf-service/netconf-test
netconf-service/netconf.service
mac-tap/tuntap/src/tap/tap
mac-tap/tuntap/tap.kext
/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
# Miscellaneous temporaries, build files, etc.
*.log
*.opensdf
*.user
*.cache
*.obj
*.tlog
/installer-build
/zt1-*-install
/file2lz4c
.qmake.stash
*.pid
*.pkg
*.o
*.a
*.dylib
*.so
*.o-*
*.core
*.deb
*.rpm
*.autosave
*.tmp
node_modules
cluster-geo/cluster-geo/config.js
cluster-geo/cluster-geo/cache.*
tests/http/zerotier-one
tests/http/big-test-hosts
# MacGap wrapper build files
/ext/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/project.xcworkspace/xcuserdata/*
/ext/mac-ui-macgap1-wrapper/src/MacGap.xcodeproj/xcuserdata/*
/ext/mac-ui-macgap1-wrapper/src/build
# 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/
+44
View File
@@ -0,0 +1,44 @@
## Authors
* ZeroTier protocol design and core network virtualization engine, ZeroTier One service, React web UI, packaging for most platforms, kitchen sink...<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
## 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
* Several others made smaller contributions, which GitHub tracks here:<br>
https://github.com/zerotier/ZeroTierOne/graphs/contributors
## Third Party Code
* LZ4 compression algorithm by Yann Collet (BSD license)<br>
http://code.google.com/p/lz4/
* http-parser by many authors (MIT license)<br>
https://github.com/joyent/http-parser
* json-parser by James McLaughlin (BSD license)<br>
https://github.com/udp/json-parser
* TunTapOSX by Mattias Nissler (BSD license)<br>
http://tuntaposx.sourceforge.net
* tap-windows and tap-windows6 by the OpenVPN project (GPL)<br>
https://github.com/OpenVPN/tap-windows<br>
https://github.com/OpenVPN/tap-windows6
* Salsa20 stream cipher, Curve25519 elliptic curve cipher, Ed25519
digital signature algorithm, and Poly1305 MAC algorithm, all by
Daniel J. Bernstein (public domain)<br>
http://cr.yp.to/
* MiniUPNPC by Thomas Bernard [BSD]
http://miniupnp.free.fr
-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.
+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
+165 -8
View File
@@ -1,18 +1,175 @@
ZeroTier One
======
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 defined networking layer for 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 can be used for on-premise network virtualization, as a peer to peer VPN for mobile teams, for hybrid or multi-data-center cloud deployments, or just about anywhere else secure software defined virtual networking is useful.
Follow the [ZeroTier blog](http://blog.zerotier.com/) and the [GitHub project](https://github.com/zerotier/ZeroTierOne) to stay up to date.
ZeroTier One is our OS-level client service. It allows Mac, Linux, Windows, FreeBSD, and soon other types of clients to join ZeroTier virtual networks like conventional VPNs or VLANs. It can run on native systems, VMs, or containers (Docker, OpenVZ, etc.).
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. You can also download professionally packaged binary installers/packages for a variety of supported OSes there if you don't want to build ZeroTier One from source.
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.)
### Building from Source
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.
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:
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.
* Mac: Xcode command line tools, and [Packages](http://s.sudre.free.fr/Software/Packages/about.html) if you want to build an OSX .pkg installer ("make mac-dist-pkg"). It should build on OSX 10.7 or newer.
* Linux: gcc/g++ or clang/clang++ (Makefile will use clang by default if available.)
* FreeBSD (and other BSD): C++ compiler (G++ usually) and GNU make (gmake).
(c)2012-2013 [ZeroTier Networks LLC](https://www.zerotier.com/)
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.
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. Build steps for Windows are a bit more complicated. For the moment you are on your own there.
Mobile versions are in progress. They don't work yet, and in any case only the glue code will be included in this repository. The full mobile apps are in private repositories on our own git server.
### Supported Platforms
CPU architecture shouldn't matter unless it's smaller than 32-bit or something really bizarre like a "middle-endian" processor. We have reports of ZeroTier One running on arm32, arm64, and MIPS. It builds and runs out of the box on Raspberry Pi, BeagleBone, BananaPi, and other ARM-based developer/hobbyist boards.
ZeroTier is written in C and C++ (C++03 / ISO/IEC 14882:2003) and uses data structures and algorithms from the C++03 STL. We do not use any C++11 features (yet), since we want to support a few old and embedded platforms that don't have C++11 compilers. You *will* require a compiler and headers new enough to support 64-bit integers (long long) and the *stdint.h* header. The latter could also be faked by adding defines for things like *uint32\_t*, *int64\_t*, 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.
### 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
* BSD: /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*.
We recommend using our binary packages on Windows, since there are several prerequisites such as a tap driver that must be installed on the system *and* in the home folder.
### Joining A Network
ZeroTier virtual networks are identified by 16-digit hexadecimal network IDs, while devices are identified by 10-digit addresses. To get your address run:
sudo zerotier-cli status
(Use ./zerotier-cli if you're running it right from your build folder.)
You should see something like:
200 info ########## ONLINE #.#.#
That 10-digit hex code is you. It's derived via a one-way proof of work function from your cryptographic public key. Your public key can be found in *identity.public* in ZeroTier's home folder, while *identity.secret* contains your full identity including the secret portion of the key pair.
(The identity files define your device's *identity*. Moving them to another system will move that identity. Be careful when cloning virtual machines that have identities stored on them. If two devices have the same identity, they'll "fight" over it and you won't know which device will receive network packets.)
If you want to do a quick test, you can join [Earth](https://www.zerotier.com/earth.html). It's a global public network that anyone can join. Type:
sudo zerotier-cli join 8056c2e21c000001
Then:
sudo zerotier-cli listnetworks
At first it'll be in *REQUESTING\_CONFIGURATION* state. In a few seconds to a minute you should see something like:
200 listnetworks 8056c2e21c000001 earth.zerotier.net ##:##:##:##:##:## OK PUBLIC zt0 ##.##.##.##/##
Earth will assign you an IP address in the "unofficially available" globally unrouted 28.0.0.0/7 IP block so as to avoid conflicts with local networks. (Your networks can use any IP scheme, or can even leave IP addresses unmanaged.) Once you get an IP, you should be able to ping something:
ping earth.zerotier.net
Go to [http://earth.zerotier.net/](http://earth.zerotier.net/) to see a short little welcome page that will tell you your IP and Ethernet MAC address.
Earth is a public place. If you don't want to stick around run:
sudo zerotier-cli leave 8056c2e21c000001
The network (and associated interface) should be gone.
Networks are created and administrated by network controllers. Most users will want to use our hosted controllers. Visit [our web site](https://www.zerotier.com/) for more information. Later in this README there are brief instructions about building ZeroTier One with network controller support for those who want to try running their own.
Macintosh and Windows installers also install a GUI application.
### Installing
We don't have a "make install" rule quite yet. On Linux you can type:
make installer
This will build a binary that, when run, will install ZeroTier One on most current Linux distributions. We also have RPM and DEB build files in *ext/installfiles/linux* that wrap this installer in packages for RedHat/CentOS and Debian/Ubuntu derived distributions. If *rpmbuild* is present on the system, the RPM will be built. If *dpkg-deb* is present, the DEB package will be built.
On Mac the best way is to install [Packages](http://s.sudre.free.fr/Software/Packages/about.html) and use:
make mac-dist-pkg
This builds a .pkg file that can be installed.
In FreeBSD there is now an official .pkg in the FreeBSD repository. Type "pkg install zerotier". It can also be built and installed from source.
Linux/BSD and Mac installations have an *uninstall.sh* file in their ZeroTier home folder that cleanly removes ZeroTier One from the system. Run this with:
sudo /path/to/ZeroTier/home/folder/uninstall.sh
Windows installers are insane. We build our .MSI installers with [Advanced Installer Enterprise](http://www.advancedinstaller.com). The Advanced Installer project file is in *ext/installfiles/windows*. To avoid lasting psychological trauma we recommend leaving Windows installers alone and using the pre-built Windows binaries on our web site.
### Using ZeroTier One in Docker Containers
To run the ZeroTier One service in a Docker container, run it with "--device=/dev/net/tun --cap-add=NET_ADMIN". This will allow ZeroTier One to open a "tap" virtual network port inside the container.
Alternately, you can use Ethernet bridging to bridge the *docker0* device on your system to a ZeroTier virtual network. This allows you to run ZeroTier One on the host and bridge the entire Docker network backplane to a virtual network or other hosts.
We're working on better "official" Docker support. In the meantime there is a [user-contributed project here](https://github.com/davide/docker-zerotier).
### Building with Network Controller Support
**Warning: as of beta version 1.0.3 the new network controller is not heavily tested. We recommend waiting for 1.0.4 to deploy this in production.**
Network controllers are nodes responsible for issuing configurations and certificates to members of ZeroTier virtual networks. Most users won't need to run their own, so this code is by default not included in the ZeroTier One binary.
You can build a network controller on Linux or Mac with:
make ZT_ENABLE_NETWORK_CONTROLLER=1
This will build a version that contains the Sqlite-backed network controller and associated extensions to the JSON local service control API. You will need the development headers for sqlite3 installed. On Mac these ship as part of Xcode, while on Linux they'll be found in packages for the various distributions.
See the JSON API documentation in [service/](service/) for more information about how to control controllers.
### 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 founder 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
There are three main branches: **edge**, **test**, and **master**. Other branches may be for specific features, tests, or use cases. In general **edge** is "bleeding" and may or may not work, while **test** should be relatively stable and **master** is the latest tagged release. Pull requests should generally be done against **test** or **edge**, since pull requests against **master** may be working against a branch that is somewhat out of date.
### 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>
-98
View File
@@ -1,98 +0,0 @@
QT += core gui widgets
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
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
FORMS += mainwindow.ui \
aboutwindow.ui \
networkwidget.ui
RESOURCES += \
resources.qrc
-1
View File
@@ -1 +0,0 @@
IDI_ICON1 ICON DISCARDABLE "zt1icon.ico"
-17
View File
@@ -1,17 +0,0 @@
#include "aboutwindow.h"
#include "ui_aboutwindow.h"
#include <QMessageBox>
#include "../node/Defaults.hpp"
AboutWindow::AboutWindow(QWidget *parent) :
QDialog(parent),
ui(new Ui::AboutWindow)
{
ui->setupUi(this);
}
AboutWindow::~AboutWindow()
{
delete ui;
}
-22
View File
@@ -1,22 +0,0 @@
#ifndef AboutWindow_H
#define AboutWindow_H
#include <QDialog>
namespace Ui {
class AboutWindow;
}
class AboutWindow : public QDialog
{
Q_OBJECT
public:
explicit AboutWindow(QWidget *parent = 0);
virtual ~AboutWindow();
private:
Ui::AboutWindow *ui;
};
#endif // AboutWindow_H
-261
View File
@@ -1,261 +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="text">
<string>ZeroTier One GUI
(c)2012-2013 ZeroTier Networks LLC
Author(s): Adam Ierymenko
Version: 1.0</string>
</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,50 +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>LSMinimumSystemVersionByArchitecture</key>
<dict>
<key>x86_64</key>
<string>10.6</string>
</dict>
<key>LSRequiresCarbon</key>
<true/>
<key>NSHumanReadableCopyright</key>
<string>(c) 2013 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>7 181 602 597 0 0 1280 778 </string>
<key>selectedTabView</key>
<string>result</string>
</dict>
</dict>
</plist>
@@ -1 +0,0 @@
APPLaplt
Binary file not shown.

Before

Width:  |  Height:  |  Size: 362 B

@@ -1,4 +0,0 @@
{\rtf1\ansi\ansicpg1252\cocoartf1265
{\fonttbl}
{\colortbl;\red255\green255\blue255;}
}
Loaded 20 of 592 files, more files were not shown because too many files have changed in this diff. Show more