Adam Ierymenko cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
..
AES.cpp 91ce4c4ea6 Refactoring protocol marshal/unmarshal code... vor 6 Jahren
AES.hpp 91ce4c4ea6 Refactoring protocol marshal/unmarshal code... vor 6 Jahren
Address.hpp 91ce4c4ea6 Refactoring protocol marshal/unmarshal code... vor 6 Jahren
AtomicCounter.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Buf.cpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Buf.hpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
C25519.cpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
C25519.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
CMakeLists.txt cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Capability.cpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
Capability.hpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
CertificateOfMembership.cpp 59da359b06 More porting to new Buf system. vor 6 Jahren
CertificateOfMembership.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
CertificateOfOwnership.cpp 59da359b06 More porting to new Buf system. vor 6 Jahren
CertificateOfOwnership.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Constants.hpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Credential.cpp 03190c5a55 Bunch of build fixes, some docs vor 6 Jahren
Credential.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Dictionary.cpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Dictionary.hpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
ECC384.cpp 9642ff5fb9 . vor 6 Jahren
ECC384.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Endpoint.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Endpoint.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Hashtable.hpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Identity.cpp 91ce4c4ea6 Refactoring protocol marshal/unmarshal code... vor 6 Jahren
Identity.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
IncomingPacket.cpp 0de194dab3 It builds again vor 6 Jahren
IncomingPacket.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
InetAddress.cpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
InetAddress.hpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
LZ4.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
LZ4.hpp dab968ed96 Put LZ4 in its own file. vor 6 Jahren
Locator.cpp 5c6bf9d0a4 Wiring up addroot/removeroot vor 6 Jahren
Locator.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
MAC.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Membership.cpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Membership.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Meter.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
MulticastGroup.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Mutex.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Network.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Network.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
NetworkConfig.cpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
NetworkConfig.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
NetworkController.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Node.cpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Node.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
OS.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Path.cpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Path.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Peer.cpp 0de194dab3 It builds again vor 6 Jahren
Peer.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Poly1305.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Poly1305.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Protocol.cpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
Protocol.hpp 91ce4c4ea6 Refactoring protocol marshal/unmarshal code... vor 6 Jahren
README.md 8a2ff0b31e Actual documentation. vor 9 Jahren
Revocation.cpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
Revocation.hpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
RingBuffer.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
RuntimeEnvironment.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
SHA512.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
SHA512.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Salsa20.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Salsa20.hpp dab968ed96 Put LZ4 in its own file. vor 6 Jahren
ScopedPtr.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
SelfAwareness.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
SelfAwareness.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
SharedPtr.hpp eef70e198b Version 2.x notice updates and other boring stuff. vor 6 Jahren
Switch.cpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Switch.hpp 59da359b06 More porting to new Buf system. vor 6 Jahren
Tag.cpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
Tag.hpp d5b9a54c55 Continuing work on new buffer type... vor 6 Jahren
Topology.cpp d7b31fe014 Warning removal and build fixes. vor 6 Jahren
Topology.hpp 03190c5a55 Bunch of build fixes, some docs vor 6 Jahren
Trace.cpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Trace.hpp 33bb61c63d Loads of refactoring, integration of new version of Trace. vor 6 Jahren
Utils.cpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren
Utils.hpp cdc6c42375 Take Dictionary behind the barn... vor 6 Jahren

README.md

ZeroTier Network Hypervisor Core

This directory contains the real ZeroTier: a completely OS-independent global virtual Ethernet switch engine. This is where the magic happens.

Give it wire packets and it gives you Ethernet packets, and vice versa. The core contains absolutely no actual I/O, port configuration, or other OS-specific code (except Utils::getSecureRandom()). It provides a simple C API via /include/ZeroTierOne.h. It's designed to be small and maximally portable for future use on small embedded and special purpose systems.

Code in here follows these guidelines:

  • Keep it minimal, especially in terms of code footprint and memory use.
  • There should be no OS-dependent code here unless absolutely necessary (e.g. getSecureRandom).
  • If it's not part of the core virtual Ethernet switch it does not belong here.
  • No C++11 or C++14 since older and embedded compilers don't support it yet and this should be maximally portable.
  • Minimize the use of complex C++ features since at some point we might end up "minus-minus'ing" this code if doing so proves necessary to port to tiny embedded systems.