Permalink
..
Failed to load latest commit information.
Address.hpp Copyright updates for 2018. Jan 8, 2018
AtomicCounter.hpp A little more cleanup. Jan 27, 2018
Buffer.hpp Copyright updates for 2018. Jan 8, 2018
C25519.cpp Use X64 ASM ed25519 signatures on Linux/x64, which are about 10X fast… Mar 13, 2018
C25519.hpp Clean up some old stuff. Jan 27, 2018
Capability.cpp Copyright updates for 2018. Jan 8, 2018
Capability.hpp Copyright updates for 2018. Jan 8, 2018
CertificateOfMembership.cpp Clean up some old stuff. Jan 27, 2018
CertificateOfMembership.hpp Clean up some old stuff. Jan 27, 2018
CertificateOfOwnership.cpp Copyright updates for 2018. Jan 8, 2018
CertificateOfOwnership.hpp Copyright updates for 2018. Jan 8, 2018
Constants.hpp Merge branch 'dev' into netbsd-support Apr 25, 2018
Credential.hpp Copyright updates for 2018. Jan 8, 2018
Dictionary.hpp A few fixes dicatated by valgrind. Feb 9, 2018
Hashtable.hpp Fix build on Intel C/C++ Compiler for Linux. Feb 1, 2018
Identity.cpp Clean up some old stuff. Jan 27, 2018
Identity.hpp Clean up some old stuff. Jan 27, 2018
IncomingPacket.cpp Tie up the rest of hub and spoke designated replicator multicast mode. Jan 27, 2018
IncomingPacket.hpp Copyright updates for 2018. Jan 8, 2018
InetAddress.cpp GitHub issue #675 Mar 29, 2018
InetAddress.hpp GitHub issue #675 Mar 29, 2018
MAC.hpp Copyright updates for 2018. Jan 8, 2018
Membership.cpp Copyright updates for 2018. Jan 8, 2018
Membership.hpp Copyright updates for 2018. Jan 8, 2018
MulticastGroup.hpp Copyright updates for 2018. Jan 8, 2018
Multicaster.cpp Tie up the rest of hub and spoke designated replicator multicast mode. Jan 27, 2018
Multicaster.hpp Add support for designated multicast replicators to Multicaster::send(). Jan 27, 2018
Mutex.hpp More cleanup of old stuff. Jan 27, 2018
Network.cpp Add specification of anchor and multicast hub address (optional) to n… Mar 21, 2018
Network.hpp More cleanup of old stuff. Jan 27, 2018
NetworkConfig.cpp Tie up the rest of hub and spoke designated replicator multicast mode. Jan 27, 2018
NetworkConfig.hpp Tie up the rest of hub and spoke designated replicator multicast mode. Jan 27, 2018
NetworkController.hpp Copyright updates for 2018. Jan 8, 2018
Node.cpp More work on GitHub issue #666 Jan 25, 2018
Node.hpp Fixes for lock ordering -- GitHub issue #573 Jan 11, 2018
OutboundMulticast.cpp Copyright updates for 2018. Jan 8, 2018
OutboundMulticast.hpp Do not send to origin in second buffered multicast path. Jan 27, 2018
Packet.cpp cleanup Jan 11, 2018
Packet.hpp Tie up the rest of hub and spoke designated replicator multicast mode. Jan 27, 2018
Path.cpp Copyright updates for 2018. Jan 8, 2018
Path.hpp Fix build on Intel C/C++ Compiler for Linux. Feb 1, 2018
Peer.cpp Copyright updates for 2018. Jan 8, 2018
Peer.hpp More cleanup of old stuff. Jan 27, 2018
Poly1305.cpp Minor cleanup. Jul 17, 2017
Poly1305.hpp Copyright updates for 2018. Jan 8, 2018
README.md Actual documentation. Feb 4, 2017
Revocation.cpp Copyright updates for 2018. Jan 8, 2018
Revocation.hpp Copyright updates for 2018. Jan 8, 2018
RuntimeEnvironment.hpp A small memory use reduction. Jan 25, 2018
SHA512.cpp Use X64 ASM ed25519 signatures on Linux/x64, which are about 10X fast… Mar 13, 2018
SHA512.hpp Copyright updates for 2018. Jan 8, 2018
Salsa20.cpp Some code cleanup and make sure any type punning is guarded with ZT_N… Apr 20, 2017
Salsa20.hpp Another very small crypto optimization. May 3, 2017
SelfAwareness.cpp Copyright updates for 2018. Jan 8, 2018
SelfAwareness.hpp Copyright updates for 2018. Jan 8, 2018
SharedPtr.hpp Refactor some potentially unsafe SharedPtr<> code. Apr 6, 2018
Switch.cpp A few fixes dicatated by valgrind. Feb 9, 2018
Switch.hpp More cleanup of old stuff. Jan 27, 2018
Tag.cpp Copyright updates for 2018. Jan 8, 2018
Tag.hpp Copyright updates for 2018. Jan 8, 2018
Topology.cpp Refactor some potentially unsafe SharedPtr<> code. Apr 6, 2018
Topology.hpp Refactor some potentially unsafe SharedPtr<> code. Apr 6, 2018
Trace.cpp Linux build fix on some versions. Feb 3, 2018
Trace.hpp Fix compilation on Windows Jan 10, 2018
Utils.cpp Copyright updates for 2018. Jan 8, 2018
Utils.hpp Fix build on Intel C/C++ Compiler for Linux. Feb 1, 2018
World.hpp Clean up some old stuff. Jan 27, 2018

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.