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 f765e29027 Updated java example 8 years ago
attic Removed cruft from project 8 years ago
examples Updated java example 8 years ago
ext Submodule patches now called from Makefile (e.g. make patch) 8 years ago
include Removed reference to DEBUG_* macros in examples and libzt proper 8 years ago
packages Turned off stack debugs 8 years ago
src Removed reference to DEBUG_* macros in examples and libzt proper 8 years ago
test Updated lwip.patch for Linux compatibility, CMakeLists.txt, and fixed other minor compile-time warnings 8 years ago
.gitignore Added gradle files for Android project 8 years ago
.gitmodules Added lwip, lwip-contrib, ZeroTierOne submodules to ext 8 years ago
CMakeLists.txt Added patch for lwip-contrib for Windows compatibility 8 years ago
Jenkinsfile Updated Jenkinsfile for cmake usage 8 years ago
LICENSE.GPL-3 Added license files for libzt and lwip 9 years ago
Makefile Submodule patches now called from Makefile (e.g. make patch) 8 years ago
README.md Updated README 8 years ago

README.md

libzt

Library version of ZeroTier


libzt makes it easy to securely connect devices, servers, cloud VMs, containers, and apps everywhere and manage them at scale. We provide a socket-like API supporting SOCK_STREAM, SOCK_DGRAM, and SOCK_RAW. There's no need for system-wide virtual interfaces. This connection is exclusive to your app and fully encrypted via the Salsa20 cipher. For a more in-depth discussion on the technical side of ZeroTier, check out our Manual


irc


C++ Example

#include <sys/socket.h>
#include <arpa/inet.h>
#include <netinet/in.h>

#include "libzt.h"

int main() 
{
	char *str = "welcome to the machine";
	char *remoteIp = "10.8.8.42";
	int remotePort = 8080;
	int fd, err = 0;
	struct sockaddr_in addr;
	addr.sin_family = AF_INET;
	addr.sin_addr.s_addr = inet_addr(remoteIp);
	addr.sin_port = htons(remotePort);

	zts_startjoin("path", 0xc7cd7c981b0f52a2); // config path, network ID

	if ((fd = zts_socket(AF_INET, SOCK_STREAM, 0)) < 0) {
		printf("error creating socket\n");
	}
	if ((err = zts_connect(fd, (const struct sockaddr *)&addr, sizeof(addr))) < 0) {
		printf("error connecting to remote host\n");
	}
	if ((err = zts_write(fd, str, strlen(str))) < 0) {
		printf("error writing to socket\n");
	}

	zts_close(fd);
	zts_stop();
	return 0;
}

For an example using only the Virtual Layer 2, see examples/layer2


Build

We recommend using CMake and clang.

git submodule init
git submodule update
make patch
cmake -H. -Bbuild
cmake --build build --config Release 

Builds are placed in bin\lib. Use --config Debug for a build with debug info included.


Commercial License

If you want a commercial license to use libzt in your product contact us directly via contact@zerotier.com