diff --git a/CMakeLists.txt b/CMakeLists.txt index eef216d..3e2b451 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,43 +2,41 @@ cmake_minimum_required(VERSION 3.0) project(zt) find_package(Threads) -set (CMAKE_BUILD_PARALLEL_LEVEL 8) - # ------------------------------------------------------------------------------ # | PLATFORM DETECTION | # ------------------------------------------------------------------------------ # Apple if(${CMAKE_SYSTEM_NAME} MATCHES "Darwin") - set(BUILD_DARWIN TRUE) + set(BUILD_DARWIN TRUE) endif() # macOS if(BUILD_DARWIN AND NOT BUILD_IOS_FRAMEWORK) - set(BUILD_MACOS TRUE) + set(BUILD_MACOS TRUE) endif() if(${CMAKE_GENERATOR} STREQUAL "Xcode") - set(IN_XCODE TRUE) - set(XCODE_EMIT_EFFECTIVE_PLATFORM_NAME ON) + set(IN_XCODE TRUE) + set(XCODE_EMIT_EFFECTIVE_PLATFORM_NAME ON) endif() # Target names if(IN_XCODE) - set(XCODE_FRAMEWORK_NAME ${PROJECT_NAME}) + set(XCODE_FRAMEWORK_NAME ${PROJECT_NAME}) endif() # Windows if(WIN32) - set(BUILD_WIN32 TRUE) + set(BUILD_WIN32 TRUE) endif() if("${CMAKE_GENERATOR}" MATCHES "(Win64|IA64)") - set(BUILD_WIN64 TRUE) + set(BUILD_WIN64 TRUE) endif() if(BUILD_WIN32 - OR BUILD_WIN64 - OR MSVC) - set(BUILD_WIN TRUE) + OR BUILD_WIN64 + OR MSVC) + set(BUILD_WIN TRUE) endif() # Linux @@ -57,11 +55,11 @@ set(LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib) set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}) set(INTERMEDIATE_LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib/intermediate) if(UNIX) - set(LWIP_PORT_DIR ${PROJ_DIR}/ext/lwip-contrib/ports/unix/port) + set(LWIP_PORT_DIR ${PROJ_DIR}/ext/lwip-contrib/ports/unix/port) endif() if(BUILD_WIN) - set(LWIP_PORT_DIR ${PROJ_DIR}/ext/lwip-contrib/ports/win32) + set(LWIP_PORT_DIR ${PROJ_DIR}/ext/lwip-contrib/ports/win32) endif() # ------------------------------------------------------------------------------ @@ -96,116 +94,116 @@ set(BUILD_HOST_SELFTEST TRUE) # C# language bindings (libzt.dll/dylib/so) if (ZTS_ENABLE_PINVOKE) - # Features - set(BUILD_STATIC_LIB FALSE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(BUILD_HOST_SELFTEST FALSE) - # Sources and libraries - set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/csharp/*.cxx) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_PINVOKE=1") + # Features + set(BUILD_STATIC_LIB FALSE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(BUILD_HOST_SELFTEST FALSE) + # Sources and libraries + set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/csharp/*.cxx) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_PINVOKE=1") endif() # Python language bindings (_libzt.so) if (ZTS_ENABLE_PYTHON) - # Features - set(ZTS_ENABLE_PYTHON TRUE) - #set(ZTS_ENABLE_STATS FALSE) - # Targets - set(BUILD_STATIC_LIB FALSE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(BUILD_HOST_SELFTEST FALSE) - # Sources and libraries - find_package(PythonLibs REQUIRED) - include_directories(${PYTHON_INCLUDE_DIRS}) - set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/python/*.cxx) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_PYTHON=1") + # Features + set(ZTS_ENABLE_PYTHON TRUE) + #set(ZTS_ENABLE_STATS FALSE) + # Targets + set(BUILD_STATIC_LIB FALSE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(BUILD_HOST_SELFTEST FALSE) + # Sources and libraries + find_package(PythonLibs REQUIRED) + include_directories(${PYTHON_INCLUDE_DIRS}) + set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/python/*.cxx) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_PYTHON=1") endif() # Java language bindings if (ZTS_ENABLE_JAVA) - set(BUILD_STATIC_LIB FALSE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_HOST_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(BUILD_HOST_SELFTEST FALSE) - set(ZTS_ENABLE_STATS FALSE) - set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/java/*.cxx) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_JAVA=1") + set(BUILD_STATIC_LIB FALSE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_HOST_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(BUILD_HOST_SELFTEST FALSE) + set(ZTS_ENABLE_STATS FALSE) + set(LANG_WRAPPER_FILE ${LIBZT_SRC_DIR}/bindings/java/*.cxx) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_JAVA=1") endif() # All native targets for this host if(BUILD_HOST) - set(BUILD_STATIC_LIB TRUE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_HOST_EXAMPLES TRUE) - set(ALLOW_INSTALL_TARGET TRUE) - set(BUILD_HOST_SELFTEST FALSE) - set(ZTS_ENABLE_STATS TRUE) + set(BUILD_STATIC_LIB TRUE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_HOST_EXAMPLES TRUE) + set(ALLOW_INSTALL_TARGET TRUE) + set(BUILD_HOST_SELFTEST FALSE) + set(ZTS_ENABLE_STATS TRUE) endif() # CI if(BUILD_HOST_SELFTEST_ONLY) - set(BUILD_STATIC_LIB TRUE) - set(BUILD_SHARED_LIB FALSE) - set(BUILD_HOST_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(BUILD_HOST_SELFTEST TRUE) - set(ZTS_ENABLE_STATS FALSE) + set(BUILD_STATIC_LIB TRUE) + set(BUILD_SHARED_LIB FALSE) + set(BUILD_HOST_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(BUILD_HOST_SELFTEST TRUE) + set(ZTS_ENABLE_STATS FALSE) endif() # Android AAR containing libzt.so if(${CMAKE_SYSTEM_NAME} MATCHES "Android") - set(BUILD_ANDROID TRUE) - set(BUILD_STATIC_LIB FALSE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_HOST_SELFTEST FALSE) - set(BUILD_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) + set(BUILD_ANDROID TRUE) + set(BUILD_STATIC_LIB FALSE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_HOST_SELFTEST FALSE) + set(BUILD_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) endif() if(BUILD_MACOS_FRAMEWORK) - set(BUILD_STATIC_LIB TRUE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_HOST_SELFTEST FALSE) - set(BUILD_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOMIT_JSON_SUPPORT=1") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DOMIT_JSON_SUPPORT=1") - set(CMAKE_XCODE_ATTRIBUTE_ARCHS "$(ARCHS_STANDARD)") - set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH NO) - include_directories( - "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/") + set(BUILD_STATIC_LIB TRUE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_HOST_SELFTEST FALSE) + set(BUILD_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOMIT_JSON_SUPPORT=1") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DOMIT_JSON_SUPPORT=1") + set(CMAKE_XCODE_ATTRIBUTE_ARCHS "$(ARCHS_STANDARD)") + set(CMAKE_XCODE_ATTRIBUTE_ONLY_ACTIVE_ARCH NO) + include_directories( + "/Library/Developer/CommandLineTools/SDKs/MacOSX11.0.sdk/usr/include/") endif() if(BUILD_IOS_FRAMEWORK) - set(BUILD_STATIC_LIB TRUE) - set(BUILD_SHARED_LIB TRUE) - set(BUILD_HOST_SELFTEST FALSE) - set(BUILD_EXAMPLES FALSE) - set(ALLOW_INSTALL_TARGET FALSE) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOMIT_JSON_SUPPORT=1") - set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DOMIT_JSON_SUPPORT=1") - set(DEVROOT - "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer") - if(IOS_ARM64) - set(CMAKE_OSX_ARCHITECTURES arm64) - set(SDKVER "11.4") - endif() - if(IOS_ARMV7) - # armv7 armv7s - set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)") - set(SDKVER "10.0") - endif() - set(SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk") - if(EXISTS ${SDKROOT}) - set(CMAKE_OSX_SYSROOT "${SDKROOT}") - else() - message("Warning, iOS Base SDK path not found: " ${SDKROOT}) - endif() + set(BUILD_STATIC_LIB TRUE) + set(BUILD_SHARED_LIB TRUE) + set(BUILD_HOST_SELFTEST FALSE) + set(BUILD_EXAMPLES FALSE) + set(ALLOW_INSTALL_TARGET FALSE) + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DOMIT_JSON_SUPPORT=1") + set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DOMIT_JSON_SUPPORT=1") + set(DEVROOT + "/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer") + if(IOS_ARM64) + set(CMAKE_OSX_ARCHITECTURES arm64) + set(SDKVER "11.4") + endif() + if(IOS_ARMV7) + # armv7 armv7s + set(CMAKE_OSX_ARCHITECTURES "$(ARCHS_STANDARD_32_BIT)") + set(SDKVER "10.0") + endif() + set(SDKROOT "${DEVROOT}/SDKs/iPhoneOS${SDKVER}.sdk") + if(EXISTS ${SDKROOT}) + set(CMAKE_OSX_SYSROOT "${SDKROOT}") + else() + message("Warning, iOS Base SDK path not found: " ${SDKROOT}) + endif() endif() # ------------------------------------------------------------------------------ @@ -213,16 +211,16 @@ endif() # ------------------------------------------------------------------------------ if(BUILD_HOST_SELFTEST) - set(ZTS_ENABLE_STATS TRUE) + set(ZTS_ENABLE_STATS TRUE) endif() # Enable specific features (eventually these will be enabled by default) if(ZTS_ENABLE_STATS) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_STATS=1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_ENABLE_STATS=1") endif() if(ZTS_DISABLE_CENTRAL_API) - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_DISABLE_CENTRAL_API=1") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_DISABLE_CENTRAL_API=1") endif() # ------------------------------------------------------------------------------ @@ -230,16 +228,16 @@ endif() # ------------------------------------------------------------------------------ if(BUILD_WIN) - # Possibly a CMake limitation? -- Can't share target output names - set(STATIC_LIB_NAME ${PROJECT_NAME}-static) - set(STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-static) - set(DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared) - set(DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-shared) + # Possibly a CMake limitation? -- Can't share target output names + set(STATIC_LIB_NAME ${PROJECT_NAME}-static) + set(STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-static) + set(DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared) + set(DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME}-shared) else() - set(STATIC_LIB_NAME ${PROJECT_NAME}-static) - set(STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME}) - set(DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared) - set(DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME}) + set(STATIC_LIB_NAME ${PROJECT_NAME}-static) + set(STATIC_LIB_OUTPUT_NAME ${PROJECT_NAME}) + set(DYNAMIC_LIB_NAME ${PROJECT_NAME}-shared) + set(DYNAMIC_LIB_OUTPUT_NAME ${PROJECT_NAME}) endif() # ------------------------------------------------------------------------------ @@ -247,16 +245,16 @@ endif() # ------------------------------------------------------------------------------ if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "debug") - set(BUILD_DEBUG ON) - set(CMAKE_VERBOSE_MAKEFILE ON) - set(DEBUG_OPTIMIZATION "-O3") + set(BUILD_DEBUG ON) + set(CMAKE_VERBOSE_MAKEFILE ON) + set(DEBUG_OPTIMIZATION "-O3") endif() if(CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "release") - set(BUILD_RELEASE ON) - set(CMAKE_VERBOSE_MAKEFILE OFF) - set(RELEASE_OPTIMIZATION "-O3") - set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wno-everything -w") - set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-everything -w") + set(BUILD_RELEASE ON) + set(CMAKE_VERBOSE_MAKEFILE OFF) + set(RELEASE_OPTIMIZATION "-O3") + set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -Wno-everything -w") + set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wno-everything -w") endif() # ------------------------------------------------------------------------------- @@ -264,145 +262,139 @@ endif() # ------------------------------------------------------------------------------- if(BUILD_HOST_EXAMPLES) - add_executable(pingable-node - ${PROJ_DIR}/examples/c/pingable-node.c) - target_link_libraries(pingable-node ${STATIC_LIB_NAME}) + add_executable(pingable-node + ${PROJ_DIR}/examples/c/pingable-node.c) + target_link_libraries(pingable-node ${STATIC_LIB_NAME}) - add_executable(statistics - ${PROJ_DIR}/examples/c/statistics.c) - target_link_libraries(statistics ${STATIC_LIB_NAME}) + add_executable(statistics + ${PROJ_DIR}/examples/c/statistics.c) + target_link_libraries(statistics ${STATIC_LIB_NAME}) - add_executable(adhoc - ${PROJ_DIR}/examples/c/adhoc.c) - target_link_libraries(adhoc ${STATIC_LIB_NAME}) + add_executable(adhoc + ${PROJ_DIR}/examples/c/adhoc.c) + target_link_libraries(adhoc ${STATIC_LIB_NAME}) - add_executable(centralapi - ${PROJ_DIR}/examples/c/centralapi.cpp) - target_link_libraries(centralapi ${STATIC_LIB_NAME}) + add_executable(centralapi + ${PROJ_DIR}/examples/c/centralapi.cpp) + target_compile_options(centralapi PRIVATE "-Wno-tautological-overlap-compare") + target_link_libraries(centralapi ${STATIC_LIB_NAME}) - add_executable(callbackapi - ${PROJ_DIR}/examples/c/callbackapi.c) - target_link_libraries(callbackapi ${STATIC_LIB_NAME}) + add_executable(callbackapi + ${PROJ_DIR}/examples/c/callbackapi.c) + target_link_libraries(callbackapi ${STATIC_LIB_NAME}) - add_executable(nostorage - ${PROJ_DIR}/examples/c/nostorage.c) - target_link_libraries(nostorage ${STATIC_LIB_NAME}) + add_executable(nostorage + ${PROJ_DIR}/examples/c/nostorage.c) + target_link_libraries(nostorage ${STATIC_LIB_NAME}) - add_executable(customroots - ${PROJ_DIR}/examples/c/customroots.c) - target_link_libraries(customroots ${STATIC_LIB_NAME}) + add_executable(customroots + ${PROJ_DIR}/examples/c/customroots.c) + target_link_libraries(customroots ${STATIC_LIB_NAME}) - add_executable(client - ${PROJ_DIR}/examples/c/client.c) - target_link_libraries(client ${STATIC_LIB_NAME}) + add_executable(client + ${PROJ_DIR}/examples/c/client.c) + target_link_libraries(client ${STATIC_LIB_NAME}) - add_executable(server - ${PROJ_DIR}/examples/c/server.c) - target_link_libraries(server ${STATIC_LIB_NAME}) + add_executable(server + ${PROJ_DIR}/examples/c/server.c) + target_link_libraries(server ${STATIC_LIB_NAME}) - add_executable(nonblockingclient - ${PROJ_DIR}/examples/c/nonblockingclient.c) - target_link_libraries(nonblockingclient ${STATIC_LIB_NAME}) + add_executable(nonblockingclient + ${PROJ_DIR}/examples/c/nonblockingclient.c) + target_link_libraries(nonblockingclient ${STATIC_LIB_NAME}) - add_executable(nonblockingserver - ${PROJ_DIR}/examples/c/nonblockingserver.c) - target_link_libraries(nonblockingserver ${STATIC_LIB_NAME}) + add_executable(nonblockingserver + ${PROJ_DIR}/examples/c/nonblockingserver.c) + target_link_libraries(nonblockingserver ${STATIC_LIB_NAME}) endif() # ------------------------------------------------------------------------------ # | FLAGS | # ------------------------------------------------------------------------------ -set(SILENCE "-Wno-missing-field-initializers \ - -Wno-macro-redefined \ - -Wno-tautological-overlap-compare \ - -Wno-unused-function \ - -Wno-unused-parameter \ - -Wno-macro-redefined \ - -Wno-tautological-constant-out-of-range-compare \ - -Wno-parentheses-equality") - #set(ZT_FLAGS "${ZT_FLAGS} -DNO_GETADDRINFO=1") set(ZT_FLAGS "${ZT_FLAGS} -DZT_USE_MINIUPNPC=1") set(ZT_FLAGS "${ZT_FLAGS} -D_USING_LWIP_DEFINITIONS_=0") +set(ZT_FLAGS "${ZT_FLAGS} -DOMIT_JSON_SUPPORT=1 -Wno-unused-parameter") +set(LWIP_FLAGS "${LWIP_FLAGS} -Wno-tautological-constant-out-of-range-compare -Wno-parentheses-equality") if(BUILD_DEBUG) - set(LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_DBG_TYPES_ON=128") - set(LWIP_FLAGS "${LWIP_FLAGS} -DSOCKETS_DEBUG=128") - # set (LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_STATS_LARGE=1") set (LWIP_FLAGS - # "${LWIP_FLAGS} -DLWIP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DLINK_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DETHARP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DIPFRAG_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DIP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DICMP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DIGMP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DUDP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DTCP_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DSYS_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DIP6_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DICMP6_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DIP6_FRAG_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DMLD6_STATS=1") - set(LWIP_FLAGS "${LWIP_FLAGS} -DND6_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_DBG_TYPES_ON=128") + set(LWIP_FLAGS "${LWIP_FLAGS} -DSOCKETS_DEBUG=128") + # set (LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_STATS_LARGE=1") set (LWIP_FLAGS + # "${LWIP_FLAGS} -DLWIP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DLINK_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DETHARP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DIPFRAG_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DIP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DICMP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DIGMP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DUDP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DTCP_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DSYS_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DIP6_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DICMP6_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DIP6_FRAG_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DMLD6_STATS=1") + set(LWIP_FLAGS "${LWIP_FLAGS} -DND6_STATS=1") else() - set(LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_DBG_TYPES_ON=0") + set(LWIP_FLAGS "${LWIP_FLAGS} -DLWIP_DBG_TYPES_ON=0") endif() if(BUILD_WIN) - set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNOMINMAX") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNOMINMAX") else() - set(CMAKE_C_FLAGS - "${CMAKE_C_FLAGS} \ - ${ZT_FLAGS} \ - -fstack-protector") + set(CMAKE_C_FLAGS + "${CMAKE_C_FLAGS} \ + ${ZT_FLAGS} \ + -fstack-protector") - set(CMAKE_C_FLAGS_DEBUG - "${CMAKE_C_FLAGS_DEBUG} \ - ${DEBUG_OPTIMIZATION} \ - -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1") + set(CMAKE_C_FLAGS_DEBUG + "${CMAKE_C_FLAGS_DEBUG} \ + ${DEBUG_OPTIMIZATION} \ + -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1") - set(CMAKE_C_FLAGS_RELEASE - "${CMAKE_C_FLAGS_RELEASE} \ - ${RELEASE_OPTIMIZATION} \ - -fstack-protector") + set(CMAKE_C_FLAGS_RELEASE + "${CMAKE_C_FLAGS_RELEASE} \ + ${RELEASE_OPTIMIZATION} \ + -fstack-protector") - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ - ${ZT_FLAGS} -Wall -Wextra -std=c++11") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} \ + ${ZT_FLAGS} -Wall -Wextra -std=c++11") - set(CMAKE_CXX_FLAGS_DEBUG - "${CMAKE_CXX_FLAGS_DEBUG} \ - ${DEBUG_OPTIMIZATION} \ - -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1") + set(CMAKE_CXX_FLAGS_DEBUG + "${CMAKE_CXX_FLAGS_DEBUG} \ + ${DEBUG_OPTIMIZATION} \ + -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1") - set(CMAKE_CXX_FLAGS_RELEASE - "${CMAKE_CXX_FLAGS_RELEASE} \ - ${RELEASE_OPTIMIZATION}") + set(CMAKE_CXX_FLAGS_RELEASE + "${CMAKE_CXX_FLAGS_RELEASE} \ + ${RELEASE_OPTIMIZATION}") endif() # WINDOWS-specific MSVC flags and libraries if(BUILD_WIN) - # 32-bit - if(NOT BUILD_WIN64) - set(WINLIBDIR, - "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x86") - endif() - # 64-bit - if(BUILD_WIN64) - set(WINLIBDIR, - "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x64") - endif() - # find_library (ws2_32_LIBRARY_PATH NAMES WS2_32 HINTS ${WINLIBDIR}) - # find_library (shlwapi_LIBRARY_PATH NAMES ShLwApi HINTS ${WINLIBDIR}) - set(ws2_32_LIBRARY_PATH "${WINLIBDIR}/WS2_32.Lib") - set(shlwapi_LIBRARY_PATH "${WINLIBDIR}/ShLwApi.Lib") - set(iphlpapi_LIBRARY_PATH "${WINLIBDIR}/iphlpapi.Lib") - message(STATUS ${WINLIBDIR}) - message(STATUS "WS2_32=${ws2_32_LIBRARY_PATH}") - message(STATUS "ShLwApi=${shlwapi_LIBRARY_PATH}") - message(STATUS "liphlpapi=${iphlpapi_LIBRARY_PATH}") - add_definitions(-DADD_EXPORTS=1) + # 32-bit + if(NOT BUILD_WIN64) + set(WINLIBDIR, + "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x86") + endif() + # 64-bit + if(BUILD_WIN64) + set(WINLIBDIR, + "C:/Program Files (x86)/Windows Kits/10/Lib/10.0.16299.0/um/x64") + endif() + # find_library (ws2_32_LIBRARY_PATH NAMES WS2_32 HINTS ${WINLIBDIR}) + # find_library (shlwapi_LIBRARY_PATH NAMES ShLwApi HINTS ${WINLIBDIR}) + set(ws2_32_LIBRARY_PATH "${WINLIBDIR}/WS2_32.Lib") + set(shlwapi_LIBRARY_PATH "${WINLIBDIR}/ShLwApi.Lib") + set(iphlpapi_LIBRARY_PATH "${WINLIBDIR}/iphlpapi.Lib") + message(STATUS ${WINLIBDIR}) + message(STATUS "WS2_32=${ws2_32_LIBRARY_PATH}") + message(STATUS "ShLwApi=${shlwapi_LIBRARY_PATH}") + message(STATUS "liphlpapi=${iphlpapi_LIBRARY_PATH}") + add_definitions(-DADD_EXPORTS=1) endif() # ------------------------------------------------------------------------------ @@ -410,15 +402,15 @@ endif() # ------------------------------------------------------------------------------ if(NOT ZTS_DISABLE_CENTRAL_API) - set(requiredlibs) - find_package(CURL) - if(CURL_FOUND) - include_directories(${CURL_INCLUDE_DIR}) - set(requiredlibs ${requiredlibs} ${CURL_LIBRARIES}) - else(CURL_FOUND) - message( - FATAL_ERROR "Could not find the CURL library and development files.") - endif(CURL_FOUND) + set(requiredlibs) + find_package(CURL) + if(CURL_FOUND) + include_directories(${CURL_INCLUDE_DIR}) + set(requiredlibs ${requiredlibs} ${CURL_LIBRARIES}) + else(CURL_FOUND) + message( + FATAL_ERROR "Could not find the CURL library and development files.") + endif(CURL_FOUND) endif() # ------------------------------------------------------------------------------ @@ -426,44 +418,44 @@ endif() # ------------------------------------------------------------------------------ if(ZTS_ENABLE_JAVA OR BUILD_ANDROID) - message(STATUS "Looking for JNI") + message(STATUS "Looking for JNI") - if(BUILD_WIN) - # We are only interested in finding jni.h: we do not care about extended JVM - # functionality or the AWT library. set(JAVA_AWT_LIBRARY NotNeeded) - # set(JAVA_JVM_LIBRARY NotNeeded) set(JAVA_INCLUDE_PATH2 NotNeeded) - # set(JAVA_AWT_INCLUDE_PATH NotNeeded) - set(JAVA_INCLUDE_PATH "C:\\Program Files\\Java\\jdk-10.0.2\\include") - endif() + if(BUILD_WIN) + # We are only interested in finding jni.h: we do not care about extended JVM + # functionality or the AWT library. set(JAVA_AWT_LIBRARY NotNeeded) + # set(JAVA_JVM_LIBRARY NotNeeded) set(JAVA_INCLUDE_PATH2 NotNeeded) + # set(JAVA_AWT_INCLUDE_PATH NotNeeded) + set(JAVA_INCLUDE_PATH "C:\\Program Files\\Java\\jdk-10.0.2\\include") + endif() - set(JAVA_AWT_LIBRARY NotNeeded) - set(JAVA_JVM_LIBRARY NotNeeded) - set(JAVA_INCLUDE_PATH2 NotNeeded) - set(JAVA_AWT_INCLUDE_PATH NotNeeded) - find_package(JNI REQUIRED) + set(JAVA_AWT_LIBRARY NotNeeded) + set(JAVA_JVM_LIBRARY NotNeeded) + set(JAVA_INCLUDE_PATH2 NotNeeded) + set(JAVA_AWT_INCLUDE_PATH NotNeeded) + find_package(JNI REQUIRED) - if(JNI_FOUND) - message(STATUS "JNI_INCLUDE_DIR=${JNI_INCLUDE_DIRS}") - message(STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}") - list(GET JNI_INCLUDE_DIRS 0 JNI_INCLUDE_DIR) - message(STATUS "jni path=${JNI_INCLUDE_DIR}") - include_directories("${JNI_INCLUDE_DIR}") - # include_directories ("${JNI_INCLUDE_DIRS}") - if(BUILD_WIN) - include_directories("${JNI_INCLUDE_DIR}\\win32") - endif() - if(BUILD_MACOS) - include_directories("${JNI_INCLUDE_DIR}/darwin") - endif() - if(BUILD_LINUX) - include_directories("${JNI_INCLUDE_DIR}/linux") - endif() - else() - message(STATUS "JNI not found") - endif() - if(JNI_FOUND) - add_definitions(-DZTS_ENABLE_JAVA=1) - endif() + if(JNI_FOUND) + message(STATUS "JNI_INCLUDE_DIR=${JNI_INCLUDE_DIRS}") + message(STATUS "JNI_LIBRARIES=${JNI_LIBRARIES}") + list(GET JNI_INCLUDE_DIRS 0 JNI_INCLUDE_DIR) + message(STATUS "jni path=${JNI_INCLUDE_DIR}") + include_directories("${JNI_INCLUDE_DIR}") + # include_directories ("${JNI_INCLUDE_DIRS}") + if(BUILD_WIN) + include_directories("${JNI_INCLUDE_DIR}\\win32") + endif() + if(BUILD_MACOS) + include_directories("${JNI_INCLUDE_DIR}/darwin") + endif() + if(BUILD_LINUX) + include_directories("${JNI_INCLUDE_DIR}/linux") + endif() + else() + message(STATUS "JNI not found") + endif() + if(JNI_FOUND) + add_definitions(-DZTS_ENABLE_JAVA=1) + endif() endif() # ZTS_ENABLE_JAVA # ------------------------------------------------------------------------------ @@ -471,94 +463,94 @@ endif() # ZTS_ENABLE_JAVA # ------------------------------------------------------------------------------ file(GLOB ztcoreSrcGlob ${ZTO_SRC_DIR}/node/*.cpp - ${ZTO_SRC_DIR}/osdep/OSUtils.cpp ${ZTO_SRC_DIR}/osdep/PortMapper.cpp) + ${ZTO_SRC_DIR}/osdep/OSUtils.cpp ${ZTO_SRC_DIR}/osdep/PortMapper.cpp) file(GLOB libnatpmpSrcGlob ${ZTO_SRC_DIR}/ext/libnatpmp/natpmp.c - ${ZTO_SRC_DIR}/ext/libnatpmp/wingettimeofday.c - ${ZTO_SRC_DIR}/ext/libnatpmp/getgateway.c) + ${ZTO_SRC_DIR}/ext/libnatpmp/wingettimeofday.c + ${ZTO_SRC_DIR}/ext/libnatpmp/getgateway.c) if(NOT BUILD_WIN) list(REMOVE_ITEM libnatpmpSrcGlob ${ZTO_SRC_DIR}/ext/libnatpmp/wingettimeofday.c) endif() file( - GLOB - libminiupnpcSrcGlob - ${ZTO_SRC_DIR}/ext/miniupnpc/connecthostport.c - ${ZTO_SRC_DIR}/ext/miniupnpc/igd_desc_parse.c - ${ZTO_SRC_DIR}/ext/miniupnpc/minisoap.c - ${ZTO_SRC_DIR}/ext/miniupnpc/minissdpc.c - ${ZTO_SRC_DIR}/ext/miniupnpc/miniupnpc.c - ${ZTO_SRC_DIR}/ext/miniupnpc/miniwget.c - ${ZTO_SRC_DIR}/ext/miniupnpc/minixml.c - ${ZTO_SRC_DIR}/ext/miniupnpc/portlistingparse.c - ${ZTO_SRC_DIR}/ext/miniupnpc/receivedata.c - ${ZTO_SRC_DIR}/ext/miniupnpc/upnpcommands.c - ${ZTO_SRC_DIR}/ext/miniupnpc/upnpdev.c - ${ZTO_SRC_DIR}/ext/miniupnpc/upnperrors.c - ${ZTO_SRC_DIR}/ext/miniupnpc/upnpreplyparse.c) + GLOB + libminiupnpcSrcGlob + ${ZTO_SRC_DIR}/ext/miniupnpc/connecthostport.c + ${ZTO_SRC_DIR}/ext/miniupnpc/igd_desc_parse.c + ${ZTO_SRC_DIR}/ext/miniupnpc/minisoap.c + ${ZTO_SRC_DIR}/ext/miniupnpc/minissdpc.c + ${ZTO_SRC_DIR}/ext/miniupnpc/miniupnpc.c + ${ZTO_SRC_DIR}/ext/miniupnpc/miniwget.c + ${ZTO_SRC_DIR}/ext/miniupnpc/minixml.c + ${ZTO_SRC_DIR}/ext/miniupnpc/portlistingparse.c + ${ZTO_SRC_DIR}/ext/miniupnpc/receivedata.c + ${ZTO_SRC_DIR}/ext/miniupnpc/upnpcommands.c + ${ZTO_SRC_DIR}/ext/miniupnpc/upnpdev.c + ${ZTO_SRC_DIR}/ext/miniupnpc/upnperrors.c + ${ZTO_SRC_DIR}/ext/miniupnpc/upnpreplyparse.c) file(GLOB libztSrcGlob ${LIBZT_SRC_DIR}/*.cpp ${LANG_WRAPPER_FILE}) file( - GLOB - lwipSrcGlob - ${LWIP_SRC_DIR}/netif/*.c - ${LWIP_SRC_DIR}/api/*.c - ${LWIP_PORT_DIR}/sys_arch.c - ${LWIP_SRC_DIR}/core/*.c - ${LWIP_SRC_DIR}/core/ipv4/*.c - ${LWIP_SRC_DIR}/core/ipv6/*.c) + GLOB + lwipSrcGlob + ${LWIP_SRC_DIR}/netif/*.c + ${LWIP_SRC_DIR}/api/*.c + ${LWIP_PORT_DIR}/sys_arch.c + ${LWIP_SRC_DIR}/core/*.c + ${LWIP_SRC_DIR}/core/ipv4/*.c + ${LWIP_SRC_DIR}/core/ipv6/*.c) list(REMOVE_ITEM lwipSrcGlob ${LWIP_SRC_DIR}/netif/slipif.c) # header globs for xcode frameworks file(GLOB frameworkPublicHeaderGlob include/ZeroTierSockets.h) file(GLOB frameworkHeaderGlob ${frameworkPublicHeaderGlob} - ${frameworkPrivateHeaderGlob}) + ${frameworkPrivateHeaderGlob}) # ------------------------------------------------------------------------------ # | OBJECT LIBRARIES (INTERMEDIATE) | # ------------------------------------------------------------------------------ if(BUILD_STATIC_LIB) - # zto_obj - add_library(zto_obj OBJECT ${ztcoreSrcGlob}) - set_target_properties(zto_obj PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") - if(BUILD_WIN) - target_link_libraries(zto_obj ws2_32) - target_link_libraries(zto_obj ${shlwapi_LIBRARY_PATH}) - target_link_libraries(zto_obj ${iphlpapi_LIBRARY_PATH}) - endif() + # zto_obj + add_library(zto_obj OBJECT ${ztcoreSrcGlob}) + set_target_properties(zto_obj PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") + if(BUILD_WIN) + target_link_libraries(zto_obj ws2_32) + target_link_libraries(zto_obj ${shlwapi_LIBRARY_PATH}) + target_link_libraries(zto_obj ${iphlpapi_LIBRARY_PATH}) + endif() - # libnatpmp_obj - add_library(libnatpmp_obj OBJECT ${libnatpmpSrcGlob}) - set_target_properties(libnatpmp_obj PROPERTIES COMPILE_FLAGS "-DNATPMP_EXPORTS") + # libnatpmp_obj + add_library(libnatpmp_obj OBJECT ${libnatpmpSrcGlob}) + set_target_properties(libnatpmp_obj PROPERTIES COMPILE_FLAGS "-DNATPMP_EXPORTS") - # miniupnpc_obj - add_library(miniupnpc_obj OBJECT ${libminiupnpcSrcGlob}) - target_compile_definitions( - miniupnpc_obj - PRIVATE ZT_USE_MINIUPNPC - MINIUPNP_STATICLIB - _DARWIN_C_SOURCE - MINIUPNPC_SET_SOCKET_TIMEOUT - MINIUPNPC_GET_SRC_ADDR - _BSD_SOURCE - _DEFAULT_SOURCE - MINIUPNPC_VERSION_STRING=\"2.0\" - UPNP_VERSION_STRING=\"UPnP/1.1\" - ENABLE_STRNATPMPERR - OS_STRING=\"Darwin/15.0.0\") - if(BUILD_DARWIN AND NOT BUILD_IOS_FRAMEWORK) - target_compile_definitions(miniupnpc_obj PRIVATE MACOSX) - endif() + # miniupnpc_obj + add_library(miniupnpc_obj OBJECT ${libminiupnpcSrcGlob}) + target_compile_definitions( + miniupnpc_obj + PRIVATE ZT_USE_MINIUPNPC + MINIUPNP_STATICLIB + _DARWIN_C_SOURCE + MINIUPNPC_SET_SOCKET_TIMEOUT + MINIUPNPC_GET_SRC_ADDR + _BSD_SOURCE + _DEFAULT_SOURCE + MINIUPNPC_VERSION_STRING=\"2.0\" + UPNP_VERSION_STRING=\"UPnP/1.1\" + ENABLE_STRNATPMPERR + OS_STRING=\"Darwin/15.0.0\") + if(BUILD_DARWIN AND NOT BUILD_IOS_FRAMEWORK) + target_compile_definitions(miniupnpc_obj PRIVATE MACOSX) + endif() - # lwip_obj - add_library(lwip_obj OBJECT ${lwipSrcGlob}) - set_target_properties(lwip_obj PROPERTIES COMPILE_FLAGS "${LWIP_FLAGS}") + # lwip_obj + add_library(lwip_obj OBJECT ${lwipSrcGlob}) + set_target_properties(lwip_obj PROPERTIES COMPILE_FLAGS "${LWIP_FLAGS}") - # libzt_obj - add_library(libzt_obj OBJECT ${libztSrcGlob}) - set_target_properties(libzt_obj PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") + # libzt_obj + add_library(libzt_obj OBJECT ${libztSrcGlob}) + set_target_properties(libzt_obj PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") endif() # PIC @@ -566,29 +558,29 @@ endif() # zto_pic add_library(zto_pic ${ztcoreSrcGlob}) set_target_properties(zto_pic PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}" - POSITION_INDEPENDENT_CODE ON) + POSITION_INDEPENDENT_CODE ON) # libnatpmp_pic add_library(natpmp_pic ${libnatpmpSrcGlob}) set_target_properties(natpmp_pic PROPERTIES COMPILE_FLAGS "-DNATPMP_EXPORTS" - POSITION_INDEPENDENT_CODE ON) + POSITION_INDEPENDENT_CODE ON) # miniupnpc_pic add_library(miniupnpc_pic ${libminiupnpcSrcGlob}) target_compile_definitions( - miniupnpc_pic - PRIVATE MACOSX - ZT_USE_MINIUPNPC - MINIUPNP_STATICLIB - _DARWIN_C_SOURCE - MINIUPNPC_SET_SOCKET_TIMEOUT - MINIUPNPC_GET_SRC_ADDR - _BSD_SOURCE - _DEFAULT_SOURCE - MINIUPNPC_VERSION_STRING=\"2.0\" - UPNP_VERSION_STRING=\"UPnP/1.1\" - ENABLE_STRNATPMPERR - OS_STRING=\"Darwin/15.0.0\") + miniupnpc_pic + PRIVATE MACOSX + ZT_USE_MINIUPNPC + MINIUPNP_STATICLIB + _DARWIN_C_SOURCE + MINIUPNPC_SET_SOCKET_TIMEOUT + MINIUPNPC_GET_SRC_ADDR + _BSD_SOURCE + _DEFAULT_SOURCE + MINIUPNPC_VERSION_STRING=\"2.0\" + UPNP_VERSION_STRING=\"UPnP/1.1\" + ENABLE_STRNATPMPERR + OS_STRING=\"Darwin/15.0.0\") set_target_properties(miniupnpc_pic PROPERTIES POSITION_INDEPENDENT_CODE ON) # lwip_pic @@ -599,126 +591,116 @@ set_target_properties(lwip_pic PROPERTIES COMPILE_FLAGS "${LWIP_FLAGS}") # libzt_pic add_library(zt_pic ${libztSrcGlob}) set_target_properties(zt_pic PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}" - POSITION_INDEPENDENT_CODE ON) - -#set_property( -# TARGET lwip_pic -# APPEND -# PROPERTY STATIC_LIBRARY_FLAGS "-no_warning_for_no_symbols" -#) + POSITION_INDEPENDENT_CODE ON) # ------------------------------------------------------------------------------ # | STATIC LIB | # ------------------------------------------------------------------------------ if(BUILD_STATIC_LIB) - # libztcore.a - add_library(ztcore STATIC $) - set_target_properties( - ztcore PROPERTIES OUTPUT_NAME ztcore LIBRARY_OUTPUT_DIRECTORY - ${INTERMEDIATE_LIBRARY_OUTPUT_PATH}) - # libzt.a - add_library( - ${STATIC_LIB_NAME} STATIC - $ $ - $ $ - $ ${libztSrcGlob}) - set_target_properties( - ${STATIC_LIB_NAME} - PROPERTIES LINKER_LANGUAGE CXX - OUTPUT_NAME zt - POSITION_INDEPENDENT_CODE ON - LIBRARY_OUTPUT_DIRECTORY ${INTERMEDIATE_LIBRARY_OUTPUT_PATH}) - set_target_properties(${STATIC_LIB_NAME} PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") - target_link_libraries(${STATIC_LIB_NAME} ${CMAKE_THREAD_LIBS_INIT}) + # libztcore.a + add_library(ztcore STATIC $) + set_target_properties( + ztcore PROPERTIES OUTPUT_NAME ztcore LIBRARY_OUTPUT_DIRECTORY + ${INTERMEDIATE_LIBRARY_OUTPUT_PATH}) + # libzt.a + add_library( + ${STATIC_LIB_NAME} STATIC + $ $ + $ $ + $ ${libztSrcGlob}) + set_target_properties( + ${STATIC_LIB_NAME} + PROPERTIES LINKER_LANGUAGE CXX + OUTPUT_NAME zt + POSITION_INDEPENDENT_CODE ON + LIBRARY_OUTPUT_DIRECTORY ${INTERMEDIATE_LIBRARY_OUTPUT_PATH}) + set_target_properties(${STATIC_LIB_NAME} PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}") + target_link_libraries(${STATIC_LIB_NAME} ${CMAKE_THREAD_LIBS_INIT}) - if(BUILD_WIN) - target_link_libraries(${STATIC_LIB_NAME} ${ws2_32_LIBRARY_PATH} - ${shlwapi_LIBRARY_PATH} ${iphlpapi_LIBRARY_PATH}) - endif() - if(NOT ZTS_DISABLE_CENTRAL_API) - target_link_libraries(${STATIC_LIB_NAME} ${CURL_LIBRARIES}) - endif() + if(BUILD_WIN) + target_link_libraries(${STATIC_LIB_NAME} ${ws2_32_LIBRARY_PATH} + ${shlwapi_LIBRARY_PATH} ${iphlpapi_LIBRARY_PATH}) + endif() + if(NOT ZTS_DISABLE_CENTRAL_API) + target_link_libraries(${STATIC_LIB_NAME} ${CURL_LIBRARIES}) + endif() endif() # BUILD_STATIC_LIB - - - - # ------------------------------------------------------------------------------ # | SHARED LIB | # ------------------------------------------------------------------------------ if(BUILD_SHARED_LIB) - # libzt.so/dylib/dll - add_library(${DYNAMIC_LIB_NAME} SHARED ${libztSrcGlob}) - target_link_libraries(${DYNAMIC_LIB_NAME} ${PYTHON_LIBRARIES}) - target_link_libraries(${DYNAMIC_LIB_NAME} zt_pic lwip_pic zto_pic natpmp_pic - miniupnpc_pic) - set_target_properties(${DYNAMIC_LIB_NAME} - PROPERTIES COMPILE_FLAGS - "${ZT_FLAGS}") - set_target_properties( - ${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${DYNAMIC_LIB_OUTPUT_NAME} - WINDOWS_EXPORT_ALL_SYMBOLS true) - target_link_libraries( - ${DYNAMIC_LIB_NAME} - ${CMAKE_THREAD_LIBS_INIT} - ${ws2_32_LIBRARY_PATH} - ${shlwapi_LIBRARY_PATH} - ${iphlpapi_LIBRARY_PATH} - zt_pic - lwip_pic - zto_pic - natpmp_pic - miniupnpc_pic) - set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) + # libzt.so/dylib/dll + add_library(${DYNAMIC_LIB_NAME} SHARED ${libztSrcGlob}) + target_link_libraries(${DYNAMIC_LIB_NAME} ${PYTHON_LIBRARIES}) + target_link_libraries(${DYNAMIC_LIB_NAME} zt_pic lwip_pic zto_pic natpmp_pic + miniupnpc_pic) + set_target_properties(${DYNAMIC_LIB_NAME} + PROPERTIES COMPILE_FLAGS + "${ZT_FLAGS}") + set_target_properties( + ${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${DYNAMIC_LIB_OUTPUT_NAME} + WINDOWS_EXPORT_ALL_SYMBOLS true) + target_link_libraries( + ${DYNAMIC_LIB_NAME} + ${CMAKE_THREAD_LIBS_INIT} + ${ws2_32_LIBRARY_PATH} + ${shlwapi_LIBRARY_PATH} + ${iphlpapi_LIBRARY_PATH} + zt_pic + lwip_pic + zto_pic + natpmp_pic + miniupnpc_pic) + set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) - if(BUILD_ANDROID) - target_link_libraries(${DYNAMIC_LIB_NAME} android log) - endif() - if(NOT ZTS_DISABLE_CENTRAL_API) - target_link_libraries(${DYNAMIC_LIB_NAME} ${CURL_LIBRARIES}) - endif() + if(BUILD_ANDROID) + target_link_libraries(${DYNAMIC_LIB_NAME} android log) + endif() + if(NOT ZTS_DISABLE_CENTRAL_API) + target_link_libraries(${DYNAMIC_LIB_NAME} ${CURL_LIBRARIES}) + endif() endif() # BUILD_SHARED_LIB # xcode framework if(IN_XCODE) - # stdint.h is needed for API definitions but can cause conflicts in certain - # projects where integers may already be defined. Thus this flag is used to - # exclude their definition in ZeroTierSockets.h - set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_NO_STDINT_H=1") + # stdint.h is needed for API definitions but can cause conflicts in certain + # projects where integers may already be defined. Thus this flag is used to + # exclude their definition in ZeroTierSockets.h + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DZTS_NO_STDINT_H=1") - include_directories(${frameworkHeaderGlob}) + include_directories(${frameworkHeaderGlob}) - add_library( - ${XCODE_FRAMEWORK_NAME} STATIC - $ - $ - $ - $ - $ - ${libztSrcGlob} - ${frameworkHeaderGlob}) + add_library( + ${XCODE_FRAMEWORK_NAME} STATIC + $ + $ + $ + $ + $ + ${libztSrcGlob} + ${frameworkHeaderGlob}) - set_target_properties(${XCODE_FRAMEWORK_NAME} PROPERTIES ENABLE_BITCODE "YES") - set_target_properties(${XCODE_FRAMEWORK_NAME} - PROPERTIES BITCODE_GENERATION_MODE bitcode) - target_compile_options(${XCODE_FRAMEWORK_NAME} PUBLIC -fembed-bitcode) - target_link_libraries(${XCODE_FRAMEWORK_NAME} PUBLIC -fembed-bitcode) + set_target_properties(${XCODE_FRAMEWORK_NAME} PROPERTIES ENABLE_BITCODE "YES") + set_target_properties(${XCODE_FRAMEWORK_NAME} + PROPERTIES BITCODE_GENERATION_MODE bitcode) + target_compile_options(${XCODE_FRAMEWORK_NAME} PUBLIC -fembed-bitcode) + target_link_libraries(${XCODE_FRAMEWORK_NAME} PUBLIC -fembed-bitcode) - set_target_properties( - ${XCODE_FRAMEWORK_NAME} - PROPERTIES - FRAMEWORK YES - FRAMEWORK_VERSION A - XCODE_ATTRIBUTE_DEFINES_MODULE YES - MACOSX_FRAMEWORK_IDENTIFIER com.cmake.${XCODE_FRAMEWORK_NAME} - XCODE_ATTRIBUTE_MODULEMAP_FILE "${PROJ_DIR}/pkg/apple/module.modulemap" - PUBLIC_HEADER "${frameworkHeaderGlob}" - XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer" - XCODE_ATTRIBUTE_CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES YES) + set_target_properties( + ${XCODE_FRAMEWORK_NAME} + PROPERTIES + FRAMEWORK YES + FRAMEWORK_VERSION A + XCODE_ATTRIBUTE_DEFINES_MODULE YES + MACOSX_FRAMEWORK_IDENTIFIER com.cmake.${XCODE_FRAMEWORK_NAME} + XCODE_ATTRIBUTE_MODULEMAP_FILE "${PROJ_DIR}/pkg/apple/module.modulemap" + PUBLIC_HEADER "${frameworkHeaderGlob}" + XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY "iPhone Developer" + XCODE_ATTRIBUTE_CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES YES) endif() # ------------------------------------------------------------------------------ @@ -726,12 +708,12 @@ endif() # ------------------------------------------------------------------------------ if(BUILD_HOST_SELFTEST) - add_executable(selftest-c - ${PROJ_DIR}/test/selftest.c) - target_link_libraries(selftest-c ${STATIC_LIB_NAME}) - project(TEST) - enable_testing() - add_test(NAME selftest-c COMMAND selftest-c) + add_executable(selftest-c + ${PROJ_DIR}/test/selftest.c) + target_link_libraries(selftest-c ${STATIC_LIB_NAME}) + project(TEST) + enable_testing() + add_test(NAME selftest-c COMMAND selftest-c) endif() # ------------------------------------------------------------------------------ @@ -739,16 +721,16 @@ endif() # ------------------------------------------------------------------------------ if (ALLOW_INSTALL_TARGET) - set(PUBLIC_ZT_HEADERS ${PROJECT_SOURCE_DIR}/include/ZeroTierSockets.h) - set_target_properties(${STATIC_LIB_NAME} PROPERTIES PUBLIC_HEADER - "${PUBLIC_ZT_HEADERS}") - install( - TARGETS ${STATIC_LIB_NAME} - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib - PUBLIC_HEADER DESTINATION include) - install( - TARGETS ${DYNAMIC_LIB_NAME} - LIBRARY DESTINATION lib - ARCHIVE DESTINATION lib) + set(PUBLIC_ZT_HEADERS ${PROJECT_SOURCE_DIR}/include/ZeroTierSockets.h) + set_target_properties(${STATIC_LIB_NAME} PROPERTIES PUBLIC_HEADER + "${PUBLIC_ZT_HEADERS}") + install( + TARGETS ${STATIC_LIB_NAME} + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib + PUBLIC_HEADER DESTINATION include) + install( + TARGETS ${DYNAMIC_LIB_NAME} + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib) endif() diff --git a/src/Controls.cpp b/src/Controls.cpp index ca9b810..bb2aea0 100644 --- a/src/Controls.cpp +++ b/src/Controls.cpp @@ -267,6 +267,7 @@ DWORD WINAPI cbRun(LPVOID arg) void* cbRun(void* arg) #endif { + ZTS_UNUSED_ARG(arg); #if defined(__APPLE__) pthread_setname_np(ZTS_EVENT_CALLBACK_THREAD_NAME); #endif @@ -481,6 +482,7 @@ DWORD WINAPI _runNodeService(LPVOID arg) void* _runNodeService(void* arg) #endif { + ZTS_UNUSED_ARG(arg); #if defined(__APPLE__) pthread_setname_np(ZTS_SERVICE_THREAD_NAME); #endif @@ -597,14 +599,14 @@ int zts_node_free() int zts_moon_orbit(uint64_t moon_roots_id, uint64_t moon_seed) { ACQUIRE_SERVICE(ZTS_ERR_SERVICE); - zts_service->orbit(NULL, moon_roots_id, moon_seed); + zts_service->orbit(moon_roots_id, moon_seed); return ZTS_ERR_OK; } int zts_moon_deorbit(uint64_t moon_roots_id) { ACQUIRE_SERVICE(ZTS_ERR_SERVICE); - zts_service->deorbit(NULL, moon_roots_id); + zts_service->deorbit(moon_roots_id); return ZTS_ERR_OK; } diff --git a/src/NodeService.cpp b/src/NodeService.cpp index 8bf3042..ee55c20 100644 --- a/src/NodeService.cpp +++ b/src/NodeService.cpp @@ -38,6 +38,130 @@ namespace ZeroTier { +static int SnodeVirtualNetworkConfigFunction( + ZT_Node* node, + void* uptr, + void* tptr, + uint64_t net_id, + void** nuptr, + enum ZT_VirtualNetworkConfigOperation op, + const ZT_VirtualNetworkConfig* nwconf) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + return reinterpret_cast(uptr)->nodeVirtualNetworkConfigFunction(net_id, nuptr, op, nwconf); +} + +static void SnodeEventCallback(ZT_Node* node, void* uptr, void* tptr, enum ZT_Event event, const void* metaData) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + reinterpret_cast(uptr)->nodeEventCallback(event, metaData); +} + +static void SnodeStatePutFunction( + ZT_Node* node, + void* uptr, + void* tptr, + enum ZT_StateObjectType type, + const uint64_t id[2], + const void* data, + int len) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + reinterpret_cast(uptr)->nodeStatePutFunction(type, id, data, len); +} + +static int SnodeStateGetFunction( + ZT_Node* node, + void* uptr, + void* tptr, + enum ZT_StateObjectType type, + const uint64_t id[2], + void* data, + unsigned int maxlen) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + return reinterpret_cast(uptr)->nodeStateGetFunction(type, id, data, maxlen); +} + +static int SnodeWirePacketSendFunction( + ZT_Node* node, + void* uptr, + void* tptr, + int64_t localSocket, + const struct sockaddr_storage* addr, + const void* data, + unsigned int len, + unsigned int ttl) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + return reinterpret_cast(uptr)->nodeWirePacketSendFunction(localSocket, addr, data, len, ttl); +} + +static void SnodeVirtualNetworkFrameFunction( + ZT_Node* node, + void* uptr, + void* tptr, + uint64_t net_id, + void** nuptr, + uint64_t sourceMac, + uint64_t destMac, + unsigned int etherType, + unsigned int vlanId, + const void* data, + unsigned int len) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + reinterpret_cast(uptr) + ->nodeVirtualNetworkFrameFunction(net_id, nuptr, sourceMac, destMac, etherType, vlanId, data, len); +} + +static int SnodePathCheckFunction( + ZT_Node* node, + void* uptr, + void* tptr, + uint64_t ztaddr, + int64_t localSocket, + const struct sockaddr_storage* remoteAddr) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + return reinterpret_cast(uptr)->nodePathCheckFunction(ztaddr, localSocket, remoteAddr); +} + +static int SnodePathLookupFunction( + ZT_Node* node, + void* uptr, + void* tptr, + uint64_t ztaddr, + int family, + struct sockaddr_storage* result) +{ + ZTS_UNUSED_ARG(node); + ZTS_UNUSED_ARG(tptr); + return reinterpret_cast(uptr)->nodePathLookupFunction(ztaddr, family, result); +} + +static void StapFrameHandler( + void* uptr, + void* tptr, + uint64_t net_id, + const MAC& from, + const MAC& to, + unsigned int etherType, + unsigned int vlanId, + const void* data, + unsigned int len) +{ + ZTS_UNUSED_ARG(tptr); + reinterpret_cast(uptr)->tapFrameHandler(net_id, from, to, etherType, vlanId, data, len); +} + NodeService::NodeService() : _phy(this, false, true) , _node((Node*)0) @@ -59,8 +183,8 @@ NodeService::NodeService() , _userDefinedWorld(false) , _nodeIsOnline(false) , _eventsEnabled(false) - , _events(NULL) , _homePath("") + , _events(NULL) { } @@ -285,10 +409,13 @@ NodeService::ReasonForTermination NodeService::run() c != mgChanges.end(); ++c) { auto mgpair = c->second; - for (std::vector::iterator m(mgpair.first.begin()); m != mgpair.first.end(); ++m) + for (std::vector::iterator m(mgpair.first.begin()); m != mgpair.first.end(); ++m) { _node->multicastSubscribe((void*)0, c->first, m->mac().toInt(), m->adi()); - for (std::vector::iterator m(mgpair.second.begin()); m != mgpair.second.end(); ++m) + } + for (std::vector::iterator m(mgpair.second.begin()); m != mgpair.second.end(); + ++m) { _node->multicastUnsubscribe(c->first, m->mac().toInt(), m->adi()); + } } } @@ -339,8 +466,9 @@ NodeService::ReasonForTermination NodeService::run() { Mutex::Lock _l(_nets_m); - for (std::map::iterator n(_nets.begin()); n != _nets.end(); ++n) + for (std::map::iterator n(_nets.begin()); n != _nets.end(); ++n) { delete n->second.tap; + } _nets.clear(); } @@ -458,6 +586,8 @@ void NodeService::phyOnDatagram( void* data, unsigned long len) { + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(localAddr); if ((len >= 16) && (reinterpret_cast(from)->ipScope() == InetAddress::IP_SCOPE_GLOBAL)) _lastDirectReceiveFromGlobal = OSUtils::now(); const ZT_ResultCode rc = _node->processWirePacket( @@ -548,6 +678,7 @@ int NodeService::nodeVirtualNetworkConfigFunction( void NodeService::nodeEventCallback(enum ZT_Event event, const void* metaData) { + ZTS_UNUSED_ARG(metaData); zts_node_info_t* nd = new zts_node_info_t; nd->node_id = _node ? _node->address() : 0x0; nd->ver_major = ZEROTIER_ONE_VERSION_MAJOR; @@ -962,7 +1093,7 @@ int NodeService::networkHasRoute(uint64_t net_id, unsigned int family) return false; } -int NodeService::orbit(void* tptr, uint64_t moon_roots_id, uint64_t moon_seed) +int NodeService::orbit(uint64_t moon_roots_id, uint64_t moon_seed) { if (! moon_roots_id || ! moon_seed) { return ZTS_ERR_ARG; @@ -974,7 +1105,7 @@ int NodeService::orbit(void* tptr, uint64_t moon_roots_id, uint64_t moon_seed) return _node->orbit(NULL, moon_roots_id, moon_seed); } -int NodeService::deorbit(void* tptr, uint64_t moon_roots_id) +int NodeService::deorbit(uint64_t moon_roots_id) { if (! moon_roots_id) { return ZTS_ERR_ARG; @@ -1262,6 +1393,8 @@ void NodeService::nodeVirtualNetworkFrameFunction( const void* data, unsigned int len) { + ZTS_UNUSED_ARG(vlanId); + ZTS_UNUSED_ARG(net_id); NetworkState* n = reinterpret_cast(*nuptr); if ((! n) || (! n->tap)) { return; @@ -1274,6 +1407,7 @@ int NodeService::nodePathCheckFunction( const int64_t localSocket, const struct sockaddr_storage* remoteAddr) { + ZTS_UNUSED_ARG(localSocket); // Make sure we're not trying to do ZeroTier-over-ZeroTier { Mutex::Lock _l(_nets_m); diff --git a/src/NodeService.hpp b/src/NodeService.hpp index 504f005..504a474 100644 --- a/src/NodeService.hpp +++ b/src/NodeService.hpp @@ -20,6 +20,8 @@ #ifndef ZTS_NODE_SERVICE_HPP #define ZTS_NODE_SERVICE_HPP +#define ZTS_UNUSED_ARG(x) (void)x + #include "Binder.hpp" #include "Mutex.hpp" #include "Node.hpp" @@ -47,7 +49,7 @@ namespace ZeroTier { -class InetAddress; +struct InetAddress; class VirtualTap; class MAC; class Events; @@ -303,10 +305,10 @@ class NodeService { int getPathAtIdx(uint64_t peer_id, unsigned int idx, char* path, unsigned int len); /** Orbit a moon */ - int orbit(void* tptr, uint64_t moonWorldId, uint64_t moonSeed); + int orbit(uint64_t moonWorldId, uint64_t moonSeed); /** De-orbit a moon */ - int deorbit(void* tptr, uint64_t moonWorldId); + int deorbit(uint64_t moonWorldId); /** Return the integer-form of the node's identity */ uint64_t getNodeId(); @@ -425,153 +427,69 @@ class NodeService { void phyOnTcpConnect(PhySocket* sock, void** uptr, bool success) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(success); } void phyOnTcpAccept(PhySocket* sockL, PhySocket* sockN, void** uptrL, void** uptrN, const struct sockaddr* from) { - // Intentionally left empty + ZTS_UNUSED_ARG(sockL); + ZTS_UNUSED_ARG(sockN); + ZTS_UNUSED_ARG(uptrL); + ZTS_UNUSED_ARG(uptrN); + ZTS_UNUSED_ARG(from); } void phyOnTcpClose(PhySocket* sock, void** uptr) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } void phyOnTcpData(PhySocket* sock, void** uptr, void* data, unsigned long len) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(data); + ZTS_UNUSED_ARG(len); } void phyOnTcpWritable(PhySocket* sock, void** uptr) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } void phyOnFileDescriptorActivity(PhySocket* sock, void** uptr, bool readable, bool writable) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(readable); + ZTS_UNUSED_ARG(writable); } void phyOnUnixAccept(PhySocket* sockL, PhySocket* sockN, void** uptrL, void** uptrN) { - // Intentionally left empty + ZTS_UNUSED_ARG(sockL); + ZTS_UNUSED_ARG(sockN); + ZTS_UNUSED_ARG(uptrL); + ZTS_UNUSED_ARG(uptrN); } void phyOnUnixClose(PhySocket* sock, void** uptr) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } void phyOnUnixData(PhySocket* sock, void** uptr, void* data, unsigned long len) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(data); + ZTS_UNUSED_ARG(len); } + void phyOnUnixWritable(PhySocket* sock, void** uptr) { - // Intentionally left empty + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } }; -static int SnodeVirtualNetworkConfigFunction( - ZT_Node* node, - void* uptr, - void* tptr, - uint64_t net_id, - void** nuptr, - enum ZT_VirtualNetworkConfigOperation op, - const ZT_VirtualNetworkConfig* nwconf) -{ - return reinterpret_cast(uptr)->nodeVirtualNetworkConfigFunction(net_id, nuptr, op, nwconf); -} - -static void SnodeEventCallback(ZT_Node* node, void* uptr, void* tptr, enum ZT_Event event, const void* metaData) -{ - reinterpret_cast(uptr)->nodeEventCallback(event, metaData); -} - -static void SnodeStatePutFunction( - ZT_Node* node, - void* uptr, - void* tptr, - enum ZT_StateObjectType type, - const uint64_t id[2], - const void* data, - int len) -{ - reinterpret_cast(uptr)->nodeStatePutFunction(type, id, data, len); -} - -static int SnodeStateGetFunction( - ZT_Node* node, - void* uptr, - void* tptr, - enum ZT_StateObjectType type, - const uint64_t id[2], - void* data, - unsigned int maxlen) -{ - return reinterpret_cast(uptr)->nodeStateGetFunction(type, id, data, maxlen); -} - -static int SnodeWirePacketSendFunction( - ZT_Node* node, - void* uptr, - void* tptr, - int64_t localSocket, - const struct sockaddr_storage* addr, - const void* data, - unsigned int len, - unsigned int ttl) -{ - return reinterpret_cast(uptr)->nodeWirePacketSendFunction(localSocket, addr, data, len, ttl); -} - -static void SnodeVirtualNetworkFrameFunction( - ZT_Node* node, - void* uptr, - void* tptr, - uint64_t net_id, - void** nuptr, - uint64_t sourceMac, - uint64_t destMac, - unsigned int etherType, - unsigned int vlanId, - const void* data, - unsigned int len) -{ - reinterpret_cast(uptr) - ->nodeVirtualNetworkFrameFunction(net_id, nuptr, sourceMac, destMac, etherType, vlanId, data, len); -} - -static int SnodePathCheckFunction( - ZT_Node* node, - void* uptr, - void* tptr, - uint64_t ztaddr, - int64_t localSocket, - const struct sockaddr_storage* remoteAddr) -{ - return reinterpret_cast(uptr)->nodePathCheckFunction(ztaddr, localSocket, remoteAddr); -} - -static int SnodePathLookupFunction( - ZT_Node* node, - void* uptr, - void* tptr, - uint64_t ztaddr, - int family, - struct sockaddr_storage* result) -{ - return reinterpret_cast(uptr)->nodePathLookupFunction(ztaddr, family, result); -} - -static void StapFrameHandler( - void* uptr, - void* tptr, - uint64_t net_id, - const MAC& from, - const MAC& to, - unsigned int etherType, - unsigned int vlanId, - const void* data, - unsigned int len) -{ - reinterpret_cast(uptr)->tapFrameHandler(net_id, from, to, etherType, vlanId, data, len); -} - } // namespace ZeroTier #endif diff --git a/src/VirtualTap.hpp b/src/VirtualTap.hpp index 4ed5ec3..69cd8d7 100644 --- a/src/VirtualTap.hpp +++ b/src/VirtualTap.hpp @@ -23,6 +23,8 @@ #define ZTS_LWIP_THREAD_NAME "ZTNetworkStackThread" #define VTAP_NAME_LEN 64 +#define ZTS_UNUSED_ARG(x) (void)x + #include "Events.hpp" #include "MAC.hpp" #include "Phy.hpp" @@ -173,15 +175,27 @@ class VirtualTap { void phyOnTcpConnect(PhySocket* sock, void** uptr, bool success) { + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); + ZTS_UNUSED_ARG(success); } void phyOnTcpAccept(PhySocket* sockL, PhySocket* sockN, void** uptrL, void** uptrN, const struct sockaddr* from) { + ZTS_UNUSED_ARG(sockL); + ZTS_UNUSED_ARG(sockN); + ZTS_UNUSED_ARG(uptrL); + ZTS_UNUSED_ARG(uptrN); + ZTS_UNUSED_ARG(from); } void phyOnTcpClose(PhySocket* sock, void** uptr) { + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } void phyOnUnixClose(PhySocket* sock, void** uptr) { + ZTS_UNUSED_ARG(sock); + ZTS_UNUSED_ARG(uptr); } };