Updated zts_start* API naming convention
This commit is contained in:
@@ -30,7 +30,7 @@ addr.sin_family = AF_INET;
|
|||||||
addr.sin_addr.s_addr = inet_addr(ip);
|
addr.sin_addr.s_addr = inet_addr(ip);
|
||||||
addr.sin_port = hton(port);
|
addr.sin_port = hton(port);
|
||||||
|
|
||||||
zts_simple_start(path, nwid);
|
zts_startjoin(path, nwid);
|
||||||
|
|
||||||
int fd, err = 0;
|
int fd, err = 0;
|
||||||
if ((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
if ((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ struct ZT {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void simpleStart(const char *path, const char *nwid) {
|
static void simpleStart(const char *path, const char *nwid) {
|
||||||
zts_simple_start(path, nwid);
|
zts_startjoin(path, nwid);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void stop() {
|
static void stop() {
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
printf("waiting for libzt to come online...\n");
|
printf("waiting for libzt to come online...\n");
|
||||||
zts_simple_start("dlldir", "17d709436c2c5367");
|
zts_startjoin("dlldir", "17d709436c2c5367");
|
||||||
printf("started. now performing a socket call\n");
|
printf("started. now performing a socket call\n");
|
||||||
int fd = zts_socket(AF_INET, SOCK_STREAM, 0);
|
int fd = zts_socket(AF_INET, SOCK_STREAM, 0);
|
||||||
printf("fd=%d\n", fd);
|
printf("fd=%d\n", fd);
|
||||||
|
|||||||
@@ -376,7 +376,7 @@ int main(int argc, char **argv)
|
|||||||
// Start ZeroTier Node
|
// Start ZeroTier Node
|
||||||
// Join Network which contains resources we need to proxy
|
// Join Network which contains resources we need to proxy
|
||||||
DEBUG_INFO("waiting for libzt to come online");
|
DEBUG_INFO("waiting for libzt to come online");
|
||||||
zts_simple_start(path.c_str(), nwid.c_str());
|
zts_startjoin(path.c_str(), nwid.c_str());
|
||||||
|
|
||||||
ZeroTier::ZTProxy *proxy = new ZeroTier::ZTProxy(proxy_listen_port, nwid, path, internal_addr, internal_port, dns_nameserver);
|
ZeroTier::ZTProxy *proxy = new ZeroTier::ZTProxy(proxy_listen_port, nwid, path, internal_addr, internal_port, dns_nameserver);
|
||||||
|
|
||||||
|
|||||||
@@ -213,7 +213,7 @@ int zts_start(const char *path);
|
|||||||
* @param nwid A 16-digit hexidecimal virtual network ID
|
* @param nwid A 16-digit hexidecimal virtual network ID
|
||||||
* @return Returns 0 on success, -1 on failure
|
* @return Returns 0 on success, -1 on failure
|
||||||
*/
|
*/
|
||||||
int zts_simple_start(const char *path, const char *nwid);
|
int zts_startjoin(const char *path, const char *nwid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Stops libzt (ZeroTier core services, stack drivers, stack threads, etc)
|
* @brief Stops libzt (ZeroTier core services, stack drivers, stack threads, etc)
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ ZT_SOCKET_API int ZTCALL zts_start(const char *path);
|
|||||||
* @param nwid A 16-digit hexidecimal network identifier (e.g. Earth: `8056c2e21c000001`)
|
* @param nwid A 16-digit hexidecimal network identifier (e.g. Earth: `8056c2e21c000001`)
|
||||||
* @return 0 if successful; or 1 if failed
|
* @return 0 if successful; or 1 if failed
|
||||||
*/
|
*/
|
||||||
ZT_SOCKET_API int ZTCALL zts_simple_start(const char *path, const char *nwid);
|
ZT_SOCKET_API int ZTCALL zts_startjoin(const char *path, const char *nwid);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Stops the ZeroTier core service and disconnects from all virtual networks
|
* @brief Stops the ZeroTier core service and disconnects from all virtual networks
|
||||||
@@ -117,7 +117,7 @@ ZT_SOCKET_API void ZTCALL zts_stop();
|
|||||||
/**
|
/**
|
||||||
* @brief Joins a virtual network
|
* @brief Joins a virtual network
|
||||||
*
|
*
|
||||||
* @usage Called after zts_start() or zts_simple_start()
|
* @usage Called after zts_start() or zts_startjoin()
|
||||||
* @param nwid the 16-digit hexidecimal network identifier
|
* @param nwid the 16-digit hexidecimal network identifier
|
||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -163,7 +163,9 @@ ZeroTier::VirtualTap *getAnyTap()
|
|||||||
return vtap;
|
return vtap;
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_get_device_id_from_file(const char *filepath, char *devID) {
|
int zts_get_device_id_from_file(const char *filepath, char *devID)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
std::string fname("identity.public");
|
std::string fname("identity.public");
|
||||||
std::string fpath(filepath);
|
std::string fpath(filepath);
|
||||||
if (ZeroTier::OSUtils::fileExists((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),false)) {
|
if (ZeroTier::OSUtils::fileExists((fpath + ZT_PATH_SEPARATOR_S + fname).c_str(),false)) {
|
||||||
@@ -178,7 +180,7 @@ int zts_get_device_id_from_file(const char *filepath, char *devID) {
|
|||||||
// Starts a ZeroTier service in the background
|
// Starts a ZeroTier service in the background
|
||||||
void *zts_start_service(void *thread_id)
|
void *zts_start_service(void *thread_id)
|
||||||
{
|
{
|
||||||
DEBUG_INFO("homeDir=%s", ZeroTier::homeDir.c_str());
|
DEBUG_INFO("path=%s", ZeroTier::homeDir.c_str());
|
||||||
// Where network .conf files will be stored
|
// Where network .conf files will be stored
|
||||||
ZeroTier::netDir = ZeroTier::homeDir + "/networks.d";
|
ZeroTier::netDir = ZeroTier::homeDir + "/networks.d";
|
||||||
ZeroTier::zt1Service = (ZeroTier::OneService *)0;
|
ZeroTier::zt1Service = (ZeroTier::OneService *)0;
|
||||||
@@ -250,6 +252,7 @@ void *zts_start_service(void *thread_id)
|
|||||||
|
|
||||||
void disableTaps()
|
void disableTaps()
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
ZeroTier::_vtaps_lock.lock();
|
ZeroTier::_vtaps_lock.lock();
|
||||||
for (size_t i=0; i<ZeroTier::vtaps.size(); i++) {
|
for (size_t i=0; i<ZeroTier::vtaps.size(); i++) {
|
||||||
DEBUG_EXTRA("vt=%p", ZeroTier::vtaps[i]);
|
DEBUG_EXTRA("vt=%p", ZeroTier::vtaps[i]);
|
||||||
@@ -260,6 +263,7 @@ void disableTaps()
|
|||||||
|
|
||||||
void zts_get_ipv4_address(const char *nwid, char *addrstr, const size_t addrlen)
|
void zts_get_ipv4_address(const char *nwid, char *addrstr, const size_t addrlen)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::VirtualTap *tap = getTapByNWID(nwid_int);
|
ZeroTier::VirtualTap *tap = getTapByNWID(nwid_int);
|
||||||
@@ -282,6 +286,7 @@ void zts_get_ipv4_address(const char *nwid, char *addrstr, const size_t addrlen)
|
|||||||
|
|
||||||
void zts_get_ipv6_address(const char *nwid, char *addrstr, size_t addrlen)
|
void zts_get_ipv6_address(const char *nwid, char *addrstr, size_t addrlen)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
uint64_t nwid_int = strtoull(nwid, NULL, 16);
|
||||||
ZeroTier::VirtualTap *tap = getTapByNWID(nwid_int);
|
ZeroTier::VirtualTap *tap = getTapByNWID(nwid_int);
|
||||||
@@ -304,6 +309,7 @@ void zts_get_ipv6_address(const char *nwid, char *addrstr, size_t addrlen)
|
|||||||
|
|
||||||
int zts_has_ipv4_address(const char *nwid)
|
int zts_has_ipv4_address(const char *nwid)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
char ipv4_addr[INET_ADDRSTRLEN];
|
char ipv4_addr[INET_ADDRSTRLEN];
|
||||||
memset(ipv4_addr, 0, INET_ADDRSTRLEN);
|
memset(ipv4_addr, 0, INET_ADDRSTRLEN);
|
||||||
zts_get_ipv4_address(nwid, ipv4_addr, INET_ADDRSTRLEN);
|
zts_get_ipv4_address(nwid, ipv4_addr, INET_ADDRSTRLEN);
|
||||||
@@ -312,6 +318,7 @@ int zts_has_ipv4_address(const char *nwid)
|
|||||||
|
|
||||||
int zts_has_ipv6_address(const char *nwid)
|
int zts_has_ipv6_address(const char *nwid)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
char ipv6_addr[INET6_ADDRSTRLEN];
|
char ipv6_addr[INET6_ADDRSTRLEN];
|
||||||
memset(ipv6_addr, 0, INET6_ADDRSTRLEN);
|
memset(ipv6_addr, 0, INET6_ADDRSTRLEN);
|
||||||
zts_get_ipv6_address(nwid, ipv6_addr, INET6_ADDRSTRLEN);
|
zts_get_ipv6_address(nwid, ipv6_addr, INET6_ADDRSTRLEN);
|
||||||
@@ -320,12 +327,14 @@ int zts_has_ipv6_address(const char *nwid)
|
|||||||
|
|
||||||
int zts_has_address(const char *nwid)
|
int zts_has_address(const char *nwid)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
return zts_has_ipv4_address(nwid) || zts_has_ipv6_address(nwid);
|
return zts_has_ipv4_address(nwid) || zts_has_ipv6_address(nwid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void zts_get_6plane_addr(char *addr, const char *nwid, const char *devID)
|
void zts_get_6plane_addr(char *addr, const char *nwid, const char *devID)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
ZeroTier::InetAddress _6planeAddr = ZeroTier::InetAddress::makeIpv66plane(
|
ZeroTier::InetAddress _6planeAddr = ZeroTier::InetAddress::makeIpv66plane(
|
||||||
ZeroTier::Utils::hexStrToU64(nwid),ZeroTier::Utils::hexStrToU64(devID));
|
ZeroTier::Utils::hexStrToU64(nwid),ZeroTier::Utils::hexStrToU64(devID));
|
||||||
char ipbuf[INET6_ADDRSTRLEN];
|
char ipbuf[INET6_ADDRSTRLEN];
|
||||||
@@ -334,13 +343,16 @@ 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)
|
void zts_get_rfc4193_addr(char *addr, const char *nwid, const char *devID)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
ZeroTier::InetAddress _6planeAddr = ZeroTier::InetAddress::makeIpv6rfc4193(
|
ZeroTier::InetAddress _6planeAddr = ZeroTier::InetAddress::makeIpv6rfc4193(
|
||||||
ZeroTier::Utils::hexStrToU64(nwid),ZeroTier::Utils::hexStrToU64(devID));
|
ZeroTier::Utils::hexStrToU64(nwid),ZeroTier::Utils::hexStrToU64(devID));
|
||||||
char ipbuf[INET6_ADDRSTRLEN];
|
char ipbuf[INET6_ADDRSTRLEN];
|
||||||
memcpy(addr, _6planeAddr.toIpString(ipbuf), 40);
|
memcpy(addr, _6planeAddr.toIpString(ipbuf), 40);
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_join(const char * nwid) {
|
void zts_join(const char * nwid)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
std::string confFile = ZeroTier::zt1Service->givenHomePath() + "/networks.d/" + nwid + ".conf";
|
std::string confFile = ZeroTier::zt1Service->givenHomePath() + "/networks.d/" + nwid + ".conf";
|
||||||
if (ZeroTier::OSUtils::mkdir(ZeroTier::netDir) == false) {
|
if (ZeroTier::OSUtils::mkdir(ZeroTier::netDir) == false) {
|
||||||
@@ -361,7 +373,9 @@ void zts_join(const char * nwid) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_join_soft(const char * filepath, const char * nwid) {
|
void zts_join_soft(const char * filepath, const char * nwid)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
std::string net_dir = std::string(filepath) + "/networks.d/";
|
std::string net_dir = std::string(filepath) + "/networks.d/";
|
||||||
std::string confFile = net_dir + std::string(nwid) + ".conf";
|
std::string confFile = net_dir + std::string(nwid) + ".conf";
|
||||||
if (ZeroTier::OSUtils::mkdir(net_dir) == false) {
|
if (ZeroTier::OSUtils::mkdir(net_dir) == false) {
|
||||||
@@ -376,23 +390,30 @@ void zts_join_soft(const char * filepath, const char * nwid) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_leave(const char * nwid) {
|
void zts_leave(const char * nwid)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
ZeroTier::zt1Service->leave(nwid);
|
ZeroTier::zt1Service->leave(nwid);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_leave_soft(const char * filepath, const char * nwid) {
|
void zts_leave_soft(const char * filepath, const char * nwid)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
std::string net_dir = std::string(filepath) + "/networks.d/";
|
std::string net_dir = std::string(filepath) + "/networks.d/";
|
||||||
ZeroTier::OSUtils::rm((net_dir + nwid + ".conf").c_str());
|
ZeroTier::OSUtils::rm((net_dir + nwid + ".conf").c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_running() {
|
int zts_running()
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
return ZeroTier::zt1Service == NULL ? false : ZeroTier::zt1Service->isRunning();
|
return ZeroTier::zt1Service == NULL ? false : ZeroTier::zt1Service->isRunning();
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_start(const char *path)
|
int zts_start(const char *path)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
return 0; // already initialized, ok
|
return 0; // already initialized, ok
|
||||||
}
|
}
|
||||||
@@ -406,8 +427,9 @@ int zts_start(const char *path)
|
|||||||
return pthread_create(&service_thread, NULL, zts_start_service, NULL);
|
return pthread_create(&service_thread, NULL, zts_start_service, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_simple_start(const char *path, const char *nwid)
|
int zts_startjoin(const char *path, const char *nwid)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
ZT_NodeStatus status;
|
ZT_NodeStatus status;
|
||||||
int err = zts_start(path);
|
int err = zts_start(path);
|
||||||
while (zts_running() == false || ZeroTier::zt1Service->getNode() == NULL) {
|
while (zts_running() == false || ZeroTier::zt1Service->getNode() == NULL) {
|
||||||
@@ -437,7 +459,9 @@ int zts_simple_start(const char *path, const char *nwid)
|
|||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_stop() {
|
void zts_stop()
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
ZeroTier::zt1Service->terminate();
|
ZeroTier::zt1Service->terminate();
|
||||||
disableTaps();
|
disableTaps();
|
||||||
@@ -447,7 +471,9 @@ void zts_stop() {
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void zts_get_homepath(char *homePath, size_t len) {
|
void zts_get_homepath(char *homePath, size_t len)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::homeDir.length()) {
|
if (ZeroTier::homeDir.length()) {
|
||||||
memset(homePath, 0, len);
|
memset(homePath, 0, len);
|
||||||
size_t buf_len = len < ZeroTier::homeDir.length() ? len : ZeroTier::homeDir.length();
|
size_t buf_len = len < ZeroTier::homeDir.length() ? len : ZeroTier::homeDir.length();
|
||||||
@@ -455,7 +481,9 @@ void zts_get_homepath(char *homePath, size_t len) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_get_device_id(char *devID) {
|
int zts_get_device_id(char *devID)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
char id[ZTO_ID_LEN];
|
char id[ZTO_ID_LEN];
|
||||||
sprintf(id, "%lx",ZeroTier::zt1Service->getNode()->address());
|
sprintf(id, "%lx",ZeroTier::zt1Service->getNode()->address());
|
||||||
@@ -476,7 +504,9 @@ int zts_get_device_id(char *devID) {
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned long zts_get_peer_count() {
|
unsigned long zts_get_peer_count()
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
return ZeroTier::zt1Service->getNode()->peers()->peerCount;
|
return ZeroTier::zt1Service->getNode()->peers()->peerCount;
|
||||||
}
|
}
|
||||||
@@ -485,7 +515,9 @@ unsigned long zts_get_peer_count() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int zts_get_peer_address(char *peer, const char *devID) {
|
int zts_get_peer_address(char *peer, const char *devID)
|
||||||
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
if (ZeroTier::zt1Service) {
|
if (ZeroTier::zt1Service) {
|
||||||
ZT_PeerList *pl = ZeroTier::zt1Service->getNode()->peers();
|
ZT_PeerList *pl = ZeroTier::zt1Service->getNode()->peers();
|
||||||
// uint64_t addr;
|
// uint64_t addr;
|
||||||
@@ -501,12 +533,11 @@ int zts_get_peer_address(char *peer, const char *devID) {
|
|||||||
|
|
||||||
void zts_allow_http_control(bool allowed)
|
void zts_allow_http_control(bool allowed)
|
||||||
{
|
{
|
||||||
|
DEBUG_EXTRA();
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#if defined(SDK_JNI)
|
#if defined(SDK_JNI)
|
||||||
|
|
||||||
namespace ZeroTier {
|
namespace ZeroTier {
|
||||||
|
|||||||
1
test/alice/README.md
Normal file
1
test/alice/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**alice's** identity files and keys go here
|
||||||
1
test/bob/README.md
Normal file
1
test/bob/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**bob's** identity files and keys go here
|
||||||
1
test/carol/README.md
Normal file
1
test/carol/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**carol's** identity files and keys go here
|
||||||
16
test/carol/e5cd7a9e1c0fd272.conf
Normal file
16
test/carol/e5cd7a9e1c0fd272.conf
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
v=7
|
||||||
|
nwid=e5cd7a9e1c0fd272
|
||||||
|
ts=15cd93097cf
|
||||||
|
ctmd=6ddd00
|
||||||
|
r=4c
|
||||||
|
id=611fc8b606
|
||||||
|
f=6
|
||||||
|
ml=20
|
||||||
|
t=0
|
||||||
|
n=OPNET
|
||||||
|
mtu=af0
|
||||||
|
C=\0\0\0\0\0\0\0\0\0\0\0\\<5C>0<EFBFBD><30>\0\0\0\0\0m<30>\0\0\0\0\0\0\0\0<01><>z<EFBFBD><0F>r\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0aȶ<06><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>z<EFBFBD>!<21><>²<><C2B2><EFBFBD><1B>u<EFBFBD>r<EFBFBD><72><EFBFBD>xD<><44><11>q<EFBFBD><71>I<EFBFBD><03><><EFBFBD><EFBFBD>Y^#<23><>5<EFBFBD><r$<24><>IlI<10>};t5<74>J<EFBFBD>ϕ<07>/M<><4D><EFBFBD>!<21>Y<EFBFBD>t<EFBFBD><74><EFBFBD><EFBFBD><EFBFBD>J܂<4A><DC82>A<EFBFBD><41>*1.<2E><><EFBFBD>x
|
||||||
|
COO=<3D><>z<EFBFBD><0F>r\0\0\\<5C>0<EFBFBD><30>\0\0\0\0\0\0\0\0\0\0\0\0<03><><EFBFBD>z<EFBFBD><0F>r<EFBFBD><72>aȶ\n 4\0\0\0\0\0\0\0\0\0\0\0\0\n 4\0\0\0\0\0\0\0\0\0\0\0\0aȶ<06><>z<EFBFBD>\0`<60>8<EFBFBD><1E>CzGF<47><46>.<2E><>(&<26> <09><>ۍQ<16>>,H<><48><EFBFBD>z<01><>Ѕ<EFBFBD><D085>I<11><>t<EFBFBD>,NFK <20>6<EFBFBD>VO<>W<EFBFBD><57><EFBFBD><EFBFBD>ד<EFBFBD>a<EFBFBD><13><><EFBFBD>6[z[B<><42>C<EFBFBD><43>F<EFBFBD>Xw<58><77>\0\0
|
||||||
|
RT=\n \0\0\0\0\0\0\0\0
|
||||||
|
I=<06><><EFBFBD>z<EFBFBD><0F>r<EFBFBD><72>aȶ\0X\n 4\0\n 4\0
|
||||||
|
R=<3D>\0<><06><02><>\0\0\0
|
||||||
@@ -36,7 +36,7 @@ int main(int argc, char **argv)
|
|||||||
// --- BEGIN
|
// --- BEGIN
|
||||||
|
|
||||||
DEBUG_TEST("Waiting for libzt to come online...\n");
|
DEBUG_TEST("Waiting for libzt to come online...\n");
|
||||||
zts_simple_start(path.c_str(), nwid.c_str());
|
zts_startjoin(path.c_str(), nwid.c_str());
|
||||||
char device_id[11];
|
char device_id[11];
|
||||||
zts_get_device_id(device_id);
|
zts_get_device_id(device_id);
|
||||||
DEBUG_TEST("I am %s", device_id);
|
DEBUG_TEST("I am %s", device_id);
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ int main(int argc , char *argv[])
|
|||||||
|
|
||||||
// initialize library
|
// initialize library
|
||||||
printf("Starting libzt...\n");
|
printf("Starting libzt...\n");
|
||||||
zts_simple_start(argv[1], argv[2]);
|
zts_startjoin(argv[1], argv[2]);
|
||||||
char device_id[11];
|
char device_id[11];
|
||||||
zts_get_device_id(device_id);
|
zts_get_device_id(device_id);
|
||||||
fprintf(stderr, "Complete. I am %s\n", device_id);
|
fprintf(stderr, "Complete. I am %s\n", device_id);
|
||||||
|
|||||||
@@ -1759,7 +1759,84 @@ void tcp_perf_rx_echo_4(TCP_UNIT_TEST_SIG_4)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
int ZT_control_semantics_test(bool *passed)
|
||||||
|
{
|
||||||
|
// TODO: Each discrete operation should be tested in random order among every other discrete operation for a sustained period
|
||||||
|
|
||||||
|
/*
|
||||||
|
std::vector<ZT_VirtualNetworkRoute> *zts_get_network_routes(char *nwid);
|
||||||
|
int zts_get_device_id_from_file(const char *filepath, char *devID);
|
||||||
|
void *zts_start_service(void *thread_id);
|
||||||
|
void disableTaps();
|
||||||
|
void zts_get_ipv4_address(const char *nwid, char *addrstr, const size_t addrlen);
|
||||||
|
void zts_get_ipv6_address(const char *nwid, char *addrstr, const size_t addrlen);
|
||||||
|
int zts_has_ipv4_address(const char *nwid);
|
||||||
|
int zts_has_ipv6_address(const char *nwid);
|
||||||
|
int zts_has_address(const char *nwid);
|
||||||
|
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);
|
||||||
|
void zts_join(const char * nwid);
|
||||||
|
void zts_leave(const char * nwid);
|
||||||
|
int zts_running();
|
||||||
|
int zts_start(const char *path);
|
||||||
|
int zts_start(const char *path, const char *nwid);
|
||||||
|
void zts_stop();
|
||||||
|
void zts_get_homepath(char *homePath, size_t len);
|
||||||
|
int zts_get_device_id(char *devID);
|
||||||
|
unsigned long zts_get_peer_count();
|
||||||
|
int zts_get_peer_address(char *peer, const char *devID);
|
||||||
|
*/
|
||||||
|
|
||||||
|
int n_times = 5;
|
||||||
|
char *nwid = "17d709436c2c5367";
|
||||||
|
char *path = "fake_path";
|
||||||
|
/*
|
||||||
|
// Perform operations on ZeroTier before calling zts_start(). Doing this makes absolutely no sense but could happen
|
||||||
|
zts_stop();
|
||||||
|
zts_join(nwid);
|
||||||
|
zts_leave(nwid);
|
||||||
|
|
||||||
|
DEBUG_TEST("---\n");
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
|
// Perform operations on ZeroTier immediately upon startup, try to catch it with its pants down
|
||||||
|
// Ideally, the service wrapper should perform necessary checks to prevent any sort of issue
|
||||||
|
zts_start(path);
|
||||||
|
zts_join(nwid);
|
||||||
|
zts_leave(nwid);
|
||||||
|
zts_stop();
|
||||||
|
|
||||||
|
DEBUG_TEST("---\n");
|
||||||
|
sleep(1);
|
||||||
|
*/
|
||||||
|
zts_start(path);
|
||||||
|
zts_join(nwid);
|
||||||
|
zts_leave(nwid);
|
||||||
|
zts_stop();
|
||||||
|
|
||||||
|
DEBUG_TEST("---\n");
|
||||||
|
sleep(1);
|
||||||
|
/*
|
||||||
|
// start the ZeroTier service many times
|
||||||
|
for (int i=0; i<n_times; i++) { zts_start(path); }
|
||||||
|
|
||||||
|
// join the same network many times
|
||||||
|
for (int i=0; i<n_times; i++) { zts_join(nwid); }
|
||||||
|
|
||||||
|
// leave the same network many times
|
||||||
|
for (int i=0; i<n_times; i++) { zts_leave(nwid); }
|
||||||
|
|
||||||
|
// stop the ZeroTier service many times
|
||||||
|
for (int i=0; i<n_times; i++) { zts_stop(); }
|
||||||
|
*/
|
||||||
|
DEBUG_TEST("---\n");
|
||||||
|
sleep(1);
|
||||||
|
|
||||||
|
|
||||||
|
sleep(30); // wait for any aftermath
|
||||||
|
*passed = true;
|
||||||
|
DEBUG_TEST("PASSED");
|
||||||
|
}
|
||||||
|
|
||||||
/****************************************************************************/
|
/****************************************************************************/
|
||||||
/* OBSCURE API CALL TESTS */
|
/* OBSCURE API CALL TESTS */
|
||||||
@@ -2620,36 +2697,38 @@ int main(int argc , char *argv[])
|
|||||||
fprintf(stderr, "\tremote_echo_ipv4 = %s\n", remote_echo_ipv4.c_str());
|
fprintf(stderr, "\tremote_echo_ipv4 = %s\n", remote_echo_ipv4.c_str());
|
||||||
|
|
||||||
#if defined(__SELFTEST__)
|
#if defined(__SELFTEST__)
|
||||||
// set start time here since we need to wait for both libzt instances to be online
|
|
||||||
long int selftest_start_time = get_now_ts();
|
long int selftest_start_time = get_now_ts();
|
||||||
subtest_expected_duration = 5;
|
subtest_expected_duration = 5;
|
||||||
|
|
||||||
DEBUG_TEST("Waiting for libzt to come online...\n");
|
if (me != "dummy") { // used for testing ZT service wrapper API (before, during, and after coming online)
|
||||||
zts_simple_start(path.c_str(), nwid.c_str());
|
// set start time here since we need to wait for both libzt instances to be online
|
||||||
char device_id[ZTO_ID_LEN];
|
DEBUG_TEST("Waiting for libzt to come online...\n");
|
||||||
zts_get_device_id(device_id);
|
zts_startjoin(path.c_str(), nwid.c_str());
|
||||||
DEBUG_TEST("I am %s, %s", device_id, me.c_str());
|
char device_id[ZTO_ID_LEN];
|
||||||
if (mode == TEST_MODE_SERVER) {
|
zts_get_device_id(device_id);
|
||||||
DEBUG_TEST("Ready. You should start selftest program on second host now...\n\n");
|
DEBUG_TEST("I am %s, %s", device_id, me.c_str());
|
||||||
}
|
if (mode == TEST_MODE_SERVER) {
|
||||||
if (mode == TEST_MODE_CLIENT) {
|
DEBUG_TEST("Ready. You should start selftest program on second host now...\n\n");
|
||||||
DEBUG_TEST("Ready. Contacting selftest program on first host.\n\n");
|
}
|
||||||
|
if (mode == TEST_MODE_CLIENT) {
|
||||||
|
DEBUG_TEST("Ready. Contacting selftest program on first host.\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// What follows is a long-form of zts_start():
|
||||||
|
/*
|
||||||
|
zts_start(path.c_str());
|
||||||
|
printf("waiting for service to start...\n");
|
||||||
|
while (zts_running() == false)
|
||||||
|
sleep(1);
|
||||||
|
printf("joining network...\n");
|
||||||
|
zts_join(nwid.c_str());
|
||||||
|
printf("waiting for address assignment...\n");
|
||||||
|
while (zts_has_address(nwid.c_str()) == false)
|
||||||
|
sleep(1);
|
||||||
|
*/
|
||||||
}
|
}
|
||||||
#endif // __SELFTEST__
|
#endif // __SELFTEST__
|
||||||
|
|
||||||
// What follows is a long-form of zts_simple_start():
|
|
||||||
/*
|
|
||||||
zts_start(path.c_str());
|
|
||||||
printf("waiting for service to start...\n");
|
|
||||||
while (zts_running() == false)
|
|
||||||
sleep(1);
|
|
||||||
printf("joining network...\n");
|
|
||||||
zts_join(nwid.c_str());
|
|
||||||
printf("waiting for address assignment...\n");
|
|
||||||
while (zts_has_address(nwid.c_str()) == false)
|
|
||||||
sleep(1);
|
|
||||||
*/
|
|
||||||
|
|
||||||
for (int i=0; i<num_repeats; i++)
|
for (int i=0; i<num_repeats; i++)
|
||||||
{
|
{
|
||||||
DEBUG_TEST("\n\n\n --- COMPREHENSIVE TEST ITERATION: %d out of %d ---\n\n\n", i, num_repeats);
|
DEBUG_TEST("\n\n\n --- COMPREHENSIVE TEST ITERATION: %d out of %d ---\n\n\n", i, num_repeats);
|
||||||
@@ -2693,6 +2772,12 @@ for (int i=0; i<num_repeats; i++)
|
|||||||
obscure_api_test(&passed);
|
obscure_api_test(&passed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Test things like zts_start(), zts_stop(), zts_join(), etc
|
||||||
|
if (true) {
|
||||||
|
ZT_control_semantics_test(&passed);
|
||||||
|
}
|
||||||
|
exit(0);
|
||||||
|
|
||||||
// Spam a SOCK_DGRAM socket from many threads
|
// Spam a SOCK_DGRAM socket from many threads
|
||||||
if (false) {
|
if (false) {
|
||||||
ipv = 4;
|
ipv = 4;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
|
|
||||||
DEBUG_TEST("Waiting for libzt to come online...\n");
|
DEBUG_TEST("Waiting for libzt to come online...\n");
|
||||||
zts_simple_start(path.c_str(), nwid.c_str());
|
zts_startjoin(path.c_str(), nwid.c_str());
|
||||||
char device_id[11];
|
char device_id[11];
|
||||||
zts_get_device_id(device_id);
|
zts_get_device_id(device_id);
|
||||||
DEBUG_TEST("I am %s", device_id);
|
DEBUG_TEST("I am %s", device_id);
|
||||||
|
|||||||
1
test/ted/README.md
Normal file
1
test/ted/README.md
Normal file
@@ -0,0 +1 @@
|
|||||||
|
**ted's** identity files and keys go here
|
||||||
77
test/test.conf
Normal file
77
test/test.conf
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
name dummy
|
||||||
|
mode none
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path test/dummy
|
||||||
|
ipv4 -1.-1.-1.-1
|
||||||
|
ipv6 [::]
|
||||||
|
echo_ipv4 -1.-1.-1.-1
|
||||||
|
echo_ipv6 [::]
|
||||||
|
echo_port 7100
|
||||||
|
dns_ipv4 -1.-1.-1.-1
|
||||||
|
|
||||||
|
name alice
|
||||||
|
mode server
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path test/alice
|
||||||
|
ipv4 172.30.30.10
|
||||||
|
ipv6 fd17:d709:436c:2c53:6799:93c4:0fe0:4bb8
|
||||||
|
echo_ipv4 172.30.30.1
|
||||||
|
echo_ipv6 fd17:d709:436c:2c53:6799:9322:30ce:418a
|
||||||
|
echo_port 7100
|
||||||
|
dns_ipv4 1.2.3.4
|
||||||
|
|
||||||
|
name bob
|
||||||
|
mode client
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path test/bob
|
||||||
|
ipv4 172.30.30.20
|
||||||
|
ipv6 fd17:d709:436c:2c53:6799:93e1:b555:8c83
|
||||||
|
echo_ipv4 172.30.30.2
|
||||||
|
echo_ipv6 fd17:d709:436c:2c53:6799:93a1:42ef:0285
|
||||||
|
echo_port 7101
|
||||||
|
dns_ipv4 1.2.3.4
|
||||||
|
|
||||||
|
name carol
|
||||||
|
mode client
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path test/carol
|
||||||
|
ipv4 172.30.30.31
|
||||||
|
ipv6 fd17:d709:436c:2c53:6799:9361:1fc8:b606
|
||||||
|
echo_ipv4 172.30.30.3
|
||||||
|
echo_ipv6 fd17:d709:436c:2c53:6799:936f:341a:b379
|
||||||
|
echo_port 7100
|
||||||
|
dns_ipv4 1.2.3.4
|
||||||
|
|
||||||
|
name ted
|
||||||
|
mode server
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path test/ted
|
||||||
|
ipv4 172.30.30.11
|
||||||
|
ipv6 fd17:d709:436c:2c53:6799:93a5:634e:6b06
|
||||||
|
echo_ipv4 172.30.30.1
|
||||||
|
echo_ipv6 fd17:d709:436c:2c53:6799:9322:30ce:418a
|
||||||
|
echo_port 7101
|
||||||
|
dns_ipv4 1.2.3.4
|
||||||
|
|
||||||
|
name native
|
||||||
|
mode client
|
||||||
|
nwid 17d709436c2c5367
|
||||||
|
test comprehensive
|
||||||
|
port 8000
|
||||||
|
path none
|
||||||
|
ipv4 172.30.30.1
|
||||||
|
ipv6 fd17:d709:436c:2c53:6799:9360:0b4d:c3cf
|
||||||
|
echo_ipv4 none
|
||||||
|
echo_ipv6 none
|
||||||
|
echo_port none
|
||||||
|
dns_ipv4 1.2.3.4
|
||||||
Reference in New Issue
Block a user