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.
 
 
 
 
 
 

2.8 KiB

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 -DCMAKE_BUILD_TYPE=Release

or possibly:

cmake -H. -Bbuild --config Release

Then

cmake --build build 

Builds are placed in bin\lib


Commercial License

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