Commit Graph

6370 Commits

Author SHA1 Message Date
e0bdc02139 Docs, Node picks a default home folder if created with NULL as its home path, and add binary tap drivers (self-signed for now). 2013-08-24 17:10:34 -04:00
6d7b1c1e5f Forked tap driver installs with test cert, assuming Windows is in test mode, and seems to work! 2013-08-24 14:10:34 -04:00
8637d06e0e It builds and it installs! Well, except for not being digitally signed. :P 2013-08-24 13:21:51 -04:00
df98e5a635 More tap work in progress. 2013-08-24 13:17:01 -04:00
62dd433756 Tap driver project config, inf file. 2013-08-24 12:11:42 -04:00
e2effbd1ce Tap driver basically builds in VS2012... fork of tap-windows from OpenVPN (compatible license). 2013-08-23 17:39:21 -04:00
b6248c7cb7 VERSION 0.4.4: multicast cleanup, Windows port work
In addition to a lot of Windows port work that isn't finished yet (and doesn't
affect the *nix platforms at all), this version contains quite a bit of multicast
cleanup and code simplification.

I also pulled rate limits for now, as it seems to be causing problems. More testing
on the testnet is going to be needed.
0.4.4
2013-08-23 10:54:45 -04:00
f6e7be102a Decided to abandon the winpcap direction for Windows tap... re-evaluating using OpenVPN tap driver in some form for now. 2013-08-23 09:50:51 -04:00
c8213a3f58 Commit of a draft of the pcap-based strategy for a Windows tap. This may, in the end, not work, since winpcap may not support immediate capture and also because some software flags winpcap as malware. Like I said, trying to do anything interesting with Windows is PAIN. 2013-08-22 22:33:32 -04:00
d19516b40a Add winpcap development libraries and includes. 2013-08-22 16:42:17 -04:00
ca5334509c Tap now creates Microsoft Loopback Adapter instances and tags them with a special ID... work in progress. 2013-08-22 14:30:55 -04:00
a0a9d52213 Bug fix in multicast changes. 2013-08-21 14:51:32 -04:00
2efc9b31bd Huge convoluted logic de-tangling in multicast propagation, supernodes now do random propagation for more efficient coverage with less bias in sparse graph cases. 2013-08-21 11:45:06 -04:00
1d9977b8b9 A bit of code comment cleanup. 2013-08-21 10:19:34 -04:00
edad580c32 Some work on Windows tap. 2013-08-21 10:18:05 -04:00
2536352e5d Make that an arbitrary tag to identify persistent taps... 2013-08-21 08:13:48 -04:00
dbb509a302 Add an interface description to EthernetTap, mostly for Windows. 2013-08-19 17:44:46 -04:00
3daf73710a Add devcon 32-bit and 64-bit Windoze binaries. 2013-08-19 17:20:27 -04:00
d372cd1b17 Clean up... 2013-08-19 15:39:11 -04:00
ee7e826f0c On second thought... argh. 2013-08-16 16:37:01 -04:00
d7bd3e37cb Add a fork of tap-windows from OpenVPN, will be customized. 2013-08-15 15:52:52 -04:00
b23748aa5a Create devel project for Windows tap work. (Might be temporary.) 2013-08-15 15:51:03 -04:00
8584515a50 A few test build changes. 2013-08-14 13:30:27 -04:00
08fe84d707 Windows builds, self test runs in Debug mode! 2013-08-14 13:23:25 -04:00
150a53eb17 Self test almost builds, now need skeleton EthernetTap implementation for Windows. 2013-08-14 11:19:21 -04:00
1f9a7e26ba Move .vcxproj files to vsprojects\ subfolder and use Visual Studio's ability to add existing files to create per-tool solutions. Create self test solution to test basic functionality on Windows. 2013-08-14 10:29:20 -04:00
fc18334dbb Version 0.4.3 (the real one): fix Gentoo ip config failures and crashes
This version fixes problems with locating the 'ip' command on Gentoo
and possibly other Linux systems, and a problem that could cause a
crash if EthernetTap was unable to locate one of the commands it
invokes to configure IP information on tap devices.

The code also now builds on Windows. It doesn't run yet, but it's a
step. Windows port is in full swing.

Finally, the multicast rate limit defaults were raised a little. More
testing is needed here, and real world measurments.
0.4.3
2013-08-13 15:14:03 -04:00
4ce88d7f72 Version 0.4.3: fix Gentoo ip config failures and crashes
This version fixes problems with locating the 'ip' command on Gentoo
and possibly other Linux systems, and a problem that could cause a
crash if EthernetTap was unable to locate one of the commands it
invokes to configure IP information on tap devices.

The code also now builds on Windows. It doesn't run yet, but it's a
step. Windows port is in full swing.
2013-08-13 14:42:51 -04:00
ce1a03bde3 Fix a *nix build issue. 2013-08-12 21:27:07 -04:00
d6414c9ff7 Windows compiles! (w/Visual Studio 2012) That's about all it does, but it's a start. 2013-08-12 21:25:36 -04:00
5076c75b07 More Windows port work. 2013-08-12 16:57:34 -04:00
36af3d92ec Windows build work: condition, mutex, thread, udp socket... 2013-08-12 16:18:35 -04:00
2ad80063ec A few more visual studio file changes, forgot to save all. Will be switching to dev branch now. 2013-08-12 14:47:02 -04:00
2fbe1e200b Add Visual Studio DLL project for core 2013-08-12 14:44:02 -04:00
53996050a2 0.4.2: cleanup release
Version 0.4.2 is largely a cleanup release. Changes are minor:

 * Programatically replace libcrypto's random number generator with our
   own (using /dev/urandom or Windows CAPI) since libcrypto's RNG likes
   to use uninitialized memory as one of its entropy sources. This causes
   massive floods of valgrind (debugger) errors during memory error
   profiling analysis.

 * Clean up some other code to eliminate valgrind errors.

Valgrind now runs on Linux with only one error. This error is in
EthernetTap and is a false positive.
0.4.2
2013-08-12 13:17:41 -04:00
f5d77a1bc2 Clean up a bunch of valgrind errors, nix a potentially unsafe op in Buffer assignment operator. 2013-08-12 13:17:03 -04:00
93a7eef2a5 Replace libcrypto RAND_ with our own to avoid valgrind errors. 2013-08-10 10:27:53 -04:00
67acba4bc9 Stop using RAND_ in libcrypto for Utils::getSecureRandom() due to annoying valgrind spew from libcrypto use of uninitialized RAM as a random source. Might look into replacing RAND_ in libcrypto with our own simple /dev/urandom / Windows CAPI plugin. 2013-08-10 10:12:16 -04:00
9979474f1e Add range safety check to EllipticCurveKey. 2013-08-09 20:45:15 -04:00
6c53891b44 Version 0.4.1 - RateLimiter for multicast, bug fixes.
This version adds a draft of the multicast rate limiting architecture. A
few minor bugs are also fixed. The Linux version builds in debug mode for
now.
0.4.1
2013-08-09 17:21:35 -04:00
95a23dc7ec Fix for another wonderful C++ threading race condition. 2013-08-09 17:20:40 -04:00
7c3a446499 Tweak default multicast rate limits. 2013-08-09 17:02:06 -04:00
6a24ac4f00 Add a concept of debt to RateLimiter, save a bit of RAM. 2013-08-09 16:36:58 -04:00
3af55f4423 Add RateLimiter for rate limiting multicast, not tested yet. 2013-08-08 17:20:35 -04:00
95c0790a88 Back off a little on multicast propagation depth. Eventually this will be a network parameter. 2013-08-08 12:55:01 -04:00
5cabb60a6f Actually report a meaningful network status instead of always OK 2013-08-08 10:41:17 -04:00
86056fdbd9 Generalize unlink to OS-dep code in Utils, just a little prep for Windows port. 2013-08-08 10:06:39 -04:00
8a46452a70 Move template parameter in Thread to a more logical scope location. 2013-08-08 09:19:36 -04:00
20f8668c28 0.4.0: MAJOR CHANGE TO NETWORK IDS AND NETWORK MEMBERSHIP (please upgrade!)
In keeping with the wild west alpha phase of this software, this version is
a major departure from 0.3.0 and an upgrade is required.

The protocol hasn't changed much, but the system of network membership, network
IDs, and network configuration bootstrapping has changed dramatically.

The mechanism for network autoconfiguration is now in-band, via the ZeroTier
protocol itself, rather than using an HTTP API. This simplifies the code and
allows us to use a consistent system of encryption and authentication.

To accomodate this change, network IDs now contain in their most significant
40 bits the ZeroTier address of a node responsible for overseeing the addressing
of participating network members. The remaining bits are free, so each network
controller (netconf node) can control up to 2^24 networks. The code for the
netconf service is in /netconf-service, but for ordinary users there's not much
need to look at it or use it. It's just there to be open source.

The system for network membership tracking is also revamped. For open networks
like Earth this doesn't matter, but for closed networks membership is now driven
by something called a membership certificate that is signed by the controlling
node in the network. There's still work to be done here, so private network
support isn't fully baked yet. But public open networks work fine.

Nodes still join "Earth" by default. The ID for Earth has changed from 1 to
6c92786fee000001 (hex). This means that old 0.3.0 clients and older will not
be able to communicate with 0.4.0 as their network IDs will not match.

The new certificate-based network membership system scales better than the old
HTTP API system and will support some pretty amazing features. Stay tuned!

For now just update and relaunch. You should get the same IPv4 address you
had before.

The second big change is zerotier-cli. Try running it as root (or after
copying the auth file to the path it tells you about when you first run it)
with 'help' as a command.
0.4.0
2013-08-07 15:23:34 -04:00
7015992b84 Make cli try to read auth token from global home if possible (unix-like systems) 2013-08-07 15:16:00 -04:00