diff --git a/node/Node.hpp b/node/Node.hpp index 52506ed9e..834f50cc9 100644 --- a/node/Node.hpp +++ b/node/Node.hpp @@ -35,6 +35,7 @@ #include "NetworkController.hpp" #include "Hashtable.hpp" #include "Bond.hpp" +#include "SelfAwareness.hpp" // Bit mask for "expecting reply" hash #define ZT_EXPECTING_REPLIES_BUCKET_MASK1 255 @@ -187,6 +188,8 @@ public: inline const Identity &identity() const { return _RR.identity; } + inline const std::vector SurfaceAddresses() const { return _RR.sa->whoami(); } + inline Bond *bondController() const { return _RR.bc; } /** diff --git a/service/OneService.cpp b/service/OneService.cpp index a9cb229ec..d17b539f2 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -1560,6 +1560,15 @@ public: } settings["listeningOn"] = boundAddrArray; + std::vector surfaceAddrs = _node-> SurfaceAddresses(); + auto surfaceAddrArray = json::array(); + for (int i = 0; i < surfaceAddrs.size(); i++) { + char ipBuf[64] = { 0 }; + surfaceAddrs[i].toString(ipBuf); + surfaceAddrArray.push_back(ipBuf); + } + settings["surfaceAddresses"] = surfaceAddrArray; + #ifdef ZT_USE_MINIUPNPC settings["portMappingEnabled"] = OSUtils::jsonBool(settings["portMappingEnabled"],true); #else