Compare commits

...
139 Commits
Author SHA1 Message Date
Adam Ierymenko 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.
2013-08-13 15:14:03 -04:00
Adam Ierymenko 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
Adam Ierymenko ce1a03bde3 Fix a *nix build issue. 2013-08-12 21:27:07 -04:00
Adam Ierymenko 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
Adam Ierymenko 5076c75b07 More Windows port work. 2013-08-12 16:57:34 -04:00
Adam Ierymenko 36af3d92ec Windows build work: condition, mutex, thread, udp socket... 2013-08-12 16:18:35 -04:00
Adam Ierymenko 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
Adam Ierymenko 2fbe1e200b Add Visual Studio DLL project for core 2013-08-12 14:44:02 -04:00
Adam Ierymenko 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.
2013-08-12 13:17:41 -04:00
Adam Ierymenko 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
Adam Ierymenko 93a7eef2a5 Replace libcrypto RAND_ with our own to avoid valgrind errors. 2013-08-10 10:27:53 -04:00
Adam Ierymenko 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
Adam Ierymenko 9979474f1e Add range safety check to EllipticCurveKey. 2013-08-09 20:45:15 -04:00
Adam Ierymenko 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.
2013-08-09 17:21:35 -04:00
Adam Ierymenko 95a23dc7ec Fix for another wonderful C++ threading race condition. 2013-08-09 17:20:40 -04:00
Adam Ierymenko 7c3a446499 Tweak default multicast rate limits. 2013-08-09 17:02:06 -04:00
Adam Ierymenko 6a24ac4f00 Add a concept of debt to RateLimiter, save a bit of RAM. 2013-08-09 16:36:58 -04:00
Adam Ierymenko 3af55f4423 Add RateLimiter for rate limiting multicast, not tested yet. 2013-08-08 17:20:35 -04:00
Adam Ierymenko 95c0790a88 Back off a little on multicast propagation depth. Eventually this will be a network parameter. 2013-08-08 12:55:01 -04:00
Adam Ierymenko 5cabb60a6f Actually report a meaningful network status instead of always OK 2013-08-08 10:41:17 -04:00
Adam Ierymenko 86056fdbd9 Generalize unlink to OS-dep code in Utils, just a little prep for Windows port. 2013-08-08 10:06:39 -04:00
Adam Ierymenko 8a46452a70 Move template parameter in Thread to a more logical scope location. 2013-08-08 09:19:36 -04:00
Adam Ierymenko 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.
2013-08-07 15:23:34 -04:00
Adam Ierymenko 7015992b84 Make cli try to read auth token from global home if possible (unix-like systems) 2013-08-07 15:16:00 -04:00
Adam Ierymenko 4be890c171 Go back to release build. 2013-08-07 14:23:09 -04:00
Adam Ierymenko e98fd3dba0 Add code to automatically join Earth if no network memberships are defined. 2013-08-07 14:19:50 -04:00
Adam Ierymenko f5717f4427 Fix a bug and wow, it works. 2013-08-07 11:55:55 -04:00
Adam Ierymenko 5f8a3f4a7f More detail and output improvements to command bus "listpeers," and a little cleanup. 2013-08-06 11:50:56 -04:00
Adam Ierymenko 499ac2699f Bit of comment and if nesting cleanup in PacketDecoder. 2013-08-06 10:39:20 -04:00
Adam Ierymenko b342f56bec Network constructor deuglification, remove unused old encrypt/decrypt methods from Identity. 2013-08-06 10:15:05 -04:00
Adam Ierymenko 28a73b620e Bunch more debugging and loop closing on new netconf. 2013-08-06 01:28:56 -04:00
Adam Ierymenko e73c4cb68b Whole bunch of stuff: netconf, bug fixes, tweaks to ping and firewall opener timing code. 2013-08-06 00:05:39 -04:00
Adam Ierymenko c9c63074bb CLI communication now working. 2013-08-05 17:44:39 -04:00
Adam Ierymenko 70f368fdc3 CLI now actually sends commands... :P 2013-08-05 16:11:16 -04:00
Adam Ierymenko a7c4cbe53a CLI debugging, got rid of nasty old Thread class and replaced with newer cleaner portable idiom. 2013-08-05 16:06:16 -04:00
Adam Ierymenko 3368330b77 Poll for network autoconf, and a few other documentation changes. 2013-08-05 12:34:54 -04:00
Adam Ierymenko b9aeec9f29 Documentation improvements and some very minor pre-emptive security stuff. 2013-08-05 12:16:25 -04:00
Adam Ierymenko bf5c07f79a Scratch that... more work wiring up netconf. Got to handle OK. 2013-08-03 12:53:46 -04:00
Adam Ierymenko 63fa4a684d Merge my adamierymenko-dev into the new master that incorporates Raspberry Pi build changes in order to keep everything in sync. 2013-08-03 10:29:56 -04:00
Adam Ierymenko 3635a940f9 Merge pull request #14 from paulfurley/12-libcrypto-armv4
openssl static library for ARM, and ARM build scripts -- works on Raspberry Pi
2013-08-03 07:24:18 -07:00
Paul Furley 71b1eb9d52 Link against libdl to enable use of dlopen etc in libcrypto.a 2013-08-03 13:55:46 +00:00
Paul Furley 58c9e90b49 Fixed typo in symlink, v61 vs v6l 2013-08-03 13:00:29 +00:00
Paul Furley d415c61c67 libcrypto.afor linux-armv4 2013-08-03 12:15:15 +00:00
Paul Furley 2e373f6400 Symlink linux-armv61 to linux-armv4 2013-08-03 12:01:20 +00:00
Paul Furley 421a04b35f Added linux-armv4 openssl build script 2013-08-03 11:51:00 +00:00
Adam Ierymenko 80d8b7d0ae Netconf wired up, ready to test. 2013-08-02 17:17:34 -04:00
Adam Ierymenko f823fd05ac Replace fork() with vfork() in tap config, faster. 2013-08-02 14:38:53 -04:00
Adam Ierymenko 2a6b74746e Netconf service itself works, time to integrate. 2013-08-02 14:25:23 -04:00
Adam Ierymenko 741642ba53 netconf service work 2013-08-01 17:32:37 -04:00
Adam Ierymenko 8d30d51cf3 Rename netconf-plugin subdir. 2013-08-01 10:42:02 -04:00
Adam Ierymenko ee9a811b81 Netconf service code, interacts with our MySQL database. 2013-08-01 10:11:59 -04:00
Adam Ierymenko f260c2839c Local service plugin stuff... work in progress. 2013-07-31 17:24:59 -04:00
Adam Ierymenko 2ba97fb46b Remove suicidalThread hack from Thread. 2013-07-31 10:06:59 -04:00
Adam Ierymenko 9df88a3933 Change mind again... dump Http. Launcher will do this and will use libcurl. Also fix some format string errors. 2013-07-31 10:05:00 -04:00
Adam Ierymenko 3daea24d50 Little bit of protocol changes before implementation of new verbs. 2013-07-31 09:27:55 -04:00
Adam Ierymenko 7e156b2622 Call clean on all networks periodically, generalize Topology clean cycle to an overall clean cycle. 2013-07-30 11:14:53 -04:00
Adam Ierymenko e4c5ad9f43 More work on network membership certs, and it builds now. Still in heavy development. 2013-07-29 17:11:00 -04:00
Adam Ierymenko 439e602d5a Fix a bunch of errors due to minor method signature changes, still a work in progress. 2013-07-29 16:18:29 -04:00
Adam Ierymenko a53cfc9096 Network membership certificate work in progress... does not build yet. 2013-07-29 13:56:20 -04:00
Adam Ierymenko e7b515c86c remove obsolete packtool 2013-07-27 16:29:43 -04:00
Adam Ierymenko 304ed641fe makekeypair utility 2013-07-27 16:26:06 -04:00
Adam Ierymenko 7a17f6ca80 Add skeleton of certificate-based private network authentication. Also remove some old code. 2013-07-27 16:20:08 -04:00
Adam Ierymenko d35d322890 Remove JsonCPP from authors, no longer used. 2013-07-27 15:46:36 -04:00
Adam Ierymenko dd203f0065 Revert removal of Http. Witness my indecisiveness. 2013-07-27 15:45:01 -04:00
Adam Ierymenko fb975ead23 Add simple key=value dictionary, sorta like java.util.Properties. 2013-07-27 15:09:51 -04:00
Adam Ierymenko a816f56426 Dump huffman, doesnt add much and complicates porting to other languages. Also fix compile error in idtool. 2013-07-27 14:01:19 -04:00
Adam Ierymenko e6e825da70 Get rid of built-in HTTP. If we do HTTP it will probably be via libcurl to support HTTPS and chunking and other complexities. 2013-07-27 13:54:59 -04:00
Adam Ierymenko 917b95a1d6 cleanup 2013-07-27 13:40:56 -04:00
Adam Ierymenko b0a83093ce Back out of RPC... blech. Have a better idea. 2013-07-27 13:36:27 -04:00
Adam Ierymenko 57d8730f1b Wire up RPC plugin loading to Node. 2013-07-25 17:53:57 -04:00
Adam Ierymenko af8fcac0fc RPC infrastructure work in progress. 2013-07-25 15:19:35 -04:00
Adam Ierymenko 9cf734b74a Sane-ify Address, get rid of goofy union thingy. 2013-07-25 13:24:39 -04:00
Adam Ierymenko 083ae2d097 Work in progress on RPC. 2013-07-25 12:55:31 -04:00
Adam Ierymenko 668c428051 Basic RPC stuff in Packet and PacketDecoder for RPC service support. 2013-07-23 22:46:04 -07:00
Adam Ierymenko 10fc164fcb More trace output to debug control bus. 2013-07-23 17:21:34 -07:00
Adam Ierymenko 0c7f8e247c Add amSupernode to make code clearer in the check-if-self-is-supernode case. 2013-07-23 10:23:55 -07:00
Adam Ierymenko b8e9a79d00 docs 2013-07-20 18:24:56 -04:00
Adam Ierymenko e4e517e9c3 Doc cleanup. 2013-07-18 18:07:43 -04:00
Adam Ierymenko 5f4eb1ebc6 Command line interface. 2013-07-18 16:35:52 -04:00
Adam Ierymenko c345c699fd Self test for command bus encode/decode. 2013-07-18 13:27:46 -04:00
Adam Ierymenko a677597b44 Better encode/decode code for control bus. 2013-07-18 11:43:46 -04:00
Adam Ierymenko 1fce55fab1 Add an echoed 32-bit token field to command packets. 2013-07-17 17:35:19 -04:00
Adam Ierymenko 2e85cf18c1 Cleanup and build fixes. 2013-07-17 14:39:34 -04:00
Adam Ierymenko 76bc9968ff New simpler command interface via loopback UDP protected by a crypto token. 2013-07-17 14:10:44 -04:00
Adam Ierymenko 557cc359b3 More filter work. 2013-07-17 10:01:46 -04:00
Adam Ierymenko 102b0865cb Filter work, adding toString() and main evaluation function. 2013-07-16 15:00:15 -04:00
Adam Ierymenko a793dc2b29 Small updates to documentation, a few precautionary fixes. 2013-07-15 09:06:59 -04:00
Adam Ierymenko a6f4de8172 Also exclude upstream when picking supernode for multicast propagation, to not bounce back and forth to the same supernode. 2013-07-15 08:00:15 -04:00
Adam Ierymenko 1d36ea8ddf 0.3.0: BREAKS PROTOCOL BACKWARD COMPATIBILITY
This version is not compatible with versions prior to 0.3.0, so
'git pull' and restart if you are following the alpha.

Changes from 0.2.5:

 - All multicast frames are now signed by the original sender. This
   will permit very efficient and fault tolerant rate limitation
   across networks, and imposes a kind of "hash cash" cost on those
   who wish to flood the network by forcing them to keep regenerating
   new identities.

 - Simplified peer last unicast / last multicast accounting.

 - Improvements to multicast propagation algorithm to achieve better
   coverage with less redundant messages.

 - The bloated Switch class went on a diet, having packet decoding
   broken out into PacketDecoder and multicast propagation algorithm
   broken out into Multicaster.

 - Multicaster is implemented as a template mockable class to permit
   future simulations of huge scale multicast using the actual code
   instead of mockups in another language.

 - Introduced a faster non-cryptographic random source for things
   like multicast propagation and address choosing.

 - Some code cleanup, removal of outdated comments, etc.
2013-07-13 15:22:14 -04:00
Adam Ierymenko ca83f07b54 Simpler variant on multicast propagation algorithm seems to perform better by being less deterministic. May also be faster. 2013-07-13 15:17:21 -04:00
Adam Ierymenko 195ded4608 Cleanup, comments, regularize TRACE messages. 2013-07-13 14:45:39 -04:00
Adam Ierymenko 97cbd98bc5 Compile fixes, integration of fast PRNG. 2013-07-13 14:28:26 -04:00
Adam Ierymenko 3e49337d9a Add a fast non-cryptographic PRNG. 2013-07-13 13:26:27 -04:00
Adam Ierymenko c6dd5b239f Minor improvement to multicast propagation algorithm. 2013-07-12 22:54:39 -04:00
Adam Ierymenko aa59c1de10 Bunch of little bug fixes in newly refactored code. 2013-07-12 22:07:48 -04:00
Adam Ierymenko a004878546 Update bloom filter for MULTICAST_FRAME retransmit, and temporarily add abort() to catch gremlin 2013-07-12 17:21:23 -04:00
Adam Ierymenko 086050686f Merge branch 'adamierymenko-dev' of 10.211.55.2:/Users/api/Code/local-ZeroTierOne into adamierymenko-dev 2013-07-12 16:43:08 -04:00
Adam Ierymenko f934b81703 Several bug fixes in newly refactored code. 2013-07-12 16:40:59 -04:00
Adam Ierymenko 77fd78d5c9 Little cleanup and docs. 2013-07-12 10:13:24 -04:00
Adam Ierymenko a86e1cdb88 A bit more minor cleanup before testing. 2013-07-11 22:45:12 -04:00
Adam Ierymenko 2510f594e5 It builds now. The Switch object has been put on a diet. Now to test on the testnet before merge to master. 2013-07-11 22:25:12 -04:00
Adam Ierymenko 339b2314ea More work in progress on Switch / PacketDecoder refactor. 2013-07-11 22:06:25 -04:00
Adam Ierymenko fd2b383c3e Work in progress... 2013-07-11 18:15:51 -04:00
Adam Ierymenko ae93c95151 More major Switch refactor work... still in progress. 2013-07-11 17:52:04 -04:00
Adam Ierymenko ffad0b2780 Factoring out packet decoder from Switch to put that object on a little bit of a diet. Work in progress, wont build yet. 2013-07-11 16:19:06 -04:00
Adam Ierymenko bcd079b70e Adding signatures to multicast frames, work in progress, does not build yet 2013-07-10 22:58:43 -04:00
Adam Ierymenko 9f8069434a 0.2.5 - cleaned up multicast propagation algorithm and factored it out into Multicaster.hpp and BloomFilter.hpp 2013-07-10 19:19:00 -04:00
Adam Ierymenko 9e28bbfbb2 Factored out multicast propagation algorithm from Switch and Topology, also cleaned up and clarified it a bit. 2013-07-10 17:24:27 -04:00
Adam Ierymenko 47f611e7b8 Add bloom filter as separate code, work in progress factoring out multicast algorithm from the bloated Switch class. 2013-07-09 22:24:50 -04:00
Adam Ierymenko b14856da50 docs 2013-07-09 15:09:11 -04:00
Adam Ierymenko 1111d11be1 Version 0.2.4 - fix for EthernetTap shutdown problem, security improvements (no known bugs fixed, just proactive work) 2013-07-09 14:17:16 -04:00
Adam Ierymenko 51295e77d0 Enable -fstack-protector on Linux too 2013-07-09 14:14:26 -04:00
Adam Ierymenko a20b540fb0 Small compiler warning fix 2013-07-09 14:11:57 -04:00
Adam Ierymenko ef3e319c64 Several things:
(1) Probable fix for issue #7 and major cleanup of EthernetTap code with consolidation for all unix-like systems and specialization for different flavors only when needed.

(2) Refactor of Buffer<> to make its members private, and Packet to use Buffer's methods exclusively to access them. This improves clarity and means we're no longer lying about Buffer's role in the code's security posture.

(3) Add -fstack-protect to Makefile to bounds check stack variables.
2013-07-09 14:06:55 -04:00
Adam Ierymenko 41cd980bf7 Further increase verbosity of TRACE messages for duplicate multicasts 2013-07-09 10:13:13 -04:00
Adam Ierymenko 1ecf6ed3d0 0.2.3 - OSX bug fix, multicast propagation fix, no incompatible protocol changes 2013-07-08 20:54:09 -04:00
Adam Ierymenko 775fef9ce9 Silly multicast propagation fix: exclude upstream sender to never send duplicate multicasts back to where they came from 2013-07-08 20:53:05 -04:00
Adam Ierymenko 6eb77da094 Fix for issue #6: OSX tap device forgets it has IPv6 2013-07-08 20:36:33 -04:00
Adam Ierymenko 366f556e5b Filter work 2013-07-08 20:05:29 -04:00
Adam Ierymenko e7f20ad5f9 More filter development. It builds but is not integrated with the rest of the code. 2013-07-08 19:52:40 -04:00
Adam Ierymenko f8cfdf973e More filter work, and doc updates 2013-07-08 00:21:43 -04:00
Adam Ierymenko e2a2d33f8f Filter code, work in progress, wont build yet 2013-07-07 19:36:57 -04:00
Adam Ierymenko c68ab6b70f add flattr button 2013-07-07 12:32:08 -04:00
Adam Ierymenko 3397273322 Increase verbosity of TRACE messages for dropped duplicate multicast frames to help debug multicast propagation 2013-07-06 22:18:19 -04:00
Adam Ierymenko 0a7a8b415d Merge pull request #5 from Cubox-/master
The -O6 flag is useless. -O3 will do the same.
2013-07-06 14:20:32 -07:00
Andy Pilate 9eec6adc8c -O6 Do not exist and is the same as -O3 2013-07-06 22:54:45 +02:00
Andy Pilate 5c543b3b4a -O6 Do not exist and is the same as -O3 2013-07-06 22:54:19 +02:00
Adam Ierymenko 2fffdfdaf5 Version 0.2.2 - still compatible, now measures latency for everyone, broadcast enabled 2013-07-06 16:37:15 -04:00
Adam Ierymenko ef08494237 Send HELLO instead of NOP for NAT-t in order to measure latency always. Also prevents a race that can cause the first NAT-t to fail where the NOP arrives before the WHOIS reply from the supernode. Now NAT-t initiators will push their own public keys anyway so that doesnt matter. 2013-07-06 16:20:35 -04:00
Adam Ierymenko 2eaac3891e Enable ff:ff:ff:ff:ff:ff w/no ADI a.k.a. broadcast. YOLO. 2013-07-06 15:56:12 -04:00
Adam Ierymenko 7f3dea018c Version 0.2.1 - no incompatible protocol changes, a few bug fixes and the new status file feature 2013-07-06 15:09:59 -04:00
Adam Ierymenko 7c85a638b0 Added creation and periodic update of a file called "status" in the home directory that contains peer link status. Useful for debugging and statistics. Send it SIGHUP to force an update now. Otherwise it updates every 120 seconds. 2013-07-06 14:58:34 -04:00
Adam Ierymenko 68cc5ea523 documentation 2013-07-06 14:11:38 -04:00
Adam Ierymenko 2c0cdc9484 Fix for failure to bind port if IPv6 is not enabled on a system -- it should succeed if it can bind either V4 or V6 or both and only fail if neither binds 2013-07-06 13:43:24 -04:00
Adam Ierymenko cfef114c31 Possible fix for issue #4 - segfault in ___removeIp helper function in EthernetTap on OSX -- I think the problem may have been that I was using set::erase(key) while also using an iterator, so now it uses erase(iterator). See if it happens again, cause I could not duplicate the issue. Possible minor difference in STL version. 2013-07-06 13:34:35 -04:00
Adam Ierymenko 118247e8b5 Merge pull request #3 from bhourigan/master
Minor documentation edit
2013-07-06 02:17:22 -07:00
bhourigan a18162d58b Updated make install-mac-tap for paste worthy correctness 2013-07-05 21:50:14 -07:00
Adam Ierymenko 7640801952 Merge pull request #1 from crazysim/patch-1
Update README.md
2013-07-05 15:09:20 -07:00
Nelson Chen 0b46f2869a Update README.md
s/dslreports/dslreports.com/
2013-07-05 14:30:02 -07:00
125 changed files with 8130 additions and 17382 deletions

No files matched your search

+6
View File
@@ -6,3 +6,9 @@ zerotier-*
*.dSYM
mac-tap/tuntap/src/tap/tap
mac-tap/tuntap/tap.kext
/ZeroTierOne.vcxproj.user
/ZeroTierOne.sdf
/ZeroTierOne.v11.suo
/ZeroTierOne.opensdf
/Debug_32
+2 -8
View File
@@ -1,6 +1,6 @@
This file will track authors and contributors to ZeroTier's code base.
People who contribute code that is accepted into the master (trunk) branch
will be credited here.
People who contribute new code or bug fixes that are accepted into
the master (trunk) branch will be credited here.
--
@@ -16,12 +16,6 @@ ZeroTier One includes or links with the following third party software:
* LZ4 compression algorithm by Yann Collet (BSD license)
http://code.google.com/p/lz4/
* JsonCPP by Baptiste Lepilleur (public domain)
http://jsoncpp.sourceforge.net
* http-parser, a simple C http parser library (MIT license)
https://github.com/joyent/http-parser
* OpenSSL libcrypto (BSD-style OpenSSL license)
http://www.openssl.org/
+4
View File
@@ -2,6 +2,10 @@ 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.
-- MacOS
make -f Makefile.mac
+10 -10
View File
@@ -6,12 +6,12 @@ ARCH=$(shell uname -m)
DEFS=-DZT_ARCH="$(ARCH)" -DZT_OSNAME="linux" -DZT_TRACE
# Uncomment for a release optimized build
CFLAGS=-Wall -O6 -fno-unroll-loops -pthread $(INCLUDES) -DNDEBUG $(DEFS)
STRIP=strip --strip-all
#CFLAGS=-Wall -O3 -fno-unroll-loops -fstack-protector -pthread $(INCLUDES) -DNDEBUG $(DEFS)
#STRIP=strip --strip-all
# Uncomment for a debug build
#CFLAGS=-Wall -g -pthread $(INCLUDES) -DZT_TRACE -DZT_LOG_STDOUT $(DEFS)
#STRIP=echo
CFLAGS=-Wall -g -pthread $(INCLUDES) -DZT_TRACE $(DEFS)
STRIP=echo
CXXFLAGS=$(CFLAGS) -fno-rtti
@@ -20,16 +20,20 @@ CXXFLAGS=$(CFLAGS) -fno-rtti
# separate binaries for the RedHat and Debian universes to distribute via
# auto-update. This way we get one Linux binary for all systems of a given
# architecture.
LIBS=ext/bin/libcrypto/linux-$(ARCH)/libcrypto.a
LIBS=ext/bin/libcrypto/linux-$(ARCH)/libcrypto.a -lm -ldl
include objects.mk
all: one launcher
all: one cli launcher
one: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-one main.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-one
cli: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-cli cli.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-cli
selftest: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-selftest selftest.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-selftest
@@ -38,10 +42,6 @@ idtool: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-idtool idtool.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-idtool
packtool: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-packtool packtool.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-packtool
launcher:
$(CC) -Os -o zerotier-launcher launcher.c
$(STRIP) zerotier-launcher
+10 -10
View File
@@ -5,7 +5,7 @@ INCLUDES=-Iext/bin/libcrypto/include -Iext/jsoncpp/include
DEFS=-DZT_ARCH="x86_combined" -DZT_OSNAME="mac" -DZT_TRACE
# Uncomment for a release optimized universal binary build
CFLAGS=-arch i386 -arch x86_64 -Wall -O6 -ftree-vectorize -pthread -mmacosx-version-min=10.6 -DNDEBUG $(INCLUDES) $(DEFS)
CFLAGS=-arch i386 -arch x86_64 -Wall -O3 -ftree-vectorize -fstack-protector -pthread -mmacosx-version-min=10.6 -DNDEBUG $(INCLUDES) $(DEFS)
STRIP=strip
# Uncomment for a debug build
@@ -13,19 +13,20 @@ STRIP=strip
#STRIP=echo
CXXFLAGS=$(CFLAGS) -fno-rtti
# We statically link against libcrypto since Apple has apparently decided
# to deprecate it and may remove it in future OS releases.
LIBS=ext/bin/libcrypto/mac-x86_combined/libcrypto.a
LIBS=-lcrypto -lm
include objects.mk
all: one launcher mac-tap
all: one cli launcher mac-tap
one: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-one main.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-one
cli: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-cli cli.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-cli
selftest: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-selftest selftest.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-selftest
@@ -34,10 +35,6 @@ idtool: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-idtool idtool.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-idtool
packtool: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-packtool packtool.cpp $(OBJS) $(LIBS)
$(STRIP) zerotier-packtool
mac-tap: FORCE
cd mac-tap/tuntap ; make tap.kext
@@ -55,6 +52,9 @@ launcher-fakebin:
$(CC) $(CFLAGS) -DZEROTIER_FAKE_VERSION_MAJOR=1 -DZEROTIER_FAKE_VERSION_MINOR=2 -DZEROTIER_FAKE_VERSION_REV
$(CC) $(CFLAGS) -DZEROTIER_FAKE_VERSION_MAJOR=1 -DZEROTIER_FAKE_VERSION_MINOR=2 -DZEROTIER_FAKE_VERSION_REV
makekeypair: $(OBJS)
$(CXX) $(CXXFLAGS) -o zerotier-makekeypair makekeypair.cpp $(OBJS) $(LIBS)
clean:
rm -rf *.dSYM
rm -f $(OBJS) zerotier-*
+23 -12
View File
@@ -5,7 +5,7 @@ ZeroTier One creates flat virtual Ethernet networks of almost unlimited size. [V
This code is presently in **ALPHA** testing. That means that the protocol spec may change in incompatible ways, and it certainly has bugs. Testers should "git pull," rebuild, and restart fairly often. If things mysteriously stop working, do that.
See BUILDING.txt and RUNNING.txt for instructions. It currently builds on Mac and Linux. A Windows port is coming soon. Nice packages/installers and auto-update is also coming when alpha transitions to beta.
See BUILDING.txt and RUNNING.txt for instructions. It currently builds on Mac and Linux. A Windows port is coming soon. Nice packages/installers and auto-update are also coming when alpha transitions to beta.
Note that this won't work if your firewall does not allow outbound UDP. It must allow UDP conversations on port 8993 at a minimum.
@@ -13,7 +13,7 @@ At present there is only one virtual LAN and you are dumped there by default. It
**Security warning:** You read that right. ZeroTier One places your computer on an absolutely open global Ethernet party line. Please ensure that you are up to date on your OS patches and we recommend turning off unnecessary services. Also be sure that anything else you are sharing is password protected provided you don't want to share it: printers, iPhoto and iTunes shares, etc.
ZeroTier One is licensed under the GNU General Public License version 3. Anyone wishing to embed this in a commercial product or create a derivative product should contact [ZeroTier Networks LLC](https://www.zerotier.com/) to obtain a commercial license.
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.
Check out the [blog](http://blog.zerotier.com/) for announcements, in-depth articles, and related thoughts. There is also a [Google group](https://groups.google.com/forum/#!forum/zerotier-one-users) for questions and discussion.
@@ -21,16 +21,19 @@ Check out the [blog](http://blog.zerotier.com/) for announcements, in-depth arti
**FAQ**
**Q:** What can I do with this?
**A:** For starters, try opening iTunes if you have it installed. If others are also online and sharing their collections, you might see them. If you have any games that run over a LAN (except those that require IPX), try those. What else can you think of to do on a completely flat, open network? Collaborative software development? Remote debugging? Transferring files using simple drive shares? Sharing your desktop printer to someone on another continent? Use your imagination.
**A:** For starters, try opening iTunes if you have it installed. If others are also online and sharing their collections, you might see them. If you have any games that run over a LAN (except those that require IPX), try those. What else can you think of to do on a completely flat, open network? Games? Collaborative software development? Remote debugging? Transferring files using simple drive shares? Sharing your desktop printer to someone on another continent? Use your imagination.
**Q:** Why do I get an IP address in the 27.0.0.0 or 28.0.0.0 range? And why does a lookup claim these addresses belong to the U.S. Department of Defense?
**A:** Short answer: because IPv4 needs to die. Long answer: the Earth network assigns IPv4 IPs from these ranges. They do in fact belong to the DOD, but they are *not* routed to the open Internet. The DOD owns them but uses them internally for private networks. As a result, there is nothing *technically* wrong with "bogarting" these for our own private network. It's considered bad practice, but if you want a private address space in IPv4 that is unlikely to overlap other private address spaces (like 10/8 and 192.168/16), it's the only way. [Cellular carriers](http://www.androidcentral.com/sprint-internet-dept-defense-and-you) and [cable companies](http://www.dslreports/forum/r25679029-Why-is-my-first-hop-to-a-DoD-assigned-IP-address-) frequently do the same thing.
**A:** Short answer: because IPv4 needs to die. Long answer: the Earth network assigns IPv4 IPs from these ranges. They do in fact belong to the DOD, but they are *not* routed to the open Internet. The DOD owns them but uses them internally for private networks. As a result, there is nothing *technically* wrong with "bogarting" these for our own private network. It's considered bad practice, but if you want a private address space in IPv4 that is unlikely to overlap other private address spaces (like 10/8 and 192.168/16), it's the only way. [Cellular carriers](http://www.androidcentral.com/sprint-internet-dept-defense-and-you) and [cable companies](http://www.dslreports.com/forum/r25679029-Why-is-my-first-hop-to-a-DoD-assigned-IP-address-) frequently do the same thing.
**Q:** Is IPv6 supported?
**A:** Yes. IPv6 link-local addresses (those in the fe80::/10 block) are auto-assigned and should work fine. No other IPv6 addresses are assigned *yet*, but there are plans to do interesting things in this area in the future.
**Q:** I don't want a giant Ethernet party line. Can I leave it and create private LANs instead?
**A:** Yes, soon. A GUI to configure such things is in development. But for now there's only Earth.
**Q:** Are you going to charge for this?
**A:** Public networks will remain free, but we intend to charge for private virtual LANs. ZeroTier has other ideas too, but they're top secret for the moment.
**A:** Public virtual LANs will remain free. We intend to charge for private networks in some way, but the exact model is TBD. Other cloud-supported paid features are also TBD.
**Q:** What's a supernode?
**A:** Supernodes are nodes run by ZeroTier Networks that orindary users use to find one another and communicate until/unless they can perform NAT traversal and connect directly. They run the exact same software as everyone else. The only thing that really makes a supernode special is that it's designated as such.
@@ -38,14 +41,20 @@ Check out the [blog](http://blog.zerotier.com/) for announcements, in-depth arti
**Q:** Can I run a supernode?
**A:** No, not at the moment, and there would be no benefit to doing so.
**Q:** Will my local firewall rules apply to ZeroTier One traffic?
**A:** ZeroTier creates a virtual Ethernet tap device (zt# on Mac and Linux) that emulates a wired Ethernet port. If your firewall applies to *all* network ports, it will filter traffic through this port as well. If it applies only to the primary interface, it may not. See your OS's firewall documentation, as different OSes and flavors thereof have slightly different configurations in this regard.
**Q:** Can you see my traffic? What about other users? Can you sniff the LAN?
**A:** No. All unicast (direct computer to computer) traffic is encrypted end-to-end (even if it's being relayed), and the ZeroTier virtual LAN behaves like a LAN with a secure enterprise-grade switch that does not allow unicast conversations to be sniffed. Multicast and broadcast traffic will of course be seen by many recipients, but that's the idea.
**Q:** You say "almost unlimited size." Isn't multicast and broadcast traffic eventually going to be too much? What happens then?
**A:** ZeroTier One uses an algorithm called *implicit social switching*. The overall maximum number of recipients for a multicast is limited, so if there are too many listeners to a given multicast address then obviously not everyone will receive every message. So who does? Social switching causes multicasts to propagate in the direction of peers to whom you have recently communicated. As a result, multicasts tend to propagate along lines of association. The people most likely to get your service announcements are those with whom you frequently connect.
**Q:** What about privacy? Does this hide my location on the network?
**A:** ZeroTier is not a connection anonymizer. Other than encryption, it doesn't do anything special to hide your identity or network location. If you want strong privacy protection there are already very advanced tools like [Tor](https://www.torproject.org) for that, and this isn't trying to duplicate their functionality. At the same time, ZT does not do anything special to harm your privacy either. It's not spyware or snoop-ware.
**Q:** I don't see broadcasts.
**A:** At the moment only Ethernet multicast is propagated, not broadcast (ff:ff:ff:ff:ff:ff). This may change in the future. IPv4 ARP uses broadcast but is handled by special code that subscribes to a multicast group using the broadcast address combined with the IPv4 address to make it address-specific. See comments in MulticastGroup.hpp for deeper technical details.
**Q:** Is this designed to replace IP, BGP, IPv6, routers, etc.?
**A:** No. Its purpose is to act as a collaboration tool, a VPN alternative, a network mobility tool, a testbed for the development of software that takes advantage of fully open networking, a virtual LAN party for gamers, and so on, but it's not intended (or able) to replace the core of the Internet.
**Q:** Can I bridge this to a physical port and plug in an Xbox, PlayStation, etc.?
**A:** Not currently, as foreign Ethernet frames are not forwarded. This may be possible in a future version.
----
**Status**
@@ -62,9 +71,8 @@ Check out the [blog](http://blog.zerotier.com/) for announcements, in-depth arti
* Changes in your local network configuration are generally detected and will cause peers to be re-acquired.
*Known immediate issues:*
* Multiple network support is in but there is no interface to configure it, hence it is useless. But in alpha it'll be nice to shove everyone onto "Earth" in order to stress test that little "almost unlimited size" boast. LAN party!
* Multiple networks would currently all have the same MAC, which some OSes may not like. There is a possible strategy for dealing with this, but it needs to be explored.
* There is no multiple-launch protection yet. If you launch more than one instance on the same working directory everything breaks. Take care that zerotier-one is not running before launching it again. The command "sudo killall zerotier-one" is helpful.
* Multiple network support is in but there is no interface to configure it, hence it is useless. But in alpha it'll be nice to shove everyone onto "Earth" in order to stress test that little "almost unlimited size" boast.
* There is no multiple-launch protection yet and multiple instances on the same system do not work well due to route conflicts. Take care that zerotier-one is not running before launching it again. The command "sudo killall zerotier-one" is helpful.
* Sometimes ZeroTier One doesn't like to terminate when asked nicely. This is related to issues with the tap device closing down properly. If it hangs around after a TERM signal, send it a KILL (9) signal.
* The locally bound UDP port isn't configurable yet. It's 8993 by default.
* Known security issues:
@@ -81,4 +89,7 @@ Check out the [blog](http://blog.zerotier.com/) for announcements, in-depth arti
----
<a href="http://flattr.com/thing/1611614/ZeroTier-Networks" target="_blank"><img src="http://api.flattr.com/button/flattr-badge-large.png" alt="Flattr this" title="Flattr this" border="0" /></a>
[![githalytics.com alpha](https://cruel-carlota.pagodabox.com/59b2cbb9c154bf84bddb4b714402e548 "githalytics.com")](http://githalytics.com/zerotier/ZeroTierOne)
(c)2012-2013 [ZeroTier Networks LLC](https://www.zerotier.com/)
+1 -1
View File
@@ -9,7 +9,7 @@ By convention, ZeroTier One will keep its state here on mac:
ZeroTier ships with a kernel extension for its own tap device, which it
stores in the above directory. To install this from source, type:
sudo make install-mac-tap
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
+20
View File
@@ -0,0 +1,20 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2012
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ZeroTierOne", "ZeroTierOne.vcxproj", "{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Win32 = Debug|Win32
Release|Win32 = Release|Win32
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}.Debug|Win32.ActiveCfg = Debug_32|Win32
{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}.Debug|Win32.Build.0 = Debug_32|Win32
{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}.Release|Win32.ActiveCfg = Debug_32|Win32
{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}.Release|Win32.Build.0 = Debug_32|Win32
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal
+200
View File
@@ -0,0 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug_32|Win32">
<Configuration>Debug_32</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{0D4AE49A-FCE5-404F-8041-7FFC4DAF83F4}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_32|Win32'" Label="Configuration">
<ConfigurationType>DynamicLibrary</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v110</PlatformToolset>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug_32|Win32'">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_32|Win32'">
<LinkIncremental>true</LinkIncremental>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_32|Win32'">
<ClCompile>
<PreprocessorDefinitions>WIN32;_DEBUG;__WINDOWS__;_WINDOWS;_USRDLL;ZEROTIERONE_EXPORTS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
<WarningLevel>Level3</WarningLevel>
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
<Optimization>Disabled</Optimization>
<MultiProcessorCompilation>true</MultiProcessorCompilation>
<RuntimeTypeInfo>false</RuntimeTypeInfo>
<AdditionalIncludeDirectories>ext\bin\libcrypto\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
</ClCompile>
<Link>
<TargetMachine>MachineX86</TargetMachine>
<GenerateDebugInformation>true</GenerateDebugInformation>
<SubSystem>Windows</SubSystem>
<AdditionalDependencies>ext\bin\libcrypto\win32-vs2012\libeay32.lib;%(AdditionalDependencies)</AdditionalDependencies>
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClCompile Include="ext\kissdb\kissdb.c" />
<ClCompile Include="ext\lz4\lz4.c" />
<ClCompile Include="ext\lz4\lz4hc.c" />
<ClCompile Include="node\Defaults.cpp" />
<ClCompile Include="node\Demarc.cpp" />
<ClCompile Include="node\EllipticCurveKeyPair.cpp" />
<ClCompile Include="node\EthernetTap.cpp" />
<ClCompile Include="node\Filter.cpp" />
<ClCompile Include="node\HMAC.cpp" />
<ClCompile Include="node\Identity.cpp" />
<ClCompile Include="node\InetAddress.cpp" />
<ClCompile Include="node\Logger.cpp" />
<ClCompile Include="node\Network.cpp" />
<ClCompile Include="node\Node.cpp" />
<ClCompile Include="node\NodeConfig.cpp" />
<ClCompile Include="node\Packet.cpp" />
<ClCompile Include="node\PacketDecoder.cpp" />
<ClCompile Include="node\Peer.cpp" />
<ClCompile Include="node\Salsa20.cpp" />
<ClCompile Include="node\Service.cpp" />
<ClCompile Include="node\Switch.cpp" />
<ClCompile Include="node\SysEnv.cpp" />
<ClCompile Include="node\Topology.cpp" />
<ClCompile Include="node\UdpSocket.cpp" />
<ClCompile Include="node\Utils.cpp" />
</ItemGroup>
<ItemGroup>
<ClInclude Include="ext\bin\libcrypto\include\openssl\aes.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1t.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1_mac.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\bio.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\blowfish.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\bn.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\buffer.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\camellia.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\cast.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\cmac.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\cms.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\comp.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\conf.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\conf_api.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\crypto.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\des.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\des_old.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\dh.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\dsa.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\dso.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\dtls1.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ebcdic.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ec.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ecdh.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ecdsa.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\engine.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\err.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\evp.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\e_os2.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\hmac.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\idea.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\krb5_asn.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\kssl.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\lhash.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\md4.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\md5.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\mdc2.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\modes.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\objects.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\obj_mac.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ocsp.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\opensslconf.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\opensslv.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ossl_typ.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\pem.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\pem2.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\pkcs12.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\pkcs7.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\pqueue.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\rand.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\rc2.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\rc4.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ripemd.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\rsa.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\safestack.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\seed.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\sha.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\srp.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\srtp.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl2.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl23.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl3.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\stack.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\symhacks.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\tls1.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ts.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\txt_db.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ui.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\ui_compat.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\whrlpool.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509v3.h" />
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509_vfy.h" />
<ClInclude Include="ext\kissdb\kissdb.h" />
<ClInclude Include="ext\lz4\lz4.h" />
<ClInclude Include="ext\lz4\lz4hc.h" />
<ClInclude Include="node\Address.hpp" />
<ClInclude Include="node\Array.hpp" />
<ClInclude Include="node\AtomicCounter.hpp" />
<ClInclude Include="node\BloomFilter.hpp" />
<ClInclude Include="node\Buffer.hpp" />
<ClInclude Include="node\CMWC4096.hpp" />
<ClInclude Include="node\Condition.hpp" />
<ClInclude Include="node\Constants.hpp" />
<ClInclude Include="node\Defaults.hpp" />
<ClInclude Include="node\Demarc.hpp" />
<ClInclude Include="node\Dictionary.hpp" />
<ClInclude Include="node\EllipticCurveKey.hpp" />
<ClInclude Include="node\EllipticCurveKeyPair.hpp" />
<ClInclude Include="node\EthernetTap.hpp" />
<ClInclude Include="node\Filter.hpp" />
<ClInclude Include="node\HMAC.hpp" />
<ClInclude Include="node\Identity.hpp" />
<ClInclude Include="node\InetAddress.hpp" />
<ClInclude Include="node\Logger.hpp" />
<ClInclude Include="node\MAC.hpp" />
<ClInclude Include="node\Multicaster.hpp" />
<ClInclude Include="node\MulticastGroup.hpp" />
<ClInclude Include="node\Mutex.hpp" />
<ClInclude Include="node\Network.hpp" />
<ClInclude Include="node\Node.hpp" />
<ClInclude Include="node\NodeConfig.hpp" />
<ClInclude Include="node\NonCopyable.hpp" />
<ClInclude Include="node\Packet.hpp" />
<ClInclude Include="node\PacketDecoder.hpp" />
<ClInclude Include="node\Peer.hpp" />
<ClInclude Include="node\Range.hpp" />
<ClInclude Include="node\RateLimiter.hpp" />
<ClInclude Include="node\RuntimeEnvironment.hpp" />
<ClInclude Include="node\Salsa20.hpp" />
<ClInclude Include="node\Service.hpp" />
<ClInclude Include="node\SharedPtr.hpp" />
<ClInclude Include="node\Switch.hpp" />
<ClInclude Include="node\SysEnv.hpp" />
<ClInclude Include="node\Thread.hpp" />
<ClInclude Include="node\Topology.hpp" />
<ClInclude Include="node\UdpSocket.hpp" />
<ClInclude Include="node\Utils.hpp" />
<ClInclude Include="version.h" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>
+459
View File
@@ -0,0 +1,459 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="Source Files">
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
<Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
</Filter>
<Filter Include="Header Files">
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
</Filter>
<Filter Include="Resource Files">
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
</Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="ext\kissdb\kissdb.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ext\lz4\lz4.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="ext\lz4\lz4hc.c">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Defaults.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Demarc.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\EllipticCurveKeyPair.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\EthernetTap.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Filter.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\HMAC.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Identity.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\InetAddress.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Logger.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Network.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Node.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\NodeConfig.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Packet.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\PacketDecoder.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Peer.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Salsa20.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Service.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Switch.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\SysEnv.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Topology.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\UdpSocket.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="node\Utils.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="version.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\aes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1t.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\asn1_mac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\bio.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\blowfish.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\bn.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\buffer.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\camellia.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\cast.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\cmac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\cms.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\comp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\conf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\conf_api.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\crypto.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\des.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\des_old.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\dh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\dsa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\dso.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\dtls1.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ebcdic.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ec.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ecdh.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ecdsa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\engine.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\err.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\evp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\e_os2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\hmac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\idea.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\krb5_asn.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\kssl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\lhash.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\md4.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\md5.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\mdc2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\modes.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\objects.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\obj_mac.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ocsp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\opensslconf.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\opensslv.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ossl_typ.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\pem.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\pem2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\pkcs12.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\pkcs7.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\pqueue.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\rand.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\rc2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\rc4.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ripemd.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\rsa.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\safestack.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\seed.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\sha.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\srp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\srtp.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl2.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl23.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ssl3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\stack.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\symhacks.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\tls1.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ts.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\txt_db.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ui.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\ui_compat.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\whrlpool.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509v3.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\bin\libcrypto\include\openssl\x509_vfy.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\kissdb\kissdb.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\lz4\lz4.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="ext\lz4\lz4hc.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Address.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Array.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\AtomicCounter.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\BloomFilter.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Buffer.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\CMWC4096.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Condition.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Constants.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Defaults.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Demarc.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Dictionary.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\EllipticCurveKey.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\EllipticCurveKeyPair.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\EthernetTap.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Filter.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\HMAC.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Identity.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\InetAddress.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Logger.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\MAC.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Multicaster.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\MulticastGroup.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Mutex.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Network.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Node.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\NodeConfig.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\NonCopyable.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Packet.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\PacketDecoder.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Peer.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Range.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\RateLimiter.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\RuntimeEnvironment.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Salsa20.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Service.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\SharedPtr.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Switch.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\SysEnv.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Thread.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Topology.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\UdpSocket.hpp">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="node\Utils.hpp">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
</Project>
-32
View File
@@ -1,32 +0,0 @@
#!/bin/bash
#
# This probably won't be useful to anyone outside ZeroTier itself.
#
#
# This bumps the revision in version.h, which triggers a build and deploy
# to the now/ subfolder on update.zerotier.com. This allows nodes tracking
# the bleeding edge to track the bleedingest of the bleeding edge.
#
cur_rev=`grep -F ZEROTIER_ONE_VERSION_REVISION version.h | cut -d ' ' -f 3`
next_rev=`expr $cur_rev + 1`
echo Current revision: $cur_rev
echo Next revision: $next_rev
rm -f version.h.new
cat version.h | sed "s/ZEROTIER_ONE_VERSION_REVISION $cur_rev/ZEROTIER_ONE_VERSION_REVISION $next_rev/g" >>version.h.new
new_cur_rev=`grep -F ZEROTIER_ONE_VERSION_REVISION version.h.new | cut -d ' ' -f 3`
if [ "$new_cur_rev" = "$next_rev" ]; then
mv -f version.h.new version.h
echo Done.
else
echo Error: version.h.new updated incorrectly, leaving in place.
exit 1
fi
exit 0
+143
View File
@@ -0,0 +1,143 @@
/*
* ZeroTier One - Global Peer to Peer Ethernet
* Copyright (C) 2012-2013 ZeroTier Networks LLC
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* --
*
* ZeroTier may be used and distributed under the terms of the GPLv3, which
* are available at: http://www.gnu.org/licenses/gpl-3.0.html
*
* If you would like to embed ZeroTier into a commercial application or
* redistribute it in a modified binary form, please contact ZeroTier Networks
* LLC. Start here: http://www.zerotier.com/
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifndef __WINDOWS__
#include <unistd.h>
#endif
#include "node/Node.hpp"
#include "node/Constants.hpp"
#include "node/Utils.hpp"
#include "node/Thread.hpp"
#include "node/Condition.hpp"
using namespace ZeroTier;
static void printHelp(FILE *out,const char *exename)
{
fprintf(out,"Usage: %s [-switches] <command>"ZT_EOL_S,exename);
fprintf(out,ZT_EOL_S);
fprintf(out,"Switches:"ZT_EOL_S);
fprintf(out," -t<token> - Specify token on command line"ZT_EOL_S);
fprintf(out," -T<file> - Read token from file"ZT_EOL_S);
fprintf(out,ZT_EOL_S);
fprintf(out,"Use the 'help' command to get help from ZeroTier One itself."ZT_EOL_S);
}
static volatile unsigned int numResults = 0;
static Condition doneCondition;
static void resultHandler(void *arg,unsigned long id,const char *line)
{
++numResults;
if (strlen(line))
fprintf(stdout,"%s"ZT_EOL_S,line);
else doneCondition.signal();
}
int main(int argc,char **argv)
{
if (argc <= 1) {
printHelp(stdout,argv[0]);
return -1;
}
std::string authToken;
std::string command;
bool pastSwitches = false;
for(int i=1;i<argc;++i) {
if ((argv[i][0] == '-')&&(!pastSwitches)) {
if (strlen(argv[i]) <= 1) {
printHelp(stdout,argv[0]);
return -1;
}
switch(argv[i][1]) {
case 't':
authToken.assign(argv[i] + 2);
break;
case 'T':
if (!Utils::readFile(argv[i] + 2,authToken)) {
fprintf(stdout,"FATAL ERROR: unable to read token from '%s'"ZT_EOL_S,argv[i] + 2);
return -2;
}
break;
default:
return -1;
}
} else {
pastSwitches = true;
if (command.length())
command.push_back(' ');
command.append(argv[i]);
}
}
if (!authToken.length()) {
const char *home = getenv("HOME");
if (home) {
std::string dotZeroTierAuthToken(home);
dotZeroTierAuthToken.push_back(ZT_PATH_SEPARATOR);
dotZeroTierAuthToken.append(".zerotierOneAuthToken");
if (!Utils::readFile(dotZeroTierAuthToken.c_str(),authToken)) {
#ifndef __WINDOWS__
#ifdef __APPLE__
const char *systemAuthTokenPath = "/Library/Application Support/ZeroTier/One/authtoken.secret";
#else
const char *systemAuthTokenPath = "/var/lib/zerotier-one/authtoken.secret";
#endif
if (!Utils::readFile(systemAuthTokenPath,authToken)) {
fprintf(stdout,"FATAL ERROR: no token specified on command line and could not read '%s' or '%s'"ZT_EOL_S,dotZeroTierAuthToken.c_str(),systemAuthTokenPath);
return -2;
}
#else // __WINDOWS__
fprintf(stdout,"FATAL ERROR: no token specified on command line and could not read '%s'"ZT_EOL_S,dotZeroTierAuthToken.c_str());
return -2;
#endif // __WINDOWS__
}
}
}
if (!authToken.length()) {
fprintf(stdout,"FATAL ERROR: could not find auth token"ZT_EOL_S);
return -2;
}
Node::LocalClient client(authToken.c_str(),&resultHandler,(void *)0);
client.send(command.c_str());
doneCondition.wait(1000);
if (!numResults) {
fprintf(stdout,"ERROR: no results received. Is ZeroTier One running?"ZT_EOL_S);
return -1;
}
return 0;
}
Binary file not shown.
+1
View File
@@ -0,0 +1 @@
linux-armv4/
@@ -0,0 +1,4 @@
make clean
./Configure no-sock no-ssl2 no-ssl3 no-err no-krb5 no-engine no-hw no-tlsext no-jpake no-capieng no-idea no-camellia no-seed no-bf no-cast no-des no-rc2 no-rc4 no-rc5 no-md2 no-md4 no-ripemd no-mdc2 no-rsa no-dsa no-dh no-shared no-zlib no-dso no-cms no-ocsp no-txt_db no-pem no-mdc2 no-ui no-ts linux-armv4
make depend
make build_crypto
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 20 of 125 files, more files were not shown because too many files have changed in this diff. Show more