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 ab208bb8f9
Make encrypted HELLO a local.conf setting -- 99.999999% of users do not need it and it introduces scalability problems on large controllers.
7 months ago
..
AES.cpp node/ -> MPL 7 months ago
AES.hpp node/ -> MPL 7 months ago
AES_aesni.cpp node/ -> MPL 7 months ago
AES_armcrypto.cpp node/ -> MPL 7 months ago
Address.hpp node/ -> MPL 7 months ago
AtomicCounter.hpp node/ -> MPL 7 months ago
Bond.cpp node/ -> MPL 7 months ago
Bond.hpp node/ -> MPL 7 months ago
Buffer.hpp node/ -> MPL 7 months ago
Capability.cpp node/ -> MPL 7 months ago
Capability.hpp node/ -> MPL 7 months ago
CertificateOfMembership.cpp node/ -> MPL 7 months ago
CertificateOfMembership.hpp node/ -> MPL 7 months ago
CertificateOfOwnership.cpp node/ -> MPL 7 months ago
CertificateOfOwnership.hpp node/ -> MPL 7 months ago
Constants.hpp node/ -> MPL 7 months ago
Credential.hpp node/ -> MPL 7 months ago
DNS.hpp node/ -> MPL 7 months ago
Dictionary.hpp node/ -> MPL 7 months ago
ECC.cpp clang-format this branch 9 months ago
ECC.hpp node/ -> MPL 7 months ago
Hashtable.hpp node/ -> MPL 7 months ago
Identity.cpp node/ -> MPL 7 months ago
Identity.hpp node/ -> MPL 7 months ago
IncomingPacket.cpp node/ -> MPL 7 months ago
IncomingPacket.hpp node/ -> MPL 7 months ago
InetAddress.cpp node/ -> MPL 7 months ago
InetAddress.hpp node/ -> MPL 7 months ago
MAC.hpp node/ -> MPL 7 months ago
Membership.cpp node/ -> MPL 7 months ago
Membership.hpp node/ -> MPL 7 months ago
Metrics.cpp node/ -> MPL 7 months ago
Metrics.hpp node/ -> MPL 7 months ago
MulticastGroup.hpp node/ -> MPL 7 months ago
Multicaster.cpp node/ -> MPL 7 months ago
Multicaster.hpp node/ -> MPL 7 months ago
Mutex.hpp node/ -> MPL 7 months ago
Network.cpp node/ -> MPL 7 months ago
Network.hpp node/ -> MPL 7 months ago
NetworkConfig.cpp node/ -> MPL 7 months ago
NetworkConfig.hpp node/ -> MPL 7 months ago
NetworkController.hpp node/ -> MPL 7 months ago
Node.cpp Make encrypted HELLO a local.conf setting -- 99.999999% of users do not need it and it introduces scalability problems on large controllers. 7 months ago
Node.hpp Make encrypted HELLO a local.conf setting -- 99.999999% of users do not need it and it introduces scalability problems on large controllers. 7 months ago
OutboundMulticast.cpp node/ -> MPL 7 months ago
OutboundMulticast.hpp node/ -> MPL 7 months ago
Packet.cpp node/ -> MPL 7 months ago
Packet.hpp node/ -> MPL 7 months ago
PacketMultiplexer.cpp node/ -> MPL 7 months ago
PacketMultiplexer.hpp node/ -> MPL 7 months ago
Path.cpp node/ -> MPL 7 months ago
Path.hpp node/ -> MPL 7 months ago
Peer.cpp Make encrypted HELLO a local.conf setting -- 99.999999% of users do not need it and it introduces scalability problems on large controllers. 7 months ago
Peer.hpp node/ -> MPL 7 months ago
Poly1305.cpp clang-format this branch 9 months ago
Poly1305.hpp node/ -> MPL 7 months ago
README.md Actual documentation. 9 years ago
Revocation.cpp node/ -> MPL 7 months ago
Revocation.hpp node/ -> MPL 7 months ago
RingBuffer.hpp node/ -> MPL 7 months ago
RuntimeEnvironment.hpp node/ -> MPL 7 months ago
SHA512.cpp clang-format this branch 9 months ago
SHA512.hpp node/ -> MPL 7 months ago
Salsa20.cpp clang-format this branch 9 months ago
Salsa20.hpp clang-format this branch 9 months ago
SelfAwareness.cpp node/ -> MPL 7 months ago
SelfAwareness.hpp node/ -> MPL 7 months ago
SharedPtr.hpp node/ -> MPL 7 months ago
Switch.cpp node/ -> MPL 7 months ago
Switch.hpp node/ -> MPL 7 months ago
Tag.cpp node/ -> MPL 7 months ago
Tag.hpp node/ -> MPL 7 months ago
Topology.cpp node/ -> MPL 7 months ago
Topology.hpp node/ -> MPL 7 months ago
Trace.cpp node/ -> MPL 7 months ago
Trace.hpp node/ -> MPL 7 months ago
Utils.cpp node/ -> MPL 7 months ago
Utils.hpp node/ -> MPL 7 months ago
World.hpp node/ -> MPL 7 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.