ZeroTierOne/node
2018-11-11 17:38:17 -08:00
..
Address.hpp
AtomicCounter.hpp
Buffer.hpp
C25519.cpp Use X64 ASM ed25519 signatures on Linux/x64, which are about 10X faster. Will matter a lot for network controllers, not so much for other things. 2018-03-13 06:51:17 -07:00
C25519.hpp
Capability.cpp
Capability.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
CertificateOfMembership.cpp
CertificateOfMembership.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
CertificateOfOwnership.cpp
CertificateOfOwnership.hpp
Constants.hpp Added ability for OneService to monitor local.conf for changes and automatically reload 2018-09-11 16:55:46 -07:00
Credential.hpp
Dictionary.hpp
Hashtable.hpp add/remove routes via rtnetlink 2018-05-25 14:18:06 -07:00
Identity.cpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
Identity.hpp
IncomingPacket.cpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
IncomingPacket.hpp Added VERB_ACK and VERB_QOS_MEASUREMENT, refined notion of path quality 2018-05-30 17:45:29 -07:00
InetAddress.cpp because Windows.... 2018-10-23 13:21:25 -07:00
InetAddress.hpp GitHub issue #675 2018-03-29 10:44:57 -07:00
MAC.hpp
Membership.cpp
Membership.hpp Times should be int64_t, not uint64_t 2018-11-11 17:38:17 -08:00
Multicaster.cpp Introduced basic multipath support 2018-05-01 16:32:15 -07:00
Multicaster.hpp
MulticastGroup.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
Mutex.hpp
Network.cpp Added basic QoS rule handling 2018-07-11 16:55:13 -07:00
Network.hpp Rough draft of fq-codel implementation 2018-07-10 16:50:12 -07:00
NetworkConfig.cpp
NetworkConfig.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
NetworkController.hpp
Node.cpp Rough draft of fq-codel implementation 2018-07-10 16:50:12 -07:00
Node.hpp Introduced basic multipath support 2018-05-01 16:32:15 -07:00
OutboundMulticast.cpp Rough draft of fq-codel implementation 2018-07-10 16:50:12 -07:00
OutboundMulticast.hpp
Packet.cpp node: remove deprecated register hint for C++17 compatibility 2018-05-18 09:09:27 +00:00
Packet.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
Path.cpp
Path.hpp Improved path selection, more efficient traffic allocation, lower QoS/ACK overhead 2018-06-22 16:30:20 -07:00
Peer.cpp Improved path selection, more efficient traffic allocation, lower QoS/ACK overhead 2018-06-22 16:30:20 -07:00
Peer.hpp Improved path selection, more efficient traffic allocation, lower QoS/ACK overhead 2018-06-22 16:30:20 -07:00
Poly1305.cpp
Poly1305.hpp
README.md
Revocation.cpp
Revocation.hpp
RingBuffer.hpp Minor cleanup. More efficient push() operation for RingBuffer 2018-06-13 14:50:37 -07:00
RuntimeEnvironment.hpp
Salsa20.cpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
Salsa20.hpp
SelfAwareness.cpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
SelfAwareness.hpp
SHA512.cpp Use X64 ASM ed25519 signatures on Linux/x64, which are about 10X faster. Will matter a lot for network controllers, not so much for other things. 2018-03-13 06:51:17 -07:00
SHA512.hpp
SharedPtr.hpp Refactor some potentially unsafe SharedPtr<> code. 2018-04-06 08:10:34 -07:00
Switch.cpp merge dev 2018-08-09 11:31:37 -07:00
Switch.hpp merge dev 2018-08-09 11:31:37 -07:00
Tag.cpp
Tag.hpp Spellcheck sweep across codebase 2018-06-07 17:25:27 -07:00
Topology.cpp merge dev 2018-08-09 11:31:37 -07:00
Topology.hpp Introduced basic multipath support 2018-05-01 16:32:15 -07:00
Trace.cpp Merge pull request #836 from skunkwerks/feature/add-freebsd-debugs 2018-09-14 08:08:59 -07:00
Trace.hpp Added VERB_ACK and VERB_QOS_MEASUREMENT, refined notion of path quality 2018-05-30 17:45:29 -07:00
Utils.cpp
Utils.hpp Merge pull request #836 from skunkwerks/feature/add-freebsd-debugs 2018-09-14 08:08:59 -07:00
World.hpp

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.