ZeroTierOne/node
2017-03-06 15:12:28 -08:00
..
Address.hpp A bit of code cleanup. 2017-02-04 00:23:31 -08:00
Array.hpp
AtomicCounter.hpp
Buffer.hpp Outgoing side of packet counter for link quality reporting. Also some cleanup and a cluster mode build fix. 2017-03-01 10:22:57 -08:00
C25519.cpp
C25519.hpp
Capability.cpp
Capability.hpp Match on tag sender equals or tag recipient equals. 2017-02-28 09:22:10 -08:00
CertificateOfMembership.cpp
CertificateOfMembership.hpp
CertificateOfOwnership.cpp Finish wiring up ipauth and macauth to Network filter. 2017-02-23 12:34:17 -08:00
CertificateOfOwnership.hpp Finish wiring up ipauth and macauth to Network filter. 2017-02-23 12:34:17 -08:00
CertificateOfRepresentation.hpp Add and send certificates of representation to tell people what our valid upstreams are. These are not used yet but will be needed for future privacy modes, etc. Also some cleanup. 2017-02-04 13:17:00 -08:00
Cluster.cpp Outgoing side of packet counter for link quality reporting. Also some cleanup and a cluster mode build fix. 2017-03-01 10:22:57 -08:00
Cluster.hpp Add more specific check in source==self case instead of dumping it. 2017-02-01 14:18:56 -08:00
Constants.hpp Docs, code cleanup, and protect the extra new fields of HELLO with encryption as a precaution. 2017-02-05 16:19:03 -08:00
Dictionary.hpp
Hashtable.hpp
Identity.cpp Docs, code cleanup, and protect the extra new fields of HELLO with encryption as a precaution. 2017-02-05 16:19:03 -08:00
Identity.hpp
IncomingPacket.cpp Now with less bugs. 2017-03-03 13:49:21 -08:00
IncomingPacket.hpp Wire up VERB_USER_MESSAGE in core. 2017-01-09 15:55:07 -08:00
InetAddress.cpp
InetAddress.hpp Small bug fix and warning removal. 2016-11-18 13:01:45 -08:00
MAC.hpp
Membership.cpp ipauth characteristic now works with ARP 2017-02-27 17:51:58 -08:00
Membership.hpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
Multicaster.cpp Rename getBestRoot() etc. 2016-11-17 16:31:58 -08:00
Multicaster.hpp Windows build fixes, Software update fix, warning removal. 2017-01-13 14:22:36 -08:00
MulticastGroup.hpp
Mutex.hpp
Network.cpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
Network.hpp Certificate of ownership -- used to secure against IP address spoofing, especially for IPv4 and regular IPv6. 2017-02-23 11:47:36 -08:00
NetworkConfig.cpp Certificate of ownership -- used to secure against IP address spoofing, especially for IPv4 and regular IPv6. 2017-02-23 11:47:36 -08:00
NetworkConfig.hpp Certificate of ownership -- used to secure against IP address spoofing, especially for IPv4 and regular IPv6. 2017-02-23 11:47:36 -08:00
NetworkController.hpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
Node.cpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
Node.hpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
NonCopyable.hpp
OutboundMulticast.cpp ipauth characteristic now works with ARP 2017-02-27 17:51:58 -08:00
OutboundMulticast.hpp
Packet.cpp Outgoing side of packet counter for link quality reporting. Also some cleanup and a cluster mode build fix. 2017-03-01 10:22:57 -08:00
Packet.hpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
Path.cpp
Path.hpp ZeroTier now has link quality measurement. We are not using this yet but decided to put it in to prep for future QoS support and SD-WAN stuff. 2017-03-01 14:36:52 -08:00
Peer.cpp Update how controller handles circuit tests -- save results to filesystem. 2017-03-01 16:33:34 -08:00
Peer.hpp Outgoing side of packet counter for link quality reporting. Also some cleanup and a cluster mode build fix. 2017-03-01 10:22:57 -08:00
Poly1305.cpp
Poly1305.hpp
README.md Actual documentation. 2017-02-03 19:47:00 -08:00
Revocation.cpp
Revocation.hpp Send revocations automatically on deauth for instant kill, also fix some issues with the RP. 2017-03-06 15:12:28 -08:00
RuntimeEnvironment.hpp
Salsa20.cpp Docs, code cleanup, and protect the extra new fields of HELLO with encryption as a precaution. 2017-02-05 16:19:03 -08:00
Salsa20.hpp Docs, code cleanup, and protect the extra new fields of HELLO with encryption as a precaution. 2017-02-05 16:19:03 -08:00
SelfAwareness.cpp
SelfAwareness.hpp
SHA512.cpp
SHA512.hpp
SharedPtr.hpp
Switch.cpp ZeroTier now has link quality measurement. We are not using this yet but decided to put it in to prep for future QoS support and SD-WAN stuff. 2017-03-01 14:36:52 -08:00
Switch.hpp Eliminate a little copypasta. 2017-02-04 00:04:44 -08:00
Tag.cpp
Tag.hpp Certificate of ownership -- used to secure against IP address spoofing, especially for IPv4 and regular IPv6. 2017-02-23 11:47:36 -08:00
Topology.cpp Fix "orbit" semantics. Federation works. 2017-02-13 16:38:21 -08:00
Topology.hpp Fix "orbit" semantics. Federation works. 2017-02-13 16:38:21 -08:00
Utils.cpp Cleanup and make moons (federated roots) a little easier to deal with. 2017-02-13 09:03:48 -08:00
Utils.hpp ZeroTier now has link quality measurement. We are not using this yet but decided to put it in to prep for future QoS support and SD-WAN stuff. 2017-03-01 14:36:52 -08:00
World.hpp Integrate moon concept into http config bus, and clean up that code quite a bit. 2017-02-13 14:27:08 -08:00

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.