You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Joseph Henry c6f20df8da Added examples/apple 9 years ago
artwork Updated tests 9 years ago
examples Added examples/apple 9 years ago
ext Updated tests 9 years ago
include Updated tests 9 years ago
src Updated tests 9 years ago
test Updated tests 9 years ago
zt1/networks.d Updated tests 9 years ago
zt2/networks.d Updated tests 9 years ago
zto updated ZTO core 9 years ago
.gitignore wider selftest coverage 9 years ago
Makefile various bug fixes 9 years ago
README.md Added examples/apple 9 years ago
check.sh dynamic loading of network stack no longer needed 9 years ago
make-linux.mk wider selftest coverage 9 years ago
make-mac.mk wider selftest coverage 9 years ago
objects.mk dynamic loading of network stack no longer needed 9 years ago

README.md

ZeroTier SDK: Embed ZeroTier directly into your app

ZeroTier makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. Now, with the SDK you can bake this ability directly into your application or service using your preferred language. We provide a BSD socket-like API to make the integration simple.


irc

Pre-Built Binaries/Packages Here: zerotier.com/download.shtml.

Example

char *str = "welcome to the machine";
char *nwid = "c7cd7c9e1b0f52a2";

zts_simple_start("./zt", nwid);
if((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
	printf("error creating ZeroTier socket");
}
if((err = zts_connect(fd, (const struct sockaddr *)addr, sizeof(addr))) < 0) {
	printf("error (%d) connecting to remote host\n", err);
}
int wrote = zts_write(fd, str, strlen(str));
zts_close(fd);

Bindings also exist for many popular languages.

Build Targets

Static Library

  • make static_lib SDK_IPV4=1: Will output to build/

Tests (After building a static library)

  • make tests: Will output to build/tests/

Then run the unit test suite with whatever configuration you need. For instance:

To run a single-test IPv4 client/server test. Where $PLATFORM is linux, darwin or win:

  • Host 1: ./build/$PLATFORM/test/selftest zt1 c7cd7c9e1b0f52a2 simple 4 server 10.9.9.40 8787
  • Host 2: ./build/$PLATFORM/test/selftest zt2 c7cd7c9e1b0f52a2 simple 4 client 10.9.9.40 8787

To run a multi-message IPv4 client/server test:

  • Host 1: ./build/$PLATFORM/test/test/unit zt2 c7cd7c9e1b0f52a2 simple 4 server 10.9.9.40 8787 n_bytes 100 50

  • Host 2: ./build/$PLATFORM/test/test/unit zt2 c7cd7c9e1b0f52a2 simple 4 client 10.9.9.40 8787 n_bytes 100 50

  • For more unit test examples, see the testing page

IP version flags

  • SDK_IPV4=1
  • SDK_IPV6=1

Using Language Bindings

  • SDK_LANG_JNI=1: Enable JNI bindings for Java (produces a shared library)
  • SDK_LANG_CSHARP=1
  • SDK_LANG_PYTHON=1
  • SDK_LANG_GO=1

Debugging flags

  • SDK_DEBUG=1 - Enable SDK library debugging
  • ZT_DEBUG=1 - Enable core ZeroTier service debugging