diff options
Diffstat (limited to 'node/RuntimeEnvironment.hpp')
-rw-r--r-- | node/RuntimeEnvironment.hpp | 51 |
1 files changed, 31 insertions, 20 deletions
diff --git a/node/RuntimeEnvironment.hpp b/node/RuntimeEnvironment.hpp index 7ba1c989..46350b4a 100644 --- a/node/RuntimeEnvironment.hpp +++ b/node/RuntimeEnvironment.hpp @@ -1,6 +1,6 @@ /* * ZeroTier One - Network Virtualization Everywhere - * Copyright (C) 2011-2016 ZeroTier, Inc. https://www.zerotier.com/ + * Copyright (C) 2011-2018 ZeroTier, Inc. https://www.zerotier.com/ * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -14,16 +14,24 @@ * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. + * + * -- + * + * You can be released from the requirements of the license by purchasing + * a commercial license. Buying such a license is mandatory as soon as you + * develop commercial closed-source software that incorporates or links + * directly against ZeroTier software without disclosing the source code + * of your own application. */ #ifndef ZT_RUNTIMEENVIRONMENT_HPP #define ZT_RUNTIMEENVIRONMENT_HPP -#include <string> +#include <string.h> #include "Constants.hpp" +#include "Utils.hpp" #include "Identity.hpp" -#include "Mutex.hpp" namespace ZeroTier { @@ -34,7 +42,7 @@ class Node; class Multicaster; class NetworkController; class SelfAwareness; -class Cluster; +class Trace; /** * Holds global state for an instance of ZeroTier::Node @@ -44,44 +52,47 @@ class RuntimeEnvironment public: RuntimeEnvironment(Node *n) : node(n) - ,identity() ,localNetworkController((NetworkController *)0) + ,rtmem((void *)0) ,sw((Switch *)0) ,mc((Multicaster *)0) ,topology((Topology *)0) ,sa((SelfAwareness *)0) -#ifdef ZT_ENABLE_CLUSTER - ,cluster((Cluster *)0) -#endif { + publicIdentityStr[0] = (char)0; + secretIdentityStr[0] = (char)0; + } + + ~RuntimeEnvironment() + { + Utils::burn(secretIdentityStr,sizeof(secretIdentityStr)); } // Node instance that owns this RuntimeEnvironment Node *const node; - // This node's identity - Identity identity; - std::string publicIdentityStr; - std::string secretIdentityStr; - // This is set externally to an instance of this base class NetworkController *localNetworkController; - /* - * Order matters a bit here. These are constructed in this order + // Memory actually occupied by Trace, Switch, etc. + void *rtmem; + + /* Order matters a bit here. These are constructed in this order * and then deleted in the opposite order on Node exit. The order ensures * that things that are needed are there before they're needed. * - * These are constant and never null after startup unless indicated. - */ + * These are constant and never null after startup unless indicated. */ + Trace *t; Switch *sw; Multicaster *mc; Topology *topology; SelfAwareness *sa; -#ifdef ZT_ENABLE_CLUSTER - Cluster *cluster; -#endif + + // This node's identity and string representations thereof + Identity identity; + char publicIdentityStr[ZT_IDENTITY_STRING_BUFFER_LENGTH]; + char secretIdentityStr[ZT_IDENTITY_STRING_BUFFER_LENGTH]; }; } // namespace ZeroTier |