RX/TX improvements, build process improvements
This commit is contained in:
112
CMakeLists.txt
112
CMakeLists.txt
@@ -1,8 +1,6 @@
|
|||||||
cmake_minimum_required (VERSION 3.0)
|
cmake_minimum_required (VERSION 3.0)
|
||||||
project (zt)
|
project (zt)
|
||||||
|
|
||||||
set (CMAKE_VERBOSE_MAKEFILE OFF)
|
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# | PLATFORM/FEATURE AND IDE DETECTION |
|
# | PLATFORM/FEATURE AND IDE DETECTION |
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
@@ -45,10 +43,12 @@ endif ()
|
|||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "debug")
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "debug")
|
||||||
|
set (CMAKE_VERBOSE_MAKEFILE ON)
|
||||||
set (CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
set (CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||||
set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||||
endif()
|
endif()
|
||||||
if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "release")
|
if (CMAKE_BUILD_TYPE STREQUAL "Release" OR CMAKE_BUILD_TYPE STREQUAL "release")
|
||||||
|
set (CMAKE_VERBOSE_MAKEFILE OFF)
|
||||||
set (CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
set (CMAKE_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR}/bin)
|
||||||
set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
set (LIBRARY_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}/lib)
|
||||||
endif()
|
endif()
|
||||||
@@ -81,34 +81,57 @@ endif ()
|
|||||||
# | FLAGS |
|
# | FLAGS |
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
set (SILENCE "-Wno-unused-parameter \
|
set (SILENCE "${SILENCE} -Wno-unused-parameter")
|
||||||
-Wno-format \
|
set (SILENCE "${SILENCE} -Wno-format")
|
||||||
-Wno-tautological-constant-out-of-range-compare \
|
set (SILENCE "${SILENCE} -Wno-tautological-constant-out-of-range-compare ")
|
||||||
-Wno-macro-redefined -Wno-parentheses-equality \
|
set (SILENCE "${SILENCE} -Wno-macro-redefined")
|
||||||
-Wno-sign-compare \
|
set (SILENCE "${SILENCE} -Wno-parentheses-equality")
|
||||||
-Wno-unused-parameter \
|
set (SILENCE "${SILENCE} -Wno-sign-compare")
|
||||||
-Wno-unused-variable \
|
set (SILENCE "${SILENCE} -Wno-unused-variable")
|
||||||
-Wno-missing-field-initializers")
|
set (SILENCE "${SILENCE} -Wno-missing-field-initializers")
|
||||||
|
set (SILENCE "${SILENCE} -Wno-unused-parameter")
|
||||||
|
|
||||||
set (LIBZT_FLAGS "-D_USING_LWIP_DEFINITIONS_=1 -DZT_SDK")
|
set (ZT_FLAGS "${ZT_FLAGS} -DZT_USE_MINIUPNPC=1")
|
||||||
set (ZTCORE_FLAGS "-DZT_USE_MINIUPNPC=1 -DZT_SOFTWARE_UPDATE_DEFAULT=0")
|
set (ZT_FLAGS "${ZT_FLAGS} -DZT_SOFTWARE_UPDATE_DEFAULT=0")
|
||||||
|
set (ZT_FLAGS "${ZT_FLAGS} -D_USING_LWIP_DEFINITIONS_=0")
|
||||||
|
set (ZT_FLAGS "${ZT_FLAGS} -DZT_SDK=1")
|
||||||
|
|
||||||
|
set (DEBUG_OPTIMIZATION "-O3")
|
||||||
|
set (RELEASE_OPTIMIZATION "-O3")
|
||||||
|
|
||||||
if (BUILDING_WIN)
|
if (BUILDING_WIN)
|
||||||
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS}")
|
||||||
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNOMINMAX")
|
set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /EHsc -DNOMINMAX")
|
||||||
else ()
|
else ()
|
||||||
set (CMAKE_C_FLAGS
|
set (CMAKE_C_FLAGS
|
||||||
"${SILENCE} ${CMAKE_C_FLAGS} ${LIBZT_FLAGS} -fstack-protector -O3")
|
"${CMAKE_C_FLAGS} \
|
||||||
|
${ZT_FLAGS} \
|
||||||
|
-fstack-protector")
|
||||||
|
|
||||||
set (CMAKE_C_FLAGS_DEBUG
|
set (CMAKE_C_FLAGS_DEBUG
|
||||||
"${CMAKE_C_FLAGS_DEBUG} ${LIBZT_FLAGS} -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1")
|
"${CMAKE_C_FLAGS_DEBUG} \
|
||||||
|
${DEBUG_OPTIMIZATION} \
|
||||||
|
-DLWIP_DEBUG=1 -DLIBZT_DEBUG=1")
|
||||||
|
|
||||||
set (CMAKE_C_FLAGS_RELEASE
|
set (CMAKE_C_FLAGS_RELEASE
|
||||||
"${SILENCE} ${CMAKE_C_FLAGS_RELEASE} ${LIBZT_FLAGS} -fstack-protector -O3")
|
"${SILENCE} \
|
||||||
|
${CMAKE_C_FLAGS_RELEASE} \
|
||||||
|
${RELEASE_OPTIMIZATION} \
|
||||||
|
-fstack-protector")
|
||||||
|
|
||||||
set (CMAKE_CXX_FLAGS
|
set (CMAKE_CXX_FLAGS
|
||||||
"${CMAKE_CXX_FLAGS} ${SILENCE} ${LIBZT_FLAGS} -Wall -Wextra -std=c++11 -O3")
|
"${CMAKE_CXX_FLAGS} \
|
||||||
|
${ZT_FLAGS} -Wall -Wextra -std=c++11")
|
||||||
|
|
||||||
set (CMAKE_CXX_FLAGS_DEBUG
|
set (CMAKE_CXX_FLAGS_DEBUG
|
||||||
"${CMAKE_CXX_FLAGS_DEBUG} ${LIBZT_FLAGS} -std=c++11 -DLWIP_DEBUG=1 -DLIBZT_DEBUG=1")
|
"${CMAKE_CXX_FLAGS_DEBUG} \
|
||||||
|
${DEBUG_OPTIMIZATION} \
|
||||||
|
-DLWIP_DEBUG=1 -DLIBZT_DEBUG=1")
|
||||||
|
|
||||||
set (CMAKE_CXX_FLAGS_RELEASE
|
set (CMAKE_CXX_FLAGS_RELEASE
|
||||||
"${CMAKE_CXX_FLAGS_RELEASE} ${SILENCE} ${LIBZT_FLAGS} -std=c++11 -O3")
|
"${CMAKE_CXX_FLAGS_RELEASE} \
|
||||||
|
${SILENCE} \
|
||||||
|
${RELEASE_OPTIMIZATION}")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if (BUILDING_LINUX AND NOT BUILDING_ANDROID)
|
if (BUILDING_LINUX AND NOT BUILDING_ANDROID)
|
||||||
@@ -119,7 +142,7 @@ endif ()
|
|||||||
# | JNI |
|
# | JNI |
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
|
|
||||||
if (SDK_JNI)
|
if (SDK_JNI OR BUILDING_ANDROID)
|
||||||
MESSAGE (STATUS "Looking for JNI")
|
MESSAGE (STATUS "Looking for JNI")
|
||||||
|
|
||||||
if (BUILDING_WIN)
|
if (BUILDING_WIN)
|
||||||
@@ -155,7 +178,7 @@ if (SDK_JNI)
|
|||||||
message (STATUS "JNI not found")
|
message (STATUS "JNI not found")
|
||||||
endif ()
|
endif ()
|
||||||
|
|
||||||
if ((BUILDING_ANDROID OR JNI) AND JNI_FOUND)
|
if (JNI_FOUND)
|
||||||
add_definitions (-DSDK_JNI=1)
|
add_definitions (-DSDK_JNI=1)
|
||||||
endif ()
|
endif ()
|
||||||
endif () # SDK_JNI
|
endif () # SDK_JNI
|
||||||
@@ -268,7 +291,7 @@ endif ()
|
|||||||
# zto_obj
|
# zto_obj
|
||||||
add_library (zto_obj OBJECT ${zerotiercoreSrcGlob})
|
add_library (zto_obj OBJECT ${zerotiercoreSrcGlob})
|
||||||
set_target_properties (zto_obj PROPERTIES
|
set_target_properties (zto_obj PROPERTIES
|
||||||
COMPILE_FLAGS "${SILENCE} -std=c++11 -DZT_USE_MINIUPNPC=1 -DZT_SOFTWARE_UPDATE_DEFAULT=0")
|
COMPILE_FLAGS "${ZT_FLAGS}")
|
||||||
if (BUILDING_WIN)
|
if (BUILDING_WIN)
|
||||||
target_link_libraries (zto_obj ws2_32)
|
target_link_libraries (zto_obj ws2_32)
|
||||||
target_link_libraries (zto_obj ${shlwapi_LIBRARY_PATH})
|
target_link_libraries (zto_obj ${shlwapi_LIBRARY_PATH})
|
||||||
@@ -282,11 +305,14 @@ set_target_properties (libnatpmp_obj PROPERTIES COMPILE_FLAGS "")
|
|||||||
# miniupnpc_obj
|
# miniupnpc_obj
|
||||||
add_library (miniupnpc_obj OBJECT ${libminiupnpcSrcGlob})
|
add_library (miniupnpc_obj OBJECT ${libminiupnpcSrcGlob})
|
||||||
target_compile_definitions(miniupnpc_obj
|
target_compile_definitions(miniupnpc_obj
|
||||||
PRIVATE MACOSX ZT_USE_MINIUPNPC MINIUPNP_STATICLIB _DARWIN_C_SOURCE
|
PRIVATE ZT_USE_MINIUPNPC MINIUPNP_STATICLIB _DARWIN_C_SOURCE
|
||||||
MINIUPNPC_SET_SOCKET_TIMEOUT MINIUPNPC_GET_SRC_ADDR _BSD_SOURCE
|
MINIUPNPC_SET_SOCKET_TIMEOUT MINIUPNPC_GET_SRC_ADDR _BSD_SOURCE
|
||||||
_DEFAULT_SOURCE MINIUPNPC_VERSION_STRING=\"2.0\"
|
_DEFAULT_SOURCE MINIUPNPC_VERSION_STRING=\"2.0\"
|
||||||
UPNP_VERSION_STRING=\"UPnP/1.1\" ENABLE_STRNATPMPERR
|
UPNP_VERSION_STRING=\"UPnP/1.1\" ENABLE_STRNATPMPERR
|
||||||
OS_STRING=\"Darwin/15.0.0\")
|
OS_STRING=\"Darwin/15.0.0\")
|
||||||
|
if (BUILDING_DARWIN AND NOT IOS_FRAMEWORK)
|
||||||
|
target_compile_definitions(miniupnpc_obj PRIVATE MACOSX)
|
||||||
|
endif ()
|
||||||
|
|
||||||
# lwip_obj
|
# lwip_obj
|
||||||
add_library (lwip_obj OBJECT ${lwipSrcGlob})
|
add_library (lwip_obj OBJECT ${lwipSrcGlob})
|
||||||
@@ -294,13 +320,41 @@ set_target_properties (lwip_obj PROPERTIES COMPILE_FLAGS "")
|
|||||||
|
|
||||||
# libzt_obj
|
# libzt_obj
|
||||||
add_library (libzt_obj OBJECT ${libztSrcGlob})
|
add_library (libzt_obj OBJECT ${libztSrcGlob})
|
||||||
set_target_properties (libzt_obj PROPERTIES COMPILE_FLAGS "-std=c++11")
|
set_target_properties (libzt_obj PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}")
|
||||||
|
|
||||||
|
# PIC
|
||||||
|
|
||||||
|
# zto_pic
|
||||||
|
add_library (zto_pic ${zerotiercoreSrcGlob})
|
||||||
|
set_target_properties (zto_pic PROPERTIES
|
||||||
|
COMPILE_FLAGS "${ZT_FLAGS}"
|
||||||
|
POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
# libnatpmp_pic
|
||||||
|
add_library (natpmp_pic ${libnatpmpSrcGlob})
|
||||||
|
set_target_properties (natpmp_pic PROPERTIES
|
||||||
|
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\")
|
||||||
|
set_target_properties (miniupnpc_pic PROPERTIES
|
||||||
|
POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
|
# lwip_pic
|
||||||
add_library (lwip_pic ${lwipSrcGlob})
|
add_library (lwip_pic ${lwipSrcGlob})
|
||||||
set_target_properties (lwip_pic PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
set_target_properties (lwip_pic PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
||||||
add_library (zto_pic ${zerotiercoreSrcGlob})
|
|
||||||
set_target_properties (zto_pic PROPERTIES COMPILE_FLAGS "${SILENCE} -std=c++11")
|
# libzt_pic
|
||||||
set_target_properties (zto_pic PROPERTIES POSITION_INDEPENDENT_CODE ON)
|
add_library (zt_pic ${libztSrcGlob})
|
||||||
|
set_target_properties (zt_pic PROPERTIES
|
||||||
|
COMPILE_FLAGS "${ZT_FLAGS}"
|
||||||
|
POSITION_INDEPENDENT_CODE ON)
|
||||||
|
|
||||||
# -----------------------------------------------------------------------------
|
# -----------------------------------------------------------------------------
|
||||||
# | BUILD TARGETS (FINAL PRODUCT) |
|
# | BUILD TARGETS (FINAL PRODUCT) |
|
||||||
@@ -339,12 +393,12 @@ $<TARGET_OBJECTS:lwip_obj> ${libztSrcGlob})
|
|||||||
set_target_properties (${STATIC_LIB_NAME} PROPERTIES
|
set_target_properties (${STATIC_LIB_NAME} PROPERTIES
|
||||||
OUTPUT_NAME zt
|
OUTPUT_NAME zt
|
||||||
LIBRARY_OUTPUT_DIRECTORY ${INTERMEDIATE_LIBRARY_OUTPUT_PATH})
|
LIBRARY_OUTPUT_DIRECTORY ${INTERMEDIATE_LIBRARY_OUTPUT_PATH})
|
||||||
|
set_target_properties (${STATIC_LIB_NAME} PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}")
|
||||||
|
|
||||||
# libzt.so/dylib/dll
|
# libzt.so/dylib/dll
|
||||||
add_library (${DYNAMIC_LIB_NAME} SHARED ${libztSrcGlob})
|
add_library (${DYNAMIC_LIB_NAME} SHARED ${libztSrcGlob})
|
||||||
message (STATUS ${libztSrcGlob})
|
target_link_libraries (${DYNAMIC_LIB_NAME} zt_pic lwip_pic zto_pic natpmp_pic miniupnpc_pic)
|
||||||
target_link_libraries (${DYNAMIC_LIB_NAME} lwip_pic zto_pic)
|
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES COMPILE_FLAGS "${ZT_FLAGS}")
|
||||||
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES COMPILE_FLAGS "${SILENCE} -std=c++11 -DZT_SDK")
|
|
||||||
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${DYNAMIC_LIB_OUTPUT_NAME}
|
set_target_properties (${DYNAMIC_LIB_NAME} PROPERTIES OUTPUT_NAME ${DYNAMIC_LIB_OUTPUT_NAME}
|
||||||
WINDOWS_EXPORT_ALL_SYMBOLS true)
|
WINDOWS_EXPORT_ALL_SYMBOLS true)
|
||||||
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON)
|
||||||
|
|||||||
1
Makefile
1
Makefile
@@ -19,6 +19,7 @@ patch:
|
|||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
clean:
|
clean:
|
||||||
|
-rm -rf ports/android/app/build
|
||||||
-rm -rf tmp lib bin products
|
-rm -rf tmp lib bin products
|
||||||
-find ports -name ".externalNativeBuild" -exec rm -r "{}" \;
|
-find ports -name ".externalNativeBuild" -exec rm -r "{}" \;
|
||||||
-rm -f *.o *.s *.exp *.lib *.core core
|
-rm -f *.o *.s *.exp *.lib *.core core
|
||||||
|
|||||||
@@ -121,7 +121,7 @@ host_jar()
|
|||||||
# Build dynamic library
|
# Build dynamic library
|
||||||
BUILD_DIR=$(pwd)/tmp/${NORMALIZED_OSNAME}-$(uname -m)-jni-$1
|
BUILD_DIR=$(pwd)/tmp/${NORMALIZED_OSNAME}-$(uname -m)-jni-$1
|
||||||
UPPERCASE_CONFIG="$(tr '[:lower:]' '[:upper:]' <<< ${1:0:1})${1:1}"
|
UPPERCASE_CONFIG="$(tr '[:lower:]' '[:upper:]' <<< ${1:0:1})${1:1}"
|
||||||
cmake -H. -B$BUILD_DIR -DCMAKE_BUILD_TYPE=$UPPERCASE_CONFIG "-DJNI=1"
|
cmake -H. -B$BUILD_DIR -DCMAKE_BUILD_TYPE=$UPPERCASE_CONFIG -DSDK_JNI=ON "-DSDK_JNI=1"
|
||||||
cmake --build $BUILD_DIR $BUILD_CONCURRENCY
|
cmake --build $BUILD_DIR $BUILD_CONCURRENCY
|
||||||
# Copy dynamic library from previous build step
|
# Copy dynamic library from previous build step
|
||||||
# And, remove any lib that may exist prior. We don't want accidental successes
|
# And, remove any lib that may exist prior. We don't want accidental successes
|
||||||
@@ -186,7 +186,7 @@ android()
|
|||||||
mkdir -p $LIB_OUTPUT_DIR
|
mkdir -p $LIB_OUTPUT_DIR
|
||||||
# Build
|
# Build
|
||||||
UPPERCASE_CONFIG="$(tr '[:lower:]' '[:upper:]' <<< ${1:0:1})${1:1}"
|
UPPERCASE_CONFIG="$(tr '[:lower:]' '[:upper:]' <<< ${1:0:1})${1:1}"
|
||||||
CMAKE_FLAGS=$CMAKE_FLAGS" -DSDK_JNI=1"
|
CMAKE_FLAGS="-DSDK_JNI=1 -DSDK_JNI=ON"
|
||||||
cd $ANDROID_PROJ_DIR
|
cd $ANDROID_PROJ_DIR
|
||||||
./gradlew assemble$UPPERCASE_CONFIG # assembleRelease / assembleDebug
|
./gradlew assemble$UPPERCASE_CONFIG # assembleRelease / assembleDebug
|
||||||
mv $ANDROID_PROJ_DIR/app/build/outputs/aar/app-$1.aar \
|
mv $ANDROID_PROJ_DIR/app/build/outputs/aar/app-$1.aar \
|
||||||
@@ -200,8 +200,11 @@ cleanup()
|
|||||||
find $(pwd)/lib -type f -name 'liblwip_pic.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'liblwip_pic.a' -exec rm {} +
|
||||||
find $(pwd)/lib -type f -name 'liblwip.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'liblwip.a' -exec rm {} +
|
||||||
find $(pwd)/lib -type f -name 'libminiupnpc.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'libminiupnpc.a' -exec rm {} +
|
||||||
|
find $(pwd)/lib -type f -name 'libminiupnpc_pic.a' -exec rm {} +
|
||||||
find $(pwd)/lib -type f -name 'libnatpmp.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'libnatpmp.a' -exec rm {} +
|
||||||
|
find $(pwd)/lib -type f -name 'libnatpmp_pic.a' -exec rm {} +
|
||||||
find $(pwd)/lib -type f -name 'libzto_pic.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'libzto_pic.a' -exec rm {} +
|
||||||
|
find $(pwd)/lib -type f -name 'libzt_pic.a' -exec rm {} +
|
||||||
find $(pwd)/lib -type f -name 'libzerotiercore.a' -exec rm {} +
|
find $(pwd)/lib -type f -name 'libzerotiercore.a' -exec rm {} +
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -327,6 +327,7 @@ void *_zts_run_callbacks(void *thread_id)
|
|||||||
jint rs = jvm->DetachCurrentThread();
|
jint rs = jvm->DetachCurrentThread();
|
||||||
pthread_exit(0);
|
pthread_exit(0);
|
||||||
#endif
|
#endif
|
||||||
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////////////
|
||||||
|
|||||||
@@ -275,6 +275,8 @@ public:
|
|||||||
/* Packet input concurrency is disabled intentially since it
|
/* Packet input concurrency is disabled intentially since it
|
||||||
would force the user-space network stack to constantly re-order
|
would force the user-space network stack to constantly re-order
|
||||||
frames, resulting in lower RX performance */
|
frames, resulting in lower RX performance */
|
||||||
|
|
||||||
|
/*
|
||||||
_incomingPacketConcurrency = 1;
|
_incomingPacketConcurrency = 1;
|
||||||
// std::max((unsigned long)1,std::min((unsigned long)16,(unsigned long)std::thread::hardware_concurrency()));
|
// std::max((unsigned long)1,std::min((unsigned long)16,(unsigned long)std::thread::hardware_concurrency()));
|
||||||
char *envPool = std::getenv("INCOMING_PACKET_CONCURRENCY");
|
char *envPool = std::getenv("INCOMING_PACKET_CONCURRENCY");
|
||||||
@@ -311,7 +313,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
}
|
}*/
|
||||||
}
|
}
|
||||||
|
|
||||||
virtual ~OneServiceImpl()
|
virtual ~OneServiceImpl()
|
||||||
@@ -713,27 +715,24 @@ public:
|
|||||||
|
|
||||||
inline void phyOnDatagram(PhySocket *sock,void **uptr,const struct sockaddr *localAddr,const struct sockaddr *from,void *data,unsigned long len)
|
inline void phyOnDatagram(PhySocket *sock,void **uptr,const struct sockaddr *localAddr,const struct sockaddr *from,void *data,unsigned long len)
|
||||||
{
|
{
|
||||||
const uint64_t now = OSUtils::now();
|
|
||||||
if ((len >= 16)&&(reinterpret_cast<const InetAddress *>(from)->ipScope() == InetAddress::IP_SCOPE_GLOBAL))
|
if ((len >= 16)&&(reinterpret_cast<const InetAddress *>(from)->ipScope() == InetAddress::IP_SCOPE_GLOBAL))
|
||||||
_lastDirectReceiveFromGlobal = now;
|
_lastDirectReceiveFromGlobal = OSUtils::now();
|
||||||
|
const ZT_ResultCode rc = _node->processWirePacket(
|
||||||
OneServiceIncomingPacket *pkt;
|
(void *)0,
|
||||||
_incomingPacketMemoryPoolLock.lock();
|
OSUtils::now(),
|
||||||
if (_incomingPacketMemoryPool.empty()) {
|
reinterpret_cast<int64_t>(sock),
|
||||||
pkt = new OneServiceIncomingPacket;
|
reinterpret_cast<const struct sockaddr_storage *>(from), // Phy<> uses sockaddr_storage, so it'll always be that big
|
||||||
} else {
|
data,
|
||||||
pkt = _incomingPacketMemoryPool.back();
|
len,
|
||||||
_incomingPacketMemoryPool.pop_back();
|
&_nextBackgroundTaskDeadline);
|
||||||
|
if (ZT_ResultCode_isFatal(rc)) {
|
||||||
|
char tmp[256];
|
||||||
|
OSUtils::ztsnprintf(tmp,sizeof(tmp),"fatal error code from processWirePacket: %d",(int)rc);
|
||||||
|
Mutex::Lock _l(_termReason_m);
|
||||||
|
_termReason = ONE_UNRECOVERABLE_ERROR;
|
||||||
|
_fatalErrorMessage = tmp;
|
||||||
|
this->terminate();
|
||||||
}
|
}
|
||||||
_incomingPacketMemoryPoolLock.unlock();
|
|
||||||
|
|
||||||
pkt->now = now;
|
|
||||||
pkt->sock = reinterpret_cast<int64_t>(sock);
|
|
||||||
ZT_FAST_MEMCPY(&(pkt->from),from,sizeof(struct sockaddr_storage));
|
|
||||||
pkt->size = (unsigned int)len;
|
|
||||||
ZT_FAST_MEMCPY(pkt->data,data,len);
|
|
||||||
|
|
||||||
_incomingPacketQueue.postLimit(pkt,16 * _incomingPacketConcurrency);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
inline void phyOnTcpConnect(PhySocket *sock,void **uptr,bool success) {}
|
inline void phyOnTcpConnect(PhySocket *sock,void **uptr,bool success) {}
|
||||||
|
|||||||
@@ -152,7 +152,7 @@ JNIEXPORT jint JNICALL Java_com_zerotier_libzt_ZeroTier_accept(
|
|||||||
{
|
{
|
||||||
struct sockaddr_storage ss;
|
struct sockaddr_storage ss;
|
||||||
socklen_t addrlen = sizeof(struct sockaddr_storage);
|
socklen_t addrlen = sizeof(struct sockaddr_storage);
|
||||||
int retval =zts_accept(fd, (struct sockaddr *)&ss, &addrlen);
|
int retval = zts_accept(fd, (struct sockaddr *)&ss, &addrlen);
|
||||||
ss2zta(env, &ss, addr);
|
ss2zta(env, &ss, addr);
|
||||||
return retval > -1 ? retval : -(zts_errno);
|
return retval > -1 ? retval : -(zts_errno);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user