diff --git a/docs/linux_zt_sdk.md b/docs/linux_zt_sdk.md index 5c15b24..67198dc 100644 --- a/docs/linux_zt_sdk.md +++ b/docs/linux_zt_sdk.md @@ -18,7 +18,7 @@ See [doc/docker_linux_zt_sdk.md](doc/docker_linux_zt_sdk.md) ``` make linux_shared_lib mkdir /tmp/sdk-test-home -cp -f build/liblwip.so /tmp/sdk-test-home +cp -f build/lwip/liblwip.so /tmp/sdk-test-home ``` **Step 2: Start service and join network** @@ -37,7 +37,7 @@ cp -f build/liblwip.so /tmp/sdk-test-home **Step 4: Set environment variables** ``` -export LD_PRELOAD=`pwd`/build/libztintercept.so +export LD_PRELOAD=`pwd`/build/linux_shared_lib/libztintercept.so export ZT_NC_NETWORK=/tmp/sdk-test-home/nc_8056c2e21c000001 ``` @@ -59,7 +59,7 @@ Build the library: `make linux_shared_lib` -This will build a binary called `zerotier-sdk-service` and a library called `libztintercept.so`. It will also build the IP stack as `build/liblwip.so`. +This will build a binary called `zerotier-sdk-service` and a library called `libztintercept.so`. It will also build the IP stack as `build/lwip/liblwip.so`. The `zerotier-sdk-service` binary is almost the same as a regular ZeroTier One build except instead of creating virtual network ports using Linux's `/dev/net/tun` interface, it creates instances of a user-space TCP/IP stack for each virtual network and provides RPC access to this stack via a Unix domain socket. The latter is a library that can be loaded with the Linux `LD_PRELOAD` environment variable or by placement into `/etc/ld.so.preload` on a Linux system or container. Additional magic involving nameless Unix domain socket pairs and interprocess socket handoff is used to emulate TCP sockets with extremely low overhead and in a way that's compatible with select, poll, epoll, and other I/O event mechanisms. @@ -75,7 +75,7 @@ A simple test can be performed in user space (no root) in your own home director First, build the SDK service and intercept library as described above. Then create a directory to act as a temporary ZeroTier home for your test SDK service instance. You'll need to move the `liblwip.so` binary that was built with `make linux_shared_lib` into there, since the service must be able to find it there and load it. mkdir /tmp/sdk-test-home - cp -f build/liblwip.so /tmp/sdk-test-home + cp -f build/lwip/liblwip.so /tmp/sdk-test-home Now you can run the service (no sudo needed, and `-d` tells it to run in the background): @@ -105,7 +105,7 @@ The `zerotier-sdk-service` binary has joined a *virtual* network and is running Now you can run an application . - export LD_PRELOAD=`pwd`/build/libztintercept.so + export LD_PRELOAD=`pwd`/build/linux_shared_lib/libztintercept.so export ZT_NC_NETWORK=/tmp/sdk-test-home/nc_8056c2e21c000001 node tests/httpserver.js