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

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.