mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2024-12-18 20:47:53 +00:00
Merge branch 'dev' into dev-low-bandwidth
This commit is contained in:
commit
4100615cd6
@ -1,50 +1,7 @@
|
|||||||
|
local registry = "084037375216.dkr.ecr.us-east-2.amazonaws.com";
|
||||||
|
|
||||||
local targets = [
|
local targets = [
|
||||||
//
|
{ "os": "linux", "name": "sid", "isas": [ "386", "armv7", "amd64", "arm64", "mips64le", "ppc64le", "s390x", "riscv64" ], "events": [ "push", "tag", "custom" ] },
|
||||||
// Render these into .drone.yaml by running "make drone"
|
|
||||||
//
|
|
||||||
{ "os": "linux", "name": "el9", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el8", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el7", "isas": [ "amd64", "ppc64le"], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el6", "isas": [ "amd64" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "amzn2", "isas": [ "amd64", "arm64" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc37", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc36", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc35", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "jammy", "isas": [ "amd64", "arm64", "armv7", "riscv64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "focal", "isas": [ "amd64", "arm64", "armv7", "riscv64", "ppc64le" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bionic", "isas": [ "amd64", "arm64", "386", "ppc64le", "s390x" ], "events": ["tag" ] },
|
|
||||||
{ "os": "linux", "name": "xenial", "isas": [ "amd64", "arm64", "386" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "sid", "isas": [ "386", "amd64", "arm64", "riscv64", "mips64le", "ppc64le", "s390x" ], "events": [ "push", "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bookworm", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bullseye", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "buster", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "stretch", "isas": [ "amd64", "arm64", "386" ], "events": [ "tag" ] },
|
|
||||||
// { "os": "windows", "name": "win2k19", "isas": [ "amd64" ], "events": ["push", "tag" ] }
|
|
||||||
];
|
|
||||||
|
|
||||||
local master_targets = [
|
|
||||||
//
|
|
||||||
// Render these into .drone.yaml by running "make drone"
|
|
||||||
//
|
|
||||||
{ "os": "linux", "name": "el9", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el8", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el7", "isas": [ "amd64", "ppc64le"], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "el6", "isas": [ "amd64" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "amzn2", "isas": [ "amd64", "arm64" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc37", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc36", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "fc35", "isas": [ "amd64", "arm64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "jammy", "isas": [ "amd64", "arm64", "armv7", "riscv64", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "focal", "isas": [ "amd64", "arm64", "armv7", "riscv64", "ppc64le" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bionic", "isas": [ "amd64", "arm64", "386", "ppc64le", "s390x" ], "events": ["tag" ] },
|
|
||||||
{ "os": "linux", "name": "xenial", "isas": [ "amd64", "arm64", "386" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "sid", "isas": [ "386", "amd64", "arm64", "riscv64", "mips64le", "ppc64le", "s390x" ], "events": [ "push", "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bookworm", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "bullseye", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "buster", "isas": [ "amd64", "arm64", "armv7", "386", "mips64le", "ppc64le", "s390x" ], "events": [ "tag" ] },
|
|
||||||
{ "os": "linux", "name": "stretch", "isas": [ "amd64", "arm64", "386" ], "events": [ "tag" ] },
|
|
||||||
// { "os": "windows", "name": "win2k19", "isas": [ "amd64" ], "events": ["push", "tag" ] }
|
|
||||||
];
|
];
|
||||||
|
|
||||||
local Build(platform, os, isa, events) = {
|
local Build(platform, os, isa, events) = {
|
||||||
@ -56,27 +13,18 @@ local Build(platform, os, isa, events) = {
|
|||||||
"steps": [
|
"steps": [
|
||||||
{
|
{
|
||||||
"name": "build",
|
"name": "build",
|
||||||
"image": "registry.sean.farm/honda-builder",
|
"image": registry + "/honda-builder",
|
||||||
"commands": [ "./ci/scripts/build.sh " + platform + " " + isa + " " + "100.0.0+${DRONE_COMMIT_SHA:0:8}" + " " + "${DRONE_BUILD_EVENT}" ]
|
"commands": [
|
||||||
},
|
"aws ecr get-login-password --region us-east-2 | docker login --username AWS --password-stdin " + registry,
|
||||||
{
|
"./ci/scripts/build.sh " + platform + " " + isa + " " + "100.0.0+${DRONE_COMMIT_SHA:0:8}" + " " + "${DRONE_BUILD_EVENT}"
|
||||||
"name": "list",
|
]
|
||||||
"image": "registry.sean.farm/honda-builder",
|
|
||||||
"commands": [ "ls -la " + platform ]
|
|
||||||
},
|
},
|
||||||
// {
|
// {
|
||||||
// "name": "notify-mattermost",
|
// "name": "list",
|
||||||
// "image": "registry.sean.farm/mattermost-notify",
|
// "image": registry + "/honda-builder",
|
||||||
// "environment": {
|
// "commands": [ "ls -la " + platform ]
|
||||||
// "token": { "from_secret": "mattermost-token" },
|
// },
|
||||||
// "host": { "from_secret": "mattermost-host" },
|
|
||||||
// "channel": { "from_secret": "mattermost-channel" },
|
|
||||||
// "maxRetry": 3,
|
|
||||||
// },
|
|
||||||
// "when": { "status": [ "failure" ] }
|
|
||||||
// }
|
|
||||||
],
|
],
|
||||||
"image_pull_secrets": [ "dockerconfigjson" ],
|
|
||||||
[ if isa == "arm64" || isa == "armv7" then "platform" ]: { os: os, arch: "arm64" },
|
[ if isa == "arm64" || isa == "armv7" then "platform" ]: { os: os, arch: "arm64" },
|
||||||
"trigger": { "event": events }
|
"trigger": { "event": events }
|
||||||
};
|
};
|
||||||
|
2565
.drone.yml
2565
.drone.yml
File diff suppressed because it is too large
Load Diff
@ -32,7 +32,7 @@ Note that releases are coming few and far between because most of our dev effort
|
|||||||
|
|
||||||
# 2022-04-25 -- Version 1.8.9
|
# 2022-04-25 -- Version 1.8.9
|
||||||
|
|
||||||
* Fixed a long-standing and strange bug that was causing sporadic "phantom" packet authentication failures. Not a security problem but could be behind spordaic reports of link failures under some conditions.
|
* Fixed a long-standing and strange bug that was causing sporadic "phantom" packet authentication failures. Not a security problem but could be behind sporadic reports of link failures under some conditions.
|
||||||
* Fized a memory leak in SSO/OIDC support.
|
* Fized a memory leak in SSO/OIDC support.
|
||||||
* Fixed SSO/OIDC display error on CLI.
|
* Fixed SSO/OIDC display error on CLI.
|
||||||
* Fixed a bug causing nodes to sometimes fail to push certs to each other (primarily affects SSO/OIDC use cases).
|
* Fixed a bug causing nodes to sometimes fail to push certs to each other (primarily affects SSO/OIDC use cases).
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
ARG PLATFORM
|
ARG PLATFORM
|
||||||
FROM registry.sean.farm/${PLATFORM}-builder as stage
|
FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage
|
||||||
WORKDIR /work/build
|
WORKDIR /work/build
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN make debian
|
RUN make debian
|
||||||
|
5
ci/Dockerfile.none
Normal file
5
ci/Dockerfile.none
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
ARG PLATFORM
|
||||||
|
FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage
|
||||||
|
WORKDIR /work
|
||||||
|
COPY . .
|
||||||
|
RUN make
|
@ -1,5 +1,5 @@
|
|||||||
ARG PLATFORM
|
ARG PLATFORM
|
||||||
FROM registry.sean.farm/${PLATFORM}-builder as stage
|
FROM 084037375216.dkr.ecr.us-east-2.amazonaws.com/${PLATFORM}-builder as stage
|
||||||
WORKDIR /root/rpmbuild/BUILD
|
WORKDIR /root/rpmbuild/BUILD
|
||||||
COPY . .
|
COPY . .
|
||||||
RUN make redhat
|
RUN make redhat
|
||||||
|
@ -8,6 +8,9 @@ export VERSION=$3
|
|||||||
export EVENT=$4
|
export EVENT=$4
|
||||||
|
|
||||||
case $PLATFORM in
|
case $PLATFORM in
|
||||||
|
sid)
|
||||||
|
export PKGFMT=none
|
||||||
|
;;
|
||||||
el*|fc*|amzn*)
|
el*|fc*|amzn*)
|
||||||
export PKGFMT=rpm
|
export PKGFMT=rpm
|
||||||
;;
|
;;
|
||||||
@ -15,22 +18,21 @@ case $PLATFORM in
|
|||||||
export PKGFMT=deb
|
export PKGFMT=deb
|
||||||
esac
|
esac
|
||||||
|
|
||||||
# OSX
|
#
|
||||||
# x86_64-apple-darwin
|
# Allow user to drop in custom Dockerfile for PLATFORM
|
||||||
# aarch64-apple-darwin
|
#
|
||||||
|
|
||||||
# Windows
|
if [ -f "ci/Dockerfile.${PLATFORM}" ]; then
|
||||||
# x86_64-pc-windows-msvc
|
export DOCKERFILE="ci/Dockerfile.${PLATFORM}"
|
||||||
# i686-pc-windows-msvc
|
else
|
||||||
# aarch64-pc-windows-msvc
|
export DOCKERFILE="ci/Dockerfile.${PKGFMT}"
|
||||||
|
fi
|
||||||
|
|
||||||
# Linux
|
#
|
||||||
# i686-unknown-linux-gnu
|
# Rust sometimes gets confused about where it's running.
|
||||||
# x86_64-unknown-linux-gnu
|
# Normally, the build images will have Rust pre-baked.
|
||||||
# arm-unknown-linux-gnueabi ?
|
# Pass RUST_TRIPLET for convenience when using a custom Dockerfile
|
||||||
# arm-unknown-linux-gnueabihf ?
|
#
|
||||||
# armv7-unknown-linux-gnueabihf
|
|
||||||
#
|
|
||||||
|
|
||||||
case $ZT_ISA in
|
case $ZT_ISA in
|
||||||
386)
|
386)
|
||||||
@ -41,13 +43,9 @@ case $ZT_ISA in
|
|||||||
export DOCKER_ARCH=amd64
|
export DOCKER_ARCH=amd64
|
||||||
export RUST_TRIPLET=x86_64-unknown-linux-gnu
|
export RUST_TRIPLET=x86_64-unknown-linux-gnu
|
||||||
;;
|
;;
|
||||||
armv6)
|
armv7)
|
||||||
export DOCKER_ARCH=arm/v6
|
|
||||||
export RUST_TRIPLET=arm-unknown-linux-gnueabi
|
|
||||||
;;
|
|
||||||
armv7)
|
|
||||||
export DOCKER_ARCH=arm/v7
|
export DOCKER_ARCH=arm/v7
|
||||||
export RUST_TRIPLET=arm-unknown-linux-gnueabihf
|
export RUST_TRIPLET=armv7-unknown-linux-gnueabihf
|
||||||
;;
|
;;
|
||||||
arm64)
|
arm64)
|
||||||
export DOCKER_ARCH=arm64/v8
|
export DOCKER_ARCH=arm64/v8
|
||||||
@ -60,7 +58,7 @@ case $ZT_ISA in
|
|||||||
ppc64le)
|
ppc64le)
|
||||||
export DOCKER_ARCH=ppc64le
|
export DOCKER_ARCH=ppc64le
|
||||||
export RUST_TRIPLET=powerpc64le-unknown-linux-gnu
|
export RUST_TRIPLET=powerpc64le-unknown-linux-gnu
|
||||||
;;
|
;;
|
||||||
mips64le)
|
mips64le)
|
||||||
export DOCKER_ARCH=mips64le
|
export DOCKER_ARCH=mips64le
|
||||||
export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64
|
export RUST_TRIPLET=mips64el-unknown-linux-gnuabi64
|
||||||
@ -69,17 +67,15 @@ case $ZT_ISA in
|
|||||||
export DOCKER_ARCH=s390x
|
export DOCKER_ARCH=s390x
|
||||||
export RUST_TRIPLET=s390x-unknown-linux-gnu
|
export RUST_TRIPLET=s390x-unknown-linux-gnu
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
echo "ERROR: could not determine architecture settings. PLEASE FIX ME"
|
echo "ERROR: could not determine architecture settings. PLEASE FIX ME"
|
||||||
exit 1
|
exit 1
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
if [ -f "ci/Dockerfile.${PLATFORM}" ]; then
|
#
|
||||||
export DOCKERFILE="ci/Dockerfile.${PLATFORM}"
|
# Print debug info
|
||||||
else
|
#
|
||||||
export DOCKERFILE="ci/Dockerfile.${PKGFMT}"
|
|
||||||
fi
|
|
||||||
|
|
||||||
echo "#~~~~~~~~~~~~~~~~~~~~"
|
echo "#~~~~~~~~~~~~~~~~~~~~"
|
||||||
echo "$0 variables:"
|
echo "$0 variables:"
|
||||||
@ -94,23 +90,37 @@ echo "PWD: ${PWD}"
|
|||||||
echo "DOCKERFILE: ${DOCKERFILE}"
|
echo "DOCKERFILE: ${DOCKERFILE}"
|
||||||
echo "#~~~~~~~~~~~~~~~~~~~~"
|
echo "#~~~~~~~~~~~~~~~~~~~~"
|
||||||
|
|
||||||
if [ ${EVENT} == "push" ]; then
|
#
|
||||||
make munge_rpm zerotier-one.spec VERSION=${VERSION}
|
# Munge RPM and Deb
|
||||||
make munge_deb debian/changelog VERSION=${VERSION}
|
#
|
||||||
|
|
||||||
|
if [ ${PKGFMT} != "none" ] && [ ${EVENT} != "tag" ]; then
|
||||||
|
make munge_rpm zerotier-one.spec VERSION=${VERSION}
|
||||||
|
make munge_deb debian/changelog VERSION=${VERSION}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
export DOCKER_BUILDKIT=1
|
#
|
||||||
docker run --privileged --rm tonistiigi/binfmt --install all
|
# Assemble buildx arguments
|
||||||
|
#
|
||||||
|
|
||||||
# docker pull --platform linux/${DOCKER_ARCH} registry.sean.farm/${PLATFORM}-builder
|
build_args=(
|
||||||
|
--no-cache
|
||||||
|
--build-arg PLATFORM=${PLATFORM}
|
||||||
|
--build-arg RUST_TRIPLET=${RUST_TRIPLET}
|
||||||
|
--build-arg DOCKER_ARCH=${DOCKER_ARCH}
|
||||||
|
--platform linux/${DOCKER_ARCH}
|
||||||
|
-f ${DOCKERFILE}
|
||||||
|
-t build
|
||||||
|
.
|
||||||
|
)
|
||||||
|
|
||||||
docker buildx build \
|
if [ ${PKGFMT} != "none" ]; then
|
||||||
--build-arg PLATFORM="${PLATFORM}" \
|
build_args+=("--output type=local,dest=.")
|
||||||
--build-arg RUST_TRIPLET="${RUST_TRIPLET}" \
|
build_args+=("--target export")
|
||||||
--build-arg DOCKER_ARCH="${DOCKER_ARCH}" \
|
fi
|
||||||
--platform linux/${DOCKER_ARCH} \
|
|
||||||
-f ${DOCKERFILE} \
|
#
|
||||||
-t build \
|
# Do build
|
||||||
. \
|
#
|
||||||
--output type=local,dest=. \
|
|
||||||
--target export
|
docker buildx build ${build_args[@]}
|
||||||
|
@ -1208,7 +1208,7 @@ typedef struct
|
|||||||
bool ssoEnabled;
|
bool ssoEnabled;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* SSO verison
|
* SSO version
|
||||||
*/
|
*/
|
||||||
uint64_t ssoVersion;
|
uint64_t ssoVersion;
|
||||||
|
|
||||||
@ -2066,7 +2066,7 @@ ZT_SDK_API int ZT_Node_sendUserMessage(ZT_Node *node,void *tptr,uint64_t dest,ui
|
|||||||
* NetworkConfigMaster base class in node/. No type checking is performed,
|
* NetworkConfigMaster base class in node/. No type checking is performed,
|
||||||
* so a pointer to anything else will result in a crash.
|
* so a pointer to anything else will result in a crash.
|
||||||
*
|
*
|
||||||
* @param node ZertTier One node
|
* @param node ZeroTier One node
|
||||||
* @param networkConfigMasterInstance Instance of NetworkConfigMaster C++ class or NULL to disable
|
* @param networkConfigMasterInstance Instance of NetworkConfigMaster C++ class or NULL to disable
|
||||||
* @return OK (0) or error code if a fatal error condition has occurred
|
* @return OK (0) or error code if a fatal error condition has occurred
|
||||||
*/
|
*/
|
||||||
|
@ -5,7 +5,7 @@ ZeroTier One SDK - Android JNI Wrapper
|
|||||||
Building
|
Building
|
||||||
-----
|
-----
|
||||||
|
|
||||||
Reqires:
|
Requires:
|
||||||
|
|
||||||
* JDK
|
* JDK
|
||||||
* ANT
|
* ANT
|
||||||
|
@ -1,66 +0,0 @@
|
|||||||
LOCAL_PATH := $(call my-dir)
|
|
||||||
|
|
||||||
include $(CLEAR_VARS)
|
|
||||||
|
|
||||||
LOCAL_MODULE := ZeroTierOneJNI
|
|
||||||
LOCAL_C_INCLUDES := \
|
|
||||||
$(ZT1)/include \
|
|
||||||
$(ZT1)/node \
|
|
||||||
$(ZT1)/osdep
|
|
||||||
|
|
||||||
LOCAL_LDLIBS := -llog
|
|
||||||
# LOCAL_CFLAGS := -g
|
|
||||||
|
|
||||||
APP_UNIFIED_HEADERS := true
|
|
||||||
|
|
||||||
LOCAL_CFLAGS := -DZT_USE_MINIUPNPC
|
|
||||||
ifeq ($(TARGET_ARCH_ABI),x86_64)
|
|
||||||
LOCAL_CXXFLAGS := -maes -mpclmul -msse3 -msse4.1
|
|
||||||
endif
|
|
||||||
ifeq ($(TARGET_ARCH_ABI),arm64-v8a)
|
|
||||||
LOCAL_ARM_NEON := true
|
|
||||||
LOCAL_CXXFLAGS := -march=armv8-a+crypto -mfloat-abi=softfp -mfpu=neon -maes -isystem $NDK/sysroot/usr/include/$TRIPLE
|
|
||||||
endif
|
|
||||||
|
|
||||||
# ZeroTierOne SDK source files
|
|
||||||
LOCAL_SRC_FILES := \
|
|
||||||
$(ZT1)/node/AES.cpp \
|
|
||||||
$(ZT1)/node/AES_aesni.cpp \
|
|
||||||
$(ZT1)/node/AES_armcrypto.cpp \
|
|
||||||
$(ZT1)/node/Bond.cpp \
|
|
||||||
$(ZT1)/node/C25519.cpp \
|
|
||||||
$(ZT1)/node/Capability.cpp \
|
|
||||||
$(ZT1)/node/CertificateOfMembership.cpp \
|
|
||||||
$(ZT1)/node/CertificateOfOwnership.cpp \
|
|
||||||
$(ZT1)/node/Identity.cpp \
|
|
||||||
$(ZT1)/node/IncomingPacket.cpp \
|
|
||||||
$(ZT1)/node/InetAddress.cpp \
|
|
||||||
$(ZT1)/node/Membership.cpp \
|
|
||||||
$(ZT1)/node/Multicaster.cpp \
|
|
||||||
$(ZT1)/node/Network.cpp \
|
|
||||||
$(ZT1)/node/NetworkConfig.cpp \
|
|
||||||
$(ZT1)/node/Node.cpp \
|
|
||||||
$(ZT1)/node/OutboundMulticast.cpp \
|
|
||||||
$(ZT1)/node/Packet.cpp \
|
|
||||||
$(ZT1)/node/Path.cpp \
|
|
||||||
$(ZT1)/node/Peer.cpp \
|
|
||||||
$(ZT1)/node/Poly1305.cpp \
|
|
||||||
$(ZT1)/node/Revocation.cpp \
|
|
||||||
$(ZT1)/node/Salsa20.cpp \
|
|
||||||
$(ZT1)/node/SelfAwareness.cpp \
|
|
||||||
$(ZT1)/node/SHA512.cpp \
|
|
||||||
$(ZT1)/node/Switch.cpp \
|
|
||||||
$(ZT1)/node/Tag.cpp \
|
|
||||||
$(ZT1)/node/Topology.cpp \
|
|
||||||
$(ZT1)/node/Trace.cpp \
|
|
||||||
$(ZT1)/node/Utils.cpp \
|
|
||||||
$(ZT1)/osdep/OSUtils.cpp
|
|
||||||
|
|
||||||
# JNI Files
|
|
||||||
LOCAL_SRC_FILES += \
|
|
||||||
com_zerotierone_sdk_Node.cpp \
|
|
||||||
ZT_jniarray.cpp \
|
|
||||||
ZT_jniutils.cpp \
|
|
||||||
ZT_jnilookup.cpp
|
|
||||||
|
|
||||||
include $(BUILD_SHARED_LIBRARY)
|
|
@ -1,5 +0,0 @@
|
|||||||
# NDK_TOOLCHAIN_VERSION := clang3.5
|
|
||||||
APP_STL := c++_static
|
|
||||||
APP_CPPFLAGS := -Wall -fstack-protector -fexceptions -fno-strict-aliasing -frtti -Wno-deprecated-register -DZT_NO_TYPE_PUNNING=1 -DZT_SSO_SUPPORTED=0 -DOMIT_JSON_SUPPORT=1
|
|
||||||
APP_PLATFORM := android-21
|
|
||||||
APP_ABI := all
|
|
@ -573,7 +573,26 @@ namespace {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
struct sockaddr_storage nullAddress = {0};
|
//
|
||||||
|
// was:
|
||||||
|
// struct sockaddr_storage nullAddress = {0};
|
||||||
|
//
|
||||||
|
// but was getting this warning:
|
||||||
|
// warning: suggest braces around initialization of subobject
|
||||||
|
//
|
||||||
|
// when building ZeroTierOne
|
||||||
|
//
|
||||||
|
struct sockaddr_storage nullAddress;
|
||||||
|
|
||||||
|
//
|
||||||
|
// It is possible to assume knowledge about internals of sockaddr_storage and construct
|
||||||
|
// correct 0-initializer, but it is simpler to just treat sockaddr_storage as opaque and
|
||||||
|
// use memset here to fill with 0
|
||||||
|
//
|
||||||
|
// This is also done in InetAddress.hpp for InetAddress
|
||||||
|
//
|
||||||
|
memset(&nullAddress, 0, sizeof(sockaddr_storage));
|
||||||
|
|
||||||
jobject remoteAddressObj = NULL;
|
jobject remoteAddressObj = NULL;
|
||||||
|
|
||||||
if(memcmp(remoteAddress, &nullAddress, sizeof(sockaddr_storage)) != 0)
|
if(memcmp(remoteAddress, &nullAddress, sizeof(sockaddr_storage)) != 0)
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
#include <cmath>
|
#include <cmath>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <cinttypes> // for PRId64, etc. macros
|
||||||
|
|
||||||
namespace ZeroTier {
|
namespace ZeroTier {
|
||||||
|
|
||||||
@ -546,7 +547,7 @@ int32_t Bond::generateQoSPacket(int pathIdx, int64_t now, char* qosBuffer)
|
|||||||
std::map<uint64_t, uint64_t>::iterator it = _paths[pathIdx].qosStatsIn.begin();
|
std::map<uint64_t, uint64_t>::iterator it = _paths[pathIdx].qosStatsIn.begin();
|
||||||
int i = 0;
|
int i = 0;
|
||||||
int numRecords = std::min(_paths[pathIdx].packetsReceivedSinceLastQoS, ZT_QOS_TABLE_SIZE);
|
int numRecords = std::min(_paths[pathIdx].packetsReceivedSinceLastQoS, ZT_QOS_TABLE_SIZE);
|
||||||
// debug("numRecords=%3d, packetsReceivedSinceLastQoS=%3d, _paths[pathIdx].qosStatsIn.size()=%3lu", numRecords, _paths[pathIdx].packetsReceivedSinceLastQoS, _paths[pathIdx].qosStatsIn.size());
|
// debug("numRecords=%3d, packetsReceivedSinceLastQoS=%3d, _paths[pathIdx].qosStatsIn.size()=%3zu", numRecords, _paths[pathIdx].packetsReceivedSinceLastQoS, _paths[pathIdx].qosStatsIn.size());
|
||||||
while (i < numRecords && it != _paths[pathIdx].qosStatsIn.end()) {
|
while (i < numRecords && it != _paths[pathIdx].qosStatsIn.end()) {
|
||||||
uint64_t id = it->first;
|
uint64_t id = it->first;
|
||||||
memcpy(qosBuffer, &id, sizeof(uint64_t));
|
memcpy(qosBuffer, &id, sizeof(uint64_t));
|
||||||
@ -582,7 +583,7 @@ bool Bond::assignFlowToBondedPath(SharedPtr<Flow>& flow, int64_t now, bool reass
|
|||||||
int nextBestQualIdx = ZT_MAX_PEER_NETWORK_PATHS;
|
int nextBestQualIdx = ZT_MAX_PEER_NETWORK_PATHS;
|
||||||
|
|
||||||
if (reassign) {
|
if (reassign) {
|
||||||
log("attempting to re-assign out-flow %04x previously on idx %d (%u / %lu flows)", flow->id, flow->assignedPath, _paths[_realIdxMap[flow->assignedPath]].assignedFlowCount, _flows.size());
|
log("attempting to re-assign out-flow %04x previously on idx %d (%u / %zu flows)", flow->id, flow->assignedPath, _paths[_realIdxMap[flow->assignedPath]].assignedFlowCount, _flows.size());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
debug("attempting to assign flow for the first time");
|
debug("attempting to assign flow for the first time");
|
||||||
@ -607,7 +608,7 @@ bool Bond::assignFlowToBondedPath(SharedPtr<Flow>& flow, int64_t now, bool reass
|
|||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (! _paths[_realIdxMap[bondedIdx]].shouldAvoid && randomLinkCapacity <= _paths[_realIdxMap[bondedIdx]].relativeLinkCapacity) {
|
if (! _paths[_realIdxMap[bondedIdx]].shouldAvoid && randomLinkCapacity <= _paths[_realIdxMap[bondedIdx]].relativeLinkCapacity) {
|
||||||
// debug(" assign out-flow %04x to link %s (%u / %lu flows)", flow->id, pathToStr(_paths[_realIdxMap[bondedIdx]].p).c_str(), _paths[_realIdxMap[bondedIdx]].assignedFlowCount, _flows.size());
|
// debug(" assign out-flow %04x to link %s (%u / %zu flows)", flow->id, pathToStr(_paths[_realIdxMap[bondedIdx]].p).c_str(), _paths[_realIdxMap[bondedIdx]].assignedFlowCount, _flows.size());
|
||||||
break; // Acceptable -- No violation of quality spec
|
break; // Acceptable -- No violation of quality spec
|
||||||
}
|
}
|
||||||
if (_paths[_realIdxMap[bondedIdx]].relativeQuality > bestQuality) {
|
if (_paths[_realIdxMap[bondedIdx]].relativeQuality > bestQuality) {
|
||||||
@ -636,7 +637,7 @@ bool Bond::assignFlowToBondedPath(SharedPtr<Flow>& flow, int64_t now, bool reass
|
|||||||
}
|
}
|
||||||
flow->assignPath(_abPathIdx, now);
|
flow->assignPath(_abPathIdx, now);
|
||||||
}
|
}
|
||||||
log("assign out-flow %04x to link %s (%u / %lu flows)", flow->id, pathToStr(_paths[flow->assignedPath].p).c_str(), _paths[flow->assignedPath].assignedFlowCount, _flows.size());
|
log("assign out-flow %04x to link %s (%u / %zu flows)", flow->id, pathToStr(_paths[flow->assignedPath].p).c_str(), _paths[flow->assignedPath].assignedFlowCount, _flows.size());
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -660,7 +661,7 @@ SharedPtr<Bond::Flow> Bond::createFlow(int pathIdx, int32_t flowId, unsigned cha
|
|||||||
if (pathIdx != ZT_MAX_PEER_NETWORK_PATHS) {
|
if (pathIdx != ZT_MAX_PEER_NETWORK_PATHS) {
|
||||||
flow->assignPath(pathIdx, now);
|
flow->assignPath(pathIdx, now);
|
||||||
_paths[pathIdx].assignedFlowCount++;
|
_paths[pathIdx].assignedFlowCount++;
|
||||||
debug("assign in-flow %04x to link %s (%u / %lu)", flow->id, pathToStr(_paths[pathIdx].p).c_str(), _paths[pathIdx].assignedFlowCount, _flows.size());
|
debug("assign in-flow %04x to link %s (%u / %zu)", flow->id, pathToStr(_paths[pathIdx].p).c_str(), _paths[pathIdx].assignedFlowCount, _flows.size());
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
* Add a flow when no path was provided. This means that it is an outgoing packet
|
* Add a flow when no path was provided. This means that it is an outgoing packet
|
||||||
@ -680,7 +681,7 @@ void Bond::forgetFlowsWhenNecessary(uint64_t age, bool oldest, int64_t now)
|
|||||||
if (age) { // Remove by specific age
|
if (age) { // Remove by specific age
|
||||||
while (it != _flows.end()) {
|
while (it != _flows.end()) {
|
||||||
if (it->second->age(now) > age) {
|
if (it->second->age(now) > age) {
|
||||||
debug("forget flow %04x (age %llu) (%u / %lu)", it->first, (unsigned long long)it->second->age(now), _paths[it->second->assignedPath].assignedFlowCount, (_flows.size() - 1));
|
debug("forget flow %04x (age %" PRId64 ") (%u / %zu)", it->first, it->second->age(now), _paths[it->second->assignedPath].assignedFlowCount, (_flows.size() - 1));
|
||||||
_paths[it->second->assignedPath].assignedFlowCount--;
|
_paths[it->second->assignedPath].assignedFlowCount--;
|
||||||
it = _flows.erase(it);
|
it = _flows.erase(it);
|
||||||
}
|
}
|
||||||
@ -699,7 +700,7 @@ void Bond::forgetFlowsWhenNecessary(uint64_t age, bool oldest, int64_t now)
|
|||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
if (oldestFlow != _flows.end()) {
|
if (oldestFlow != _flows.end()) {
|
||||||
debug("forget oldest flow %04x (age %llu) (total flows: %lu)", oldestFlow->first, (unsigned long long)oldestFlow->second->age(now), (unsigned long)(_flows.size() - 1));
|
debug("forget oldest flow %04x (age %" PRId64 ") (total flows: %zu)", oldestFlow->first, oldestFlow->second->age(now), _flows.size() - 1);
|
||||||
_paths[oldestFlow->second->assignedPath].assignedFlowCount--;
|
_paths[oldestFlow->second->assignedPath].assignedFlowCount--;
|
||||||
_flows.erase(oldestFlow);
|
_flows.erase(oldestFlow);
|
||||||
}
|
}
|
||||||
@ -824,7 +825,7 @@ void Bond::sendACK(void* tPtr, int pathIdx, int64_t localSocket, const InetAddre
|
|||||||
bytesToAck += it->second;
|
bytesToAck += it->second;
|
||||||
++it;
|
++it;
|
||||||
}
|
}
|
||||||
debug("sending ACK of %d bytes on path %s (table size = %d)", bytesToAck, pathToStr(_paths[pathIdx].p).c_str(), _paths[pathIdx].ackStatsIn.size());
|
debug("sending ACK of %d bytes on path %s (table size = %zu)", bytesToAck, pathToStr(_paths[pathIdx].p).c_str(), _paths[pathIdx].ackStatsIn.size());
|
||||||
outp.append<uint32_t>(bytesToAck);
|
outp.append<uint32_t>(bytesToAck);
|
||||||
if (atAddress) {
|
if (atAddress) {
|
||||||
outp.armor(_peer->key(), false, _peer->aesKeysIfSupported());
|
outp.armor(_peer->key(), false, _peer->aesKeysIfSupported());
|
||||||
@ -1919,7 +1920,7 @@ std::string Bond::pathToStr(const SharedPtr<Path>& path)
|
|||||||
SharedPtr<Link> link = getLink(path);
|
SharedPtr<Link> link = getLink(path);
|
||||||
if (link) {
|
if (link) {
|
||||||
std::string ifnameStr = std::string(link->ifname());
|
std::string ifnameStr = std::string(link->ifname());
|
||||||
snprintf(fullPathStr, 384, "%.16llx-%s/%s", (unsigned long long)(path->localSocket()), ifnameStr.c_str(), pathStr);
|
snprintf(fullPathStr, 384, "%.16" PRIx64 "-%s/%s", path->localSocket(), ifnameStr.c_str(), pathStr);
|
||||||
return std::string(fullPathStr);
|
return std::string(fullPathStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1935,11 +1936,11 @@ void Bond::dumpPathStatus(int64_t now, int pathIdx)
|
|||||||
std::string aliveOrDead = _paths[pathIdx].alive ? std::string("alive") : std::string("dead");
|
std::string aliveOrDead = _paths[pathIdx].alive ? std::string("alive") : std::string("dead");
|
||||||
std::string eligibleOrNot = _paths[pathIdx].eligible ? std::string("eligible") : std::string("ineligible");
|
std::string eligibleOrNot = _paths[pathIdx].eligible ? std::string("eligible") : std::string("ineligible");
|
||||||
std::string bondedOrNot = _paths[pathIdx].bonded ? std::string("bonded") : std::string("unbonded");
|
std::string bondedOrNot = _paths[pathIdx].bonded ? std::string("bonded") : std::string("unbonded");
|
||||||
log("path[%2u] --- %5s (in %7lld, out: %7lld), %10s, %8s, flows=%-6u lat=%-8.3f pdv=%-7.3f err=%-6.4f loss=%-6.4f qual=%-6.4f --- (%s) spare=%d",
|
log("path[%2u] --- %5s (in %7" PRId64 ", out: %7" PRId64 "), %10s, %8s, flows=%-6u lat=%-8.3f pdv=%-7.3f err=%-6.4f loss=%-6.4f qual=%-6.4f --- (%s) spare=%d",
|
||||||
pathIdx,
|
pathIdx,
|
||||||
aliveOrDead.c_str(),
|
aliveOrDead.c_str(),
|
||||||
static_cast<long long int>(_paths[pathIdx].p->age(now)),
|
_paths[pathIdx].p->age(now),
|
||||||
static_cast<long long int>(_paths[pathIdx].p->_lastOut == 0 ? 0 : now - _paths[pathIdx].p->_lastOut),
|
_paths[pathIdx].p->_lastOut == 0 ? static_cast<int64_t>(0) : now - _paths[pathIdx].p->_lastOut,
|
||||||
eligibleOrNot.c_str(),
|
eligibleOrNot.c_str(),
|
||||||
bondedOrNot.c_str(),
|
bondedOrNot.c_str(),
|
||||||
_paths[pathIdx].assignedFlowCount,
|
_paths[pathIdx].assignedFlowCount,
|
||||||
@ -1963,13 +1964,13 @@ void Bond::dumpInfo(int64_t now, bool force)
|
|||||||
_lastSummaryDump = now;
|
_lastSummaryDump = now;
|
||||||
float overhead = (_overheadBytes / (timeSinceLastDump / 1000.0f) / 1000.0f);
|
float overhead = (_overheadBytes / (timeSinceLastDump / 1000.0f) / 1000.0f);
|
||||||
_overheadBytes = 0;
|
_overheadBytes = 0;
|
||||||
log("bond: bp=%d, fi=%d, mi=%d, ud=%d, dd=%d, flows=%lu, leaf=%d, overhead=%f KB/s, links=(%d/%d)",
|
log("bond: bp=%d, fi=%" PRIu64 ", mi=%d, ud=%d, dd=%d, flows=%zu, leaf=%d, overhead=%f KB/s, links=(%d/%d)",
|
||||||
_policy,
|
_policy,
|
||||||
_failoverInterval,
|
_failoverInterval,
|
||||||
_monitorInterval,
|
_monitorInterval,
|
||||||
_upDelay,
|
_upDelay,
|
||||||
_downDelay,
|
_downDelay,
|
||||||
(unsigned long)_flows.size(),
|
_flows.size(),
|
||||||
_isLeaf,
|
_isLeaf,
|
||||||
overhead,
|
overhead,
|
||||||
_numAliveLinks,
|
_numAliveLinks,
|
||||||
|
@ -194,7 +194,7 @@ public:
|
|||||||
*/
|
*/
|
||||||
inline unsigned int preferenceRank() const
|
inline unsigned int preferenceRank() const
|
||||||
{
|
{
|
||||||
// This causes us to rank paths in order of IP scope rank (see InetAdddress.hpp) but
|
// This causes us to rank paths in order of IP scope rank (see InetAddress.hpp) but
|
||||||
// within each IP scope class to prefer IPv6 over IPv4.
|
// within each IP scope class to prefer IPv6 over IPv4.
|
||||||
return ( ((unsigned int)_ipScope << 1) | (unsigned int)(_addr.ss_family == AF_INET6) );
|
return ( ((unsigned int)_ipScope << 1) | (unsigned int)(_addr.ss_family == AF_INET6) );
|
||||||
}
|
}
|
||||||
|
@ -313,6 +313,13 @@ class Binder {
|
|||||||
#else
|
#else
|
||||||
const bool gotViaProc = false;
|
const bool gotViaProc = false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// prevent:
|
||||||
|
// warning: unused variable 'gotViaProc'
|
||||||
|
//
|
||||||
|
(void)gotViaProc;
|
||||||
|
|
||||||
#if ! (defined(ZT_SDK) || defined(__ANDROID__)) // getifaddrs() freeifaddrs() not available on Android
|
#if ! (defined(ZT_SDK) || defined(__ANDROID__)) // getifaddrs() freeifaddrs() not available on Android
|
||||||
if (! gotViaProc) {
|
if (! gotViaProc) {
|
||||||
struct ifaddrs* ifatbl = (struct ifaddrs*)0;
|
struct ifaddrs* ifatbl = (struct ifaddrs*)0;
|
||||||
|
@ -43,6 +43,10 @@
|
|||||||
|
|
||||||
#include "OSUtils.hpp"
|
#include "OSUtils.hpp"
|
||||||
|
|
||||||
|
#ifdef __GCC__
|
||||||
|
#pragma GCC diagnostic ignored "-Wdeprecated-declarations"
|
||||||
|
#endif
|
||||||
|
|
||||||
namespace ZeroTier {
|
namespace ZeroTier {
|
||||||
|
|
||||||
unsigned int OSUtils::ztsnprintf(char *buf,unsigned int len,const char *fmt,...)
|
unsigned int OSUtils::ztsnprintf(char *buf,unsigned int len,const char *fmt,...)
|
||||||
|
@ -667,7 +667,7 @@ static int testPacket()
|
|||||||
|
|
||||||
std::cout << "(compressed: " << complen << ", decompressed: " << a.size() << ") ";
|
std::cout << "(compressed: " << complen << ", decompressed: " << a.size() << ") ";
|
||||||
if (a != b) {
|
if (a != b) {
|
||||||
std::cout << "FAIL (compresssion)" << std::endl;
|
std::cout << "FAIL (compression)" << std::endl;
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1401,7 +1401,7 @@ public:
|
|||||||
|
|
||||||
/* Note: this is kind of restricted in what it'll take. It does not support
|
/* Note: this is kind of restricted in what it'll take. It does not support
|
||||||
* URL encoding, and /'s in URL args will screw it up. But the only URL args
|
* URL encoding, and /'s in URL args will screw it up. But the only URL args
|
||||||
* it really uses in ?jsonp=funcionName, and otherwise it just takes simple
|
* it really uses in ?jsonp=functionName, and otherwise it just takes simple
|
||||||
* paths to simply-named resources. */
|
* paths to simply-named resources. */
|
||||||
if (!ps.empty()) {
|
if (!ps.empty()) {
|
||||||
std::size_t qpos = ps[ps.size() - 1].find('?');
|
std::size_t qpos = ps[ps.size() - 1].find('?');
|
||||||
@ -2112,7 +2112,7 @@ public:
|
|||||||
// bondingPolicy cannot be used with allowTcpFallbackRelay
|
// bondingPolicy cannot be used with allowTcpFallbackRelay
|
||||||
_allowTcpFallbackRelay = OSUtils::jsonBool(settings["allowTcpFallbackRelay"],true);
|
_allowTcpFallbackRelay = OSUtils::jsonBool(settings["allowTcpFallbackRelay"],true);
|
||||||
#ifdef ZT_TCP_FALLBACK_RELAY
|
#ifdef ZT_TCP_FALLBACK_RELAY
|
||||||
_fallbackRelayAddress = InetAddress(OSUtils::jsonString("tcpFallbackRelay", ZT_TCP_FALLBACK_RELAY).c_str());
|
_fallbackRelayAddress = InetAddress(OSUtils::jsonString(settings["tcpFallbackRelay"], ZT_TCP_FALLBACK_RELAY).c_str());
|
||||||
#endif
|
#endif
|
||||||
_primaryPort = (unsigned int)OSUtils::jsonInt(settings["primaryPort"],(uint64_t)_primaryPort) & 0xffff;
|
_primaryPort = (unsigned int)OSUtils::jsonInt(settings["primaryPort"],(uint64_t)_primaryPort) & 0xffff;
|
||||||
_allowSecondaryPort = OSUtils::jsonBool(settings["allowSecondaryPort"],true);
|
_allowSecondaryPort = OSUtils::jsonBool(settings["allowSecondaryPort"],true);
|
||||||
|
Loading…
Reference in New Issue
Block a user