From aa9b514c0b874d649fbb99206cc7823be78d9703 Mon Sep 17 00:00:00 2001 From: Joseph Henry Date: Mon, 27 Jun 2016 14:15:58 -0700 Subject: [PATCH] updated flags --- integrations/Docker/README.md | 2 +- integrations/README.md | 2 +- .../project.pbxproj | 32 +++++++++--------- .../UserInterfaceState.xcuserstate | Bin 60426 -> 57932 bytes make-linux.mk | 4 +-- src/SDK_Debug.c | 8 ++--- src/SDK_EthernetTap.cpp | 2 +- src/SDK_RPC.c | 2 +- src/SDK_Sockets.c | 3 ++ tests/kq/build.sh | 2 +- 10 files changed, 30 insertions(+), 27 deletions(-) diff --git a/integrations/Docker/README.md b/integrations/Docker/README.md index bfd4bf1..841a95a 100644 --- a/integrations/Docker/README.md +++ b/integrations/Docker/README.md @@ -9,7 +9,7 @@ This short tutorial will show you how to enable ZeroTier functionality for your **Step 1: Build the ZeroTier service binaries** -From the ZeroTier source directory, `make netcon` Optionally, if you'd like to see some debug output during execution, use `make sdk ZT_SDK_DEBUG=1` +From the ZeroTier source directory, `make netcon` Optionally, if you'd like to see some debug output during execution, use `make sdk SDK_DEBUG=1` **Step 2: Build your Docker image** diff --git a/integrations/README.md b/integrations/README.md index 22a3879..bff41d8 100644 --- a/integrations/README.md +++ b/integrations/README.md @@ -1,7 +1,7 @@ ZeroTier Integrations ==== -If you want everything built at once, type `make all` and go play outside for a few minutes, we'll copy all of the targets into the `build` directory for you along with specific instructions on how to use each binary. +If you want everything built at once, type `make all` and go play outside for a few minutes, we'll copy all of the targets into the `build` directory for you along with specific instructions on how to use each binary. You can then use `make -s check` to check the build status of each binary target. *NOTE for Apple platforms: In order to build iOS/OSX Frameworks and Bundles you will need XCode command line tools `xcode-select --install`* diff --git a/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj b/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj index b8eaa7f..b3e3921 100644 --- a/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj +++ b/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.pbxproj @@ -1376,8 +1376,8 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; OTHER_CFLAGS = ( "-D__UNITY_3D__", - "-DZT_SDK", - "-DZT_SDK_DEBUG", + "-DSDK", + "-DSDK_DEBUG", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1401,8 +1401,8 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; OTHER_CFLAGS = ( "-D__UNITY_3D__", - "-DZT_SDK", - "-DZT_SDK_DEBUG", + "-DSDK", + "-DSDK_DEBUG", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-iOS"; PRODUCT_NAME = "$(TARGET_NAME)"; @@ -1430,8 +1430,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; OTHER_CFLAGS = ( - "-DZT_SDK_DEBUG", - "-DZT_SDK", + "-DSDK_DEBUG", + "-DSDK", "-D__IOS__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-iOS"; @@ -1460,8 +1460,8 @@ IPHONEOS_DEPLOYMENT_TARGET = 9.3; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; OTHER_CFLAGS = ( - "-DZT_SDK_DEBUG", - "-DZT_SDK", + "-DSDK_DEBUG", + "-DSDK", "-D__IOS__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-iOS"; @@ -1491,8 +1491,8 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; OTHER_CFLAGS = ( - "-DZT_SDK", - "-DZT_SDK_DEBUG", + "-DSDK", + "-DSDK_DEBUG", "-D__XCODE__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-OSX"; @@ -1519,8 +1519,8 @@ INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; OTHER_CFLAGS = ( - "-DZT_SDK", - "-DZT_SDK_DEBUG", + "-DSDK", + "-DSDK_DEBUG", "-D__XCODE__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-OSX"; @@ -1541,8 +1541,8 @@ INFOPLIST_FILE = ZeroTierSDK_Unity3D_OSX/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; OTHER_CFLAGS = ( - "-DZT_SDK_DEBUG", - "-DZT_SDK", + "-DSDK_DEBUG", + "-DSDK", "-D__UNITY_3D__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-OSX"; @@ -1564,8 +1564,8 @@ INFOPLIST_FILE = ZeroTierSDK_Unity3D_OSX/Info.plist; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Bundles"; OTHER_CFLAGS = ( - "-DZT_SDK_DEBUG", - "-DZT_SDK", + "-DSDK_DEBUG", + "-DSDK", "-D__UNITY_3D__", ); PRODUCT_BUNDLE_IDENTIFIER = "zerotier.ZeroTierSDK-Unity3D-OSX"; diff --git a/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate b/integrations/apple/ZeroTierSDK_Apple/ZeroTierSDK_Apple.xcodeproj/project.xcworkspace/xcuserdata/Joseph.xcuserdatad/UserInterfaceState.xcuserstate index e32508f24c62248ae7c82a10d69efe0473c182cb..61649db0ba61a61cc5ed1e6baa1f0cabec62b67c 100644 GIT binary patch literal 57932 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 EKe+5j8vp DEBUG_LEVEL) return; int saveerr; @@ -75,10 +75,10 @@ void dwr(int level, const char *fmt, ... ) #elif defined(__APPLE__) pid_t tid = pthread_mach_thread_np(pthread_self()); #endif - if(DEBUG_TO_FILE) { + #if defined(SDK_DEBUG_WRITE_LOGFILE) FILE *file = fopen(DEBUG_LOGFILE_PATH,"a"); vfprintf(file, fmt, ap); - } + #endif fprintf(stderr, "%s [tid=%7d] ", timestring, tid); vfprintf(stderr, fmt, ap); fflush(stderr); diff --git a/src/SDK_EthernetTap.cpp b/src/SDK_EthernetTap.cpp index 0f567e6..0940a09 100644 --- a/src/SDK_EthernetTap.cpp +++ b/src/SDK_EthernetTap.cpp @@ -132,7 +132,7 @@ NetconEthernetTap::NetconEthernetTap( char sockPath[4096],lwipPath[4096]; rpcCounter = -1; Utils::snprintf(sockPath,sizeof(sockPath),"%s%snc_%.16llx",homePath,ZT_PATH_SEPARATOR_S,_nwid,ZT_PATH_SEPARATOR_S,(unsigned long long)nwid); - _dev = sockPath; // in netcon mode, set device to be just the network ID + _dev = sockPath; // in SDK mode, set device to be just the network ID // Start SOCKS5 Proxy server // For use when traditional syscall hooking isn't available (ex. some APIs on iOS and Android) diff --git a/src/SDK_RPC.c b/src/SDK_RPC.c index 0f54b78..3a06277 100644 --- a/src/SDK_RPC.c +++ b/src/SDK_RPC.c @@ -103,7 +103,7 @@ int get_retval(int rpc_sock) int load_symbols_rpc() { -#if defined(NETCON_INTERCEPT) || defined(__IOS__) || defined(__UNITY_3D__) +#if defined(SDK_INTERCEPT) || defined(__IOS__) || defined(__UNITY_3D__) realsocket = dlsym(RTLD_NEXT, "socket"); realconnect = dlsym(RTLD_NEXT, "connect"); if(!realconnect || !realsocket) diff --git a/src/SDK_Sockets.c b/src/SDK_Sockets.c index 166f162..f529c3b 100644 --- a/src/SDK_Sockets.c +++ b/src/SDK_Sockets.c @@ -94,6 +94,7 @@ const char *get_netpath() { void zt_init_rpc(char *nwid) { + dwr(MSG_DEBUG, "zt_init_rpc\n"); #if defined(__UNITY_3D__) //char *nw = "565799d8f6e1c11a"; //char *path = "/Users/Joseph/utest2/nc_"; @@ -133,6 +134,8 @@ const char *get_netpath() { if (!api_netpath) { api_netpath = getenv("ZT_NC_NETWORK"); set_netpath(api_netpath); + + dwr(MSG_DEBUG, "netpath = %s\n", api_netpath); if(!api_netpath) { // return 0; } diff --git a/tests/kq/build.sh b/tests/kq/build.sh index 3c86554..898ec18 100755 --- a/tests/kq/build.sh +++ b/tests/kq/build.sh @@ -1,4 +1,4 @@ -gcc kq_test_client.c ../../kq.c ../../zt_api.c ../../RPC.c -DZT_SDK_DEBUG -DNETCON_INTERCEPT -o kq_test_client +gcc kq_test_client.c ../../kq.c ../../zt_api.c ../../RPC.c -DSDK_DEBUG -DNETCON_INTERCEPT -o kq_test_client #gcc kq_test_server.c ../../kq.c -o kq_test_server gcc server.c -o server