You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Adam Ierymenko f319078694
Merge github/dev
7 months ago
..
AES.cpp clang-format this branch 9 months ago
AES.hpp Merge github/dev 7 months ago
AES_aesni.cpp clang-format this branch 9 months ago
AES_armcrypto.cpp clang-format this branch 9 months ago
Address.hpp Controller support for "relays" field. 8 months ago
AtomicCounter.hpp Merge github/dev 7 months ago
Bond.cpp Plumb through attaching network ID to packet sends. 8 months ago
Bond.hpp Merge github/dev 7 months ago
Buffer.hpp Merge github/dev 7 months ago
Capability.cpp clang-format this branch 9 months ago
Capability.hpp Merge github/dev 7 months ago
CertificateOfMembership.cpp clang-format this branch 9 months ago
CertificateOfMembership.hpp clang-format this branch 9 months ago
CertificateOfOwnership.cpp clang-format this branch 9 months ago
CertificateOfOwnership.hpp clang-format this branch 9 months ago
Constants.hpp clang-format this branch 9 months ago
Credential.hpp clang-format this branch 9 months ago
DNS.hpp clang-format this branch 9 months ago
Dictionary.hpp clang-format this branch 9 months ago
ECC.cpp clang-format this branch 9 months ago
ECC.hpp clang-format this branch 9 months ago
Hashtable.hpp cleanup 7 months ago
Identity.cpp clang-format this branch 9 months ago
Identity.hpp clang-format this branch 9 months ago
IncomingPacket.cpp Merge changes from dev 8 months ago
IncomingPacket.hpp clang-format this branch 9 months ago
InetAddress.cpp cleanup 7 months ago
InetAddress.hpp clang-format this branch 9 months ago
MAC.hpp clang-format this branch 9 months ago
Membership.cpp Plumb through attaching network ID to packet sends. 8 months ago
Membership.hpp clang-format this branch 9 months ago
Metrics.cpp clang-format this branch 9 months ago
Metrics.hpp clang-format this branch 9 months ago
MulticastGroup.hpp clang-format this branch 9 months ago
Multicaster.cpp Plumb through attaching network ID to packet sends. 8 months ago
Multicaster.hpp clang-format this branch 9 months ago
Mutex.hpp Merge github/dev 7 months ago
Network.cpp Plumb through attaching network ID to packet sends. 8 months ago
Network.hpp clang-format this branch 9 months ago
NetworkConfig.cpp Cleanup, define specialist for network specific relays, remove some dead code. 8 months ago
NetworkConfig.hpp Plumb through attaching network ID to packet sends. 8 months ago
NetworkController.hpp clang-format this branch 9 months ago
Node.cpp Plumb through attaching network ID to packet sends. 8 months ago
Node.hpp clang-format this branch 9 months ago
OutboundMulticast.cpp Plumb through attaching network ID to packet sends. 8 months ago
OutboundMulticast.hpp clang-format this branch 9 months ago
Packet.cpp clang-format this branch 9 months ago
Packet.hpp clang-format this branch 9 months ago
PacketMultiplexer.cpp Add network ID to upstream lookup, cleanup, release notes for 1.16. 8 months ago
PacketMultiplexer.hpp clang-format this branch 9 months ago
Path.cpp clang-format this branch 9 months ago
Path.hpp clang-format this branch 9 months ago
Peer.cpp Plumb through attaching network ID to packet sends. 8 months ago
Peer.hpp Add network ID to upstream lookup, cleanup, release notes for 1.16. 8 months ago
Poly1305.cpp clang-format this branch 9 months ago
Poly1305.hpp clang-format this branch 9 months ago
README.md Actual documentation. 9 years ago
Revocation.cpp clang-format this branch 9 months ago
Revocation.hpp clang-format this branch 9 months ago
RingBuffer.hpp clang-format this branch 9 months ago
RuntimeEnvironment.hpp clang-format this branch 9 months ago
SHA512.cpp clang-format this branch 9 months ago
SHA512.hpp clang-format this branch 9 months ago
Salsa20.cpp clang-format this branch 9 months ago
Salsa20.hpp clang-format this branch 9 months ago
SelfAwareness.cpp clang-format this branch 9 months ago
SelfAwareness.hpp clang-format this branch 9 months ago
SharedPtr.hpp clang-format this branch 9 months ago
Switch.cpp Temporarily disable checks to always forward -- for testing. 8 months ago
Switch.hpp Plumb through attaching network ID to packet sends. 8 months ago
Tag.cpp clang-format this branch 9 months ago
Tag.hpp clang-format this branch 9 months ago
Topology.cpp Add network ID to upstream lookup, cleanup, release notes for 1.16. 8 months ago
Topology.hpp Add network ID to upstream lookup, cleanup, release notes for 1.16. 8 months ago
Trace.cpp Plumb through attaching network ID to packet sends. 8 months ago
Trace.hpp clang-format this branch 9 months ago
Utils.cpp clang-format this branch 9 months ago
Utils.hpp clang-format this branch 9 months ago
World.hpp clang-format this branch 9 months ago

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.