Commit Graph

915 Commits

Author SHA1 Message Date
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
4708231046 Fix for GitHub issue #122 and other fixes 2014-09-18 10:01:30 -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
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
13aba7640b refactoring for SDK 2014-09-15 09:43:57 -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
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
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
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
00b16f6aa6 Fix for GitHub issue #110 -- failure to bind IPv6 now non-fatal 2014-08-27 20:09:56 -04:00
Adam Ierymenko
eadff71d37 Another fix to Network life cycle. 2014-08-21 18:07:27 -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
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
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
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
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
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
adfb71fa6b Compile for for TRACE, remove old TESTNET cruft. 2014-08-07 08:49:43 -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
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
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
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
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
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
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
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
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
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
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
994565bdeb Fix for GitHub issue #71 2014-05-29 15:06:05 -07: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
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
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
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
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
1e6475fad6 Clean out unused netconf fields, rename a few, work on new netconf server. 2014-05-08 00:11:50 +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
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
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
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
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
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
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
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
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
60f25ccdf9 Some text changes, remove unused modules from installer project. 2014-03-07 14:25:24 -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
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
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
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
268ec8d1e0 Fix for GitHub issue #40: updates.d not being cleared. 2014-02-24 13:23:03 -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
b5c3a92be2 Boring stuff: update dates in copyrights across all files. 2014-02-16 12:40:22 -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
01d13c153d Fix compiler warnings in Linux build. 2014-02-14 13:08:54 -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
d24b192f8c Remove old updates from updates.d on Node startup. 2014-02-07 09:13:08 -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
d452ed7db8 Fix inverted sense bug in new skip-stale-relay logic. 2014-02-03 21:15:29 -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
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
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
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
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
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
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
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
6bc5a84a2d Windows build fixes and installer work... 2014-01-20 16:16:01 -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
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
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
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
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
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
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
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
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
Adam Ierymenko
cc2a1444ae TRACE output improvements and compile fix. 2013-12-31 11:18:40 -08:00
Adam Ierymenko
10df5dcf70 Fix several things:
(1) The changes to path learning in the two previous releases were poorly thought out,
and this version should remedy that by introducing PROBE. This is basically a kind of
ECHO request and is used to authenticate endpoints that are not learned via a valid
request/response pair. Thus we will still passively learn endpoints, but securely.

(2) Turns out there was a security oversight in _doHELLO() that could have permitted...
well... I'm not sure it was exploitable to do anything particularly interesting since
a bad identity would be discarded anyway, but fix it just the same.
2013-12-31 11:03:45 -08:00
Adam Ierymenko
8055635e85 VERSION 0.6.5: minor bug fix in peer connection tracking 2013-12-31 01:22:32 -08:00
Adam Ierymenko
83fc684b20 Add a netconf-service version field to netconf. 2013-12-30 16:31:59 -08:00
Adam Ierymenko
f9d31605b8 Ethernet tap cleanup. 2013-12-29 11:10:23 -08:00
Adam Ierymenko
a6dc4caecf Unload the mac kext on exit. 2013-12-27 21:56:02 -08:00
Adam Ierymenko
df84bcf3bf Some logging improvements in software updater. 2013-12-27 07:13:49 -08:00
Adam Ierymenko
c8166b2db1 Bump version to 0.6.4 for testing, integrate software updater auto-check into PacketDecoder decode path and main loop. 2013-12-26 20:57:17 -08:00
Adam Ierymenko
92969b4426 Fix for GitHub issue #20 (untested) 2013-12-24 10:39:29 -08:00
Adam Ierymenko
026442f28f docs 2013-12-22 10:56:03 -08:00
Adam Ierymenko
9ffda4f955 Update Qt build to enable building against local static libraries, rename Network to NetworkWidget to avoid filesystem or object naming collision with Network.o in node/. 2013-12-12 15:47:00 -08:00
Adam Ierymenko
f7e3c10eca Cleanup in Utils, fix for HttpClient on Linux. 2013-12-12 11:33:41 -08:00
Adam Ierymenko
ec4ffc0c2c Software update fetcher seems to work, going back to updater/installer itself. 2013-12-11 13:14:10 -08:00
Adam Ierymenko
a22a3ed7e8 Software update work... 2013-12-11 13:00:18 -08:00
Adam Ierymenko
d3bcc58074 Fix update URL stuff, fix main build, add update dummy for testing updates on OSX and Linux and such. 2013-12-10 16:13:07 -08:00
Adam Ierymenko
bf0da9f2f7 Rest of software updater, ready to test... 2013-12-10 15:30:53 -08:00
Adam Ierymenko
612c17240a Dead code removal, fix for cleanup GitHub issue #28 2013-12-06 16:49:20 -08:00
Adam Ierymenko
518410b7e0 HTTP client works! 2013-12-06 16:00:12 -08:00
Adam Ierymenko
0a0ed893c3 HTTP client work... 2013-12-06 13:15:30 -08:00
Adam Ierymenko
f5d397e8c8 Pull in-band file transfer stuff. Toyed around with that idea, but it seems that updates for some platforms are big enough and there are enough reliability concerns that just using TCP/HTTP is safer and easier. 2013-12-04 10:45:15 -08:00
Adam Ierymenko
b699bdefbd Add shutdownIfUnreadable file feature: shut down if shutdownIfUnreadable in home folder is in fact existent but unreadable (e.g. broken link). This enables nifty shutdown on .app trashing feature for OSX. 2013-11-21 16:34:27 -05:00
Adam Ierymenko
4296db2358 Add configuration age to listnetworks results and GUI. 2013-11-21 15:11:22 -05:00
Adam Ierymenko
c979a695c5 UI work, add name to listnetworks output in control bus interface. 2013-11-20 16:16:30 -05:00
Adam Ierymenko
902c8c38d2 UI basically works, almost ready for testing and packaging... 2013-11-20 14:10:33 -05:00
Adam Ierymenko
34302edcc5 Installer build script for *nix systems. 2013-11-08 11:42:11 -05:00
Adam Ierymenko
bbe5a6f5d1 Add signupdate command to idtool. 2013-11-06 11:39:07 -05:00
Adam Ierymenko
9455b1cc81 Comments, change .nfo to .sig for uploads, clean some unused code from Utils. 2013-11-06 10:38:19 -05:00
Adam Ierymenko
9fdec3acfc More updater work... coming along. 2013-11-05 17:08:29 -05:00
Adam Ierymenko
6c63bfce69 File transfer work, add identities for validation of updates. 2013-11-04 17:31:00 -05:00
Adam Ierymenko
ac4e657aaa Updater work in progress... 2013-11-01 20:39:31 -04:00
Adam Ierymenko
ae138566a9 Updater code, work in progress... 2013-11-01 12:38:38 -04:00
Adam Ierymenko
e4044eeb70 Finish stubbing out FILE_ stuff. 2013-10-28 17:25:12 -04:00
Adam Ierymenko
d5fdfaea56 Fix signed/unsigned compare warning. 2013-10-28 16:54:35 -04:00
Adam Ierymenko
5750cf6b72 New cthulhu.zerotier.com supernode IP address. 2013-10-28 16:24:55 -04:00
Adam Ierymenko
7015017686 Make Makefile for Mac use clang options instead of old GCC options, and fix a nasty but obvious bug I introduced into Utils::getSecureRandom. 2013-10-28 15:53:40 -04:00
Adam Ierymenko
60ac1b77c5 Fix for GitHub issue #25 2013-10-28 13:22:23 -04:00
Adam Ierymenko
17778a36ba Clean up secure random, add packet definitions for update distribution facility. 2013-10-27 07:26:50 -04:00
Adam Ierymenko
942cc0ca21 Certificate of membership works now... had to fix multicast propagation so COM is pushed with multicast, which makes tremendous sense in retrospect. 2013-10-25 14:51:55 -04:00
Adam Ierymenko
010616e3ae Add some more TRACE output for certs. 2013-10-25 13:43:04 -04:00
Adam Ierymenko
1505e8dd50 Fix netconf init and identity transfer. 2013-10-25 13:04:58 -04:00
Adam Ierymenko
5901972958 More tying up of certificate of membership stuff in the client. 2013-10-24 16:57:26 -04:00
Adam Ierymenko
bbcd76ecd0 Netconf updates -- actually issue COM, and log attempts to access networks in NetworkActivity using the new authenticated flag in the new DB schema. 2013-10-24 16:19:53 -04:00
Adam Ierymenko
3de76fcab1 Make network autoconf a little more frequent to tighten up expiration times. 2013-10-21 16:11:29 -04:00
Adam Ierymenko
719dd2870d Self-test for certificate of membership. 2013-10-21 15:47:33 -04:00
Adam Ierymenko
2f00ae4fd7 Version 0.6.1: minor bug fix, DBM removal
This version removes the peer DBM present in earlier releases. It is not necessary for
regular clients and has been a source of problems.

There is a long-term identity cache that can be enabled by making a directory called
"iddb.d" in the home folder and restarting ZT1. This is probably something only our
supernodes would need, since regular nodes can easily WHOIS peers they've forgotten
about.

On shutdown, the peer database is dumped to disk. It's then restored on startup.
Peers that have not been used in a while are cleaned out, so this keeps this data
set small.

A DBM may re-appear later if it's needed, but for now it was YAGNI.
2013-10-21 14:22:02 -04:00
Adam Ierymenko
5e71e07f59 Add persistent identity caching for use on supernodes. Activate by just making an iddb.d directory in the ZeroTier home folder. Also clean up some obsolete cruft from makefiles. 2013-10-21 14:12:00 -04:00
Adam Ierymenko
40e4f39181 Peers are now dumped on shutdown in a persistence cache and reloaded on startup, which is good enough for clients right now. Supernodes will get something else for long-term authoritative identity caching. 2013-10-21 11:15:47 -04:00
Adam Ierymenko
6e217dfcb0 Get rid of DBM, which technically is a case of YAGNI. Supernodes will need a way to save identities, but that can be a different feature. Regular clients do not really need a permanent cache (yet). When/if we do need one we can do it then. Until then it only caused problems. 2013-10-21 10:29:44 -04:00
Adam Ierymenko
70655cc3f7 Docs and auto-update of Earth network ID. 2013-10-20 16:00:41 -04:00
Adam Ierymenko
c89cdcc3fd Blech... moving on! 2013-10-20 15:54:32 -04:00
Adam Ierymenko
1ed8a22d19 And then it turns out to be too slow on a slower 32-bit machine... we do want to do tablets eventually. 2013-10-20 15:46:36 -04:00
Adam Ierymenko
bad043729f Yet another revision of this algo... yeesh... and update to supernode IDs. I think I am gonna go with this one. Seems memory-hard enough to me. I am probably procrastinating by obsessing over it. 2013-10-20 15:31:32 -04:00
Adam Ierymenko
3c5c3280ff Fix an endian-non-neutrality bug in new hashcash identity algo. 2013-10-20 11:04:58 -04:00
Adam Ierymenko
8c9b73f67b Make Salsa20 variable-round, allowing for Salsa20/12 to be used for Packet encrypt and decrypt. Profiling analysis found that Salsa20 encrypt was accounting for a nontrivial percentage of CPU time, so it makes sense to cut this load fundamentally. There are no published attacks against Salsa20/12, and DJB believes 20 rounds to be overkill. This should be more than enough for our needs. Obviously incorporating ASM Salsa20 is among the next steps for performance. 2013-10-18 17:39:48 -04:00
Adam Ierymenko
fbf6ab5d4d Bug fixes: inverted sense bug, printf format bug. 2013-10-18 16:27:07 -04:00
Adam Ierymenko
e13d4df9ab Forgot to set defaults if multicast parameters are unset. 2013-10-18 15:50:31 -04:00
Adam Ierymenko
fb7d9b1029 Oops we needed _r in there... 2013-10-18 15:00:55 -04:00
Adam Ierymenko
5ef758bbd4 Eliminate unused private field (compiler warning). 2013-10-18 14:27:37 -04:00
Adam Ierymenko
ca93b4a1ac Clean up some stuff, including a few spots where exceptions were not being handled correctly. 2013-10-18 14:16:53 -04:00
Adam Ierymenko
03b909603a Clean up the awful Network::Config mess and break that out into NetworkConfig. 2013-10-18 13:20:34 -04:00
Adam Ierymenko
5a8f213c23 Work in progress... 2013-10-18 12:01:48 -04:00
Adam Ierymenko
b10871cedc More work in netconf cleanup. 2013-10-18 11:01:41 -04:00
Adam Ierymenko
9f107dbd4e Work in progress on cleaning up netconf mess in node code... 2013-10-18 09:48:02 -04:00
Adam Ierymenko
e6eb65be00 Netconf support for ARP and NDP caching TTLs. 2013-10-17 16:49:31 -04:00
Adam Ierymenko
d0dbd869c9 Increase verbosity of multicast tracing and fix tap build problem / GitHub Issue #19 2013-10-17 15:20:43 -04:00
Adam Ierymenko
797bba04dd Get rid of not used and maybe never to be used Filter code. 2013-10-17 13:07:53 -04:00
Adam Ierymenko
ce14ba9004 Take the 0.6.0 opportunity to add flags to a few protocol verbs and do a bit more cleanup. Also fix it so certificates wont be accepted unless they are newer than existing ones. 2013-10-17 06:41:52 -04:00
Adam Ierymenko
7e7e28f5f7 Add support for pushing network config refresh hints from a MEMORY queue table. That ways it will be possible for network changes to take effect almost immediately across all active peers. 2013-10-17 05:37:01 -04:00
Adam Ierymenko
46f868bd4f Lots of cleanup, more work on certificates, some security fixes. 2013-10-16 17:47:26 -04:00
Adam Ierymenko
58fa6cab43 Auto-pushing of membership certs on: MULTICAST_FRAME,FRAME,MULTICAST_LIKE and on receipt of MULTICAST_LIKE. 2013-10-07 17:00:53 -04:00
Adam Ierymenko
4d594b24bc Automagically push netconf certs -- Network support. 2013-10-07 16:13:52 -04:00
Adam Ierymenko
b4ae1adfbf Break out certificate of membership into its own class. 2013-10-07 15:29:03 -04:00
Adam Ierymenko
dcbc9c8ddd Rename error code for no membership certificate. 2013-10-07 15:21:40 -04:00
Adam Ierymenko
430882327e Couple of small fixes, works again with new ID code. 2013-10-07 15:00:38 -04:00
Adam Ierymenko
2fa2796f2a Another tweak, hopefully final, to reduce variance on identity generation times. 2013-10-07 14:31:13 -04:00
Adam Ierymenko
343b7f44fc Old algo for ID derivation was not in fact memory-hard since Salsa20 is seekable, so take two. 2013-10-07 12:48:27 -04:00
Adam Ierymenko
0c8614b9c6 Add a second arg to idtool generate to make generating both secret and public easier, add new supernode identities after generating them, fix known good and bad IDs in selftest. 2013-10-07 09:36:20 -04:00
Adam Ierymenko
5fa7a92048 Allocate genmem[] since its too big for the stack on some systems. 2013-10-06 05:28:25 -04:00
Adam Ierymenko
bc715fbd51 Make new identity hashcash algo memory hard, and tweak generation time a bit. Current hashcash cost should be overkill for what we need but still tolerable to users. 2013-10-05 14:15:59 -04:00
Adam Ierymenko
4267e7da93 Remove a whole bunch of now-unnecessary cruft from Topology and PacketDecoder. 2013-10-05 10:19:12 -04:00
Adam Ierymenko
0e43e5e8f2 Rest of work on new hashcash based identity scheme. 2013-10-05 07:00:55 -04:00
Adam Ierymenko
b0187f4472 Hashcash-based identity, work in progress... committing to test speed on other boxes. 2013-10-05 06:00:47 -04:00
Adam Ierymenko
588a47be89 Some API improvements to C25519 in preparation for that thing I woke up thinking about at 4am. 2013-10-05 05:26:38 -04:00
Adam Ierymenko
ea4e1136dd Flesh out membership certificate with signature, better serialize/deserialize, and rename parameter to qualifier to make better conceptual sense. 2013-10-04 12:24:21 -04:00
Adam Ierymenko
bb4a96c630 Add more info to remote multicast trace (debug facility). 2013-10-03 14:53:15 -04:00
Adam Ierymenko
c7590634e8 Eliminate a lot of redundant WHOIS requests, clean up WHOIS clutter in TRACE, flesh out multicast tracing a bit. 2013-10-03 14:38:07 -04:00
Adam Ierymenko
58538500f2 Clean up some routine stuff like pings, and stop keeping links open forever even if there are no frames passing between them. 2013-10-02 16:12:10 -04:00
Adam Ierymenko
2cfa76fa8b Multicast propagation is now working from non-supernodes, and working quite well. Time for some more simulation before 0.5.0! 2013-10-02 13:50:42 -04:00
Adam Ierymenko
929ed5d8b8 Merge branch 'adamierymenko-dev' of /Users/api/Code/local-ZeroTierOne into adamierymenko-dev 2013-10-01 17:19:36 -04:00
Adam Ierymenko
4b6ec872c7 More multicast fixes. 2013-10-01 17:19:24 -04:00
Adam Ierymenko
676f391ccf Multicast debug changes. 2013-10-01 16:31:46 -04:00
Adam Ierymenko
3443b203e4 Each peer now tracks the last time it announced multicast LIKEs independently and does so frequently enough to prevent expires. Also add a multicast debug facility for use on the testnet. 2013-10-01 16:01:36 -04:00
Adam Ierymenko
1a76455986 Fix for multicast propagation to prevent buildup of frames ping-ponging between supernodes. 2013-09-30 17:10:34 -04:00
Adam Ierymenko
e72a1de0d5 Fix bug in next hop selection. 2013-09-30 16:31:22 -04:00
Adam Ierymenko
20832a0562 Send reset of OK(HELLO) in both places where it gets composed. 2013-09-30 14:55:10 -04:00
Adam Ierymenko
9db7939d38 Make new multicast depth and prefix bits parameters configurable. 2013-09-30 13:51:56 -04:00
Adam Ierymenko
4ecb9369b5 Fix for multicast propagation -- supernodes must always keep propagating. Also fix mac-tap build on new version of Xcode CL tools. Must use old llvm-g++ instead of clang for i686 -mkernel. 2013-09-30 11:05:35 -04:00
Adam Ierymenko
0dca9964bf Whew, it builds! 2013-09-27 16:03:13 -04:00
Adam Ierymenko
4e010da54b Work in progress... 2013-09-26 17:45:19 -04:00
Adam Ierymenko
24bad9f3d1 More work in progress in new multicast propagation... 2013-09-25 17:41:49 -04:00
Adam Ierymenko
f3128a18fe Work in progress... 2013-09-25 10:55:27 -04:00
Adam Ierymenko
5557a8192d Work in progress... 2013-09-24 17:35:05 -04:00
Adam Ierymenko
bddbf4d276 Work in progress... 2013-09-24 12:44:15 -04:00
Adam Ierymenko
62a6f7ca63 More work in progress on new Multicaster. This should be pretty much good to go, and performance should not be too O(crappy). 2013-09-22 13:35:40 -04:00
Adam Ierymenko
770fbaf4b2 New multicast algorithm work in progress... 2013-09-21 16:46:00 -04:00
Adam Ierymenko
64c9c2e06b New packet formats for MULTICAST_FRAME, and MULTICAST_GOT. Not implemented yet in decoder, so wont compile. Work in progress. 2013-09-20 13:36:14 -04:00
Adam Ierymenko
c26b64f24b Fix for netconf advertising of multicast propagation parameters, and defaults in Network.hpp. 2013-09-19 16:16:48 -04:00
Adam Ierymenko
795f41c331 Change Linux default build back to debug, and fix startup message. Oh, and new crypto just kinda works. Awesome. 2013-09-19 15:17:11 -04:00
Adam Ierymenko
d8d71df301 Build fix for network ID remap hack. 2013-09-19 14:40:46 -04:00
Adam Ierymenko
aac40562d3 Add temporary code to remap old Earth network ID to new one. 2013-09-19 14:36:37 -04:00
Adam Ierymenko
fb8d5204e3 Remove code to automatically join Earth -- network joins will now be user-initiated and manual. 2013-09-18 12:32:08 -04:00
Adam Ierymenko
5ccc91a7c3 Prescient endian-ness fix in deriveAddress. 2013-09-17 16:49:16 -04:00
Adam Ierymenko
157aba5c3f Get rid of 000000000000000.mcerts junk files. 2013-09-17 16:28:17 -04:00
Adam Ierymenko
f9079a110e Make network multicast breadth/depth parameters configurable on a per-net basis. 2013-09-17 16:11:57 -04:00
Adam Ierymenko
4c06fcfc9d More include formatting cleanup. 2013-09-17 15:53:59 -04:00
Adam Ierymenko
b2b24ca41b Some file format cleanup. 2013-09-17 15:46:56 -04:00
Adam Ierymenko
0133da1dcd Get rid of onSent(), which was never used consistently anyway. 2013-09-17 15:33:34 -04:00
Adam Ierymenko
300588c5e8 Add port and control port command line options to daemon and command line client, add new supernode keys to Defaults. 2013-09-17 14:47:48 -04:00
Adam Ierymenko
de5cc82b5b Build fix to eliminate strict aliasing warnings, and a bug fix. 2013-09-16 19:25:31 +00:00
Adam Ierymenko
77f8d75529 Fix idtool build, tweak address derivation again. 2013-09-16 15:06:17 -04:00
Adam Ierymenko
94bf3e9a0e More tweaks to address derivation, going to test on other boxen. 2013-09-16 14:54:17 -04:00
Adam Ierymenko
4f53d09c7e Build fix for 32-bit Linux and tweaks to address derivation algorithm. 2013-09-16 14:47:48 -04:00