From 692d51609833fe9b71fb325864d668a4b9c90191 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Mon, 20 Mar 2017 10:15:35 -0700 Subject: [PATCH] added peer-related accessors to zts_* API --- make-mac.mk | 1 + src/sdk.h | 3 +++ src/service.cpp | 22 ++++++++++++++++++++++ 3 files changed, 26 insertions(+) diff --git a/make-mac.mk b/make-mac.mk index c083d54..690bc52 100644 --- a/make-mac.mk +++ b/make-mac.mk @@ -69,6 +69,7 @@ INCLUDES+= -Iext \ -I$(ZT1)/osdep \ -I$(ZT1)/node \ -I$(ZT1)/service \ + -I$(ZT1)/include \ -I../$(ZT1)/osdep \ -I../$(ZT1)/node \ -I../$(ZT1)/service \ diff --git a/src/sdk.h b/src/sdk.h index 0d47309..7322ff5 100644 --- a/src/sdk.h +++ b/src/sdk.h @@ -149,6 +149,9 @@ void zts_get_ipv6_address(const char *nwid, char *addrstr); bool zts_has_address(const char *nwid); int zts_get_device_id(char *devID); int zts_get_device_id_from_file(const char *filepath, char *devID); +int zts_get_peer_address(char *peer, const char *devID); +unsigned long zts_get_peer_count(); +//int zts_get_peer_list(); char *zts_get_homepath(); void zts_get_6plane_addr(char *addr, const char *nwid, const char *devID); void zts_get_rfc4193_addr(char *addr, const char *nwid, const char *devID); diff --git a/src/service.cpp b/src/service.cpp index 974698d..59e41d8 100644 --- a/src/service.cpp +++ b/src/service.cpp @@ -46,6 +46,7 @@ #include "Utils.hpp" #include "OSUtils.hpp" #include "InetAddress.hpp" +#include "ZeroTierOne.h" #include "tap.hpp" #include "sdk.h" @@ -257,6 +258,27 @@ int zts_get_device_id_from_file(const char *filepath, char *devID) { } return -1; } +// Get the IP address of a peer if a direct path is available +int zts_get_peer_address(char *peer, const char *devID) { + if(zt1Service) { + ZT_PeerList *pl = zt1Service->getNode()->peers(); + uint64_t addr; + for(int i=0; ipeerCount; i++) { + ZT_Peer *p = &(pl->peers[i]); + // DEBUG_INFO("peer[%d] = %lx", i, p->address); + } + return pl->peerCount; + } + else + return -1; +} +// Return the number of peers on this network +unsigned long zts_get_peer_count() { + if(zt1Service) + return zt1Service->getNode()->peers()->peerCount; + else + return 0; +} // Return the home path for this instance of ZeroTier char *zts_get_homepath() { return (char*)givenHomeDir.c_str();