1.10.6 merge to main (#1930)
* add note about forceTcpRelay * Create a sample systemd unit for tcp proxy * set gitattributes for rust & cargo so hashes dont conflict on Windows * Revert "set gitattributes for rust & cargo so hashes dont conflict on Windows" This reverts commit032dc5c108
. * Turn off autocrlf for rust source Doesn't appear to play nice well when it comes to git and vendored cargo package hashes * Fix #1883 (#1886) Still unknown as to why, but the call to `nc->GetProperties()` can fail when setting a friendly name on the Windows virtual ethernet adapter. Ensure that `ncp` is not null before continuing and accessing the device GUID. * Don't vendor packages for zeroidc (#1885) * Added docker environment way to join networks (#1871) * add StringUtils * fix headers use recommended headers and remove unused headers * move extern "C" only JNI functions need to be exported * cleanup * fix ANDROID-50: RESULT_ERROR_BAD_PARAMETER typo * fix typo in log message * fix typos in JNI method signatures * fix typo * fix ANDROID-51: fieldName is uninitialized * fix ANDROID-35: memory leak * fix missing DeleteLocalRef in loops * update to use unique error codes * add GETENV macro * add LOG_TAG defines * ANDROID-48: add ZT_jnicache.cpp * ANDROID-48: use ZT_jnicache.cpp and remove ZT_jnilookup.cpp and ZT_jniarray.cpp * add Event.fromInt * add PeerRole.fromInt * add ResultCode.fromInt * fix ANDROID-36: issues with ResultCode * add VirtualNetworkConfigOperation.fromInt * fix ANDROID-40: VirtualNetworkConfigOperation out-of-sync with ZT_VirtualNetworkConfigOperation enum * add VirtualNetworkStatus.fromInt * fix ANDROID-37: VirtualNetworkStatus out-of-sync with ZT_VirtualNetworkStatus enum * add VirtualNetworkType.fromInt * make NodeStatus a plain data class * fix ANDROID-52: synchronization bug with nodeMap * Node init work: separate Node construction and init * add Node.toString * make PeerPhysicalPath a plain data class * remove unused PeerPhysicalPath.fixed * add array functions * make Peer a plain data class * make Version a plain data class * fix ANDROID-42: copy/paste error * fix ANDROID-49: VirtualNetworkConfig.equals is wrong * reimplement VirtualNetworkConfig.equals * reimplement VirtualNetworkConfig.compareTo * add VirtualNetworkConfig.hashCode * make VirtualNetworkConfig a plain data class * remove unused VirtualNetworkConfig.enabled * reimplement VirtualNetworkDNS.equals * add VirtualNetworkDNS.hashCode * make VirtualNetworkDNS a plain data class * reimplement VirtualNetworkRoute.equals * reimplement VirtualNetworkRoute.compareTo * reimplement VirtualNetworkRoute.toString * add VirtualNetworkRoute.hashCode * make VirtualNetworkRoute a plain data class * add isSocketAddressEmpty * add addressPort * add fromSocketAddressObject * invert logic in a couple of places and return early * newInetAddress and newInetSocketAddress work allow newInetSocketAddress to return NULL if given empty address * fix ANDROID-38: stack corruption in onSendPacketRequested * use GETENV macro * JniRef work JniRef does not use callbacks struct, so remove fix NewGlobalRef / DeleteGlobalRef mismatch * use PRId64 macros * switch statement work * comments and logging * Modifier 'public' is redundant for interface members * NodeException can be made a checked Exception * 'NodeException' does not define a 'serialVersionUID' field * 'finalize()' should not be overridden this is fine to do because ZeroTierOneService calls close() when it is done * error handling, error reporting, asserts, logging * simplify loadLibrary * rename Node.networks -> Node.networkConfigs * Windows file permissions fix (#1887) * Allow macOS interfaces to use multiple IP addresses (#1879) Co-authored-by: Sean OMeara <someara@users.noreply.github.com> Co-authored-by: Grant Limberg <glimberg@users.noreply.github.com> * Fix condition where full HELLOs might not be sent when necessary (#1877) Co-authored-by: Grant Limberg <glimberg@users.noreply.github.com> * 1.10.4 version bumps * Add security policy to repo (#1889) * [+] add e2k64 arch (#1890) * temp fix for ANDROID-56: crash inside newNetworkConfig from too many args * 1.10.4 release notes * Windows 1.10.4 Advanced Installer bump * Revert "temp fix for ANDROID-56: crash inside newNetworkConfig from too many args" This reverts commitdd627cd7f4
. * actual fix for ANDROID-56: crash inside newNetworkConfig cast all arguments to varargs functions as good style * Fix addIp being called with applied ips (#1897) This was getting called outside of the check for existing ips Because of the added ifdef and a brace getting moved to the wrong place. ``` if (! n.tap()->addIp(*ip)) { fprintf(stderr, "ERROR: unable to add ip address %s" ZT_EOL_S, ip->toString(ipbuf)); } WinFWHelper::newICMPRule(*ip, n.config().nwid); ``` * 1.10.5 (#1905) * 1.10.5 bump * 1.10.5 for Windows * 1.10.5 * Prevent path-learning loops (#1914) * Prevent path-learning loops * Only allow new overwrite if not bonded * fix binding temporary ipv6 addresses on macos (#1910) The check code wasn't running. I don't know why !defined(TARGET_OS_IOS) would exclude code on desktop macOS. I did a quick search and changed it to defined(TARGET_OS_MAC). Not 100% sure what the most correct solution there is. You can verify the old and new versions with `ifconfig | grep temporary` plus `zerotier-cli info -j` -> listeningOn * 1.10.6 (#1929) * 1.10.5 bump * 1.10.6 * 1.10.6 AIP for Windows. --------- Co-authored-by: travis laduke <travisladuke@gmail.com> Co-authored-by: Grant Limberg <grant.limberg@zerotier.com> Co-authored-by: Grant Limberg <glimberg@users.noreply.github.com> Co-authored-by: Leonardo Amaral <leleobhz@users.noreply.github.com> Co-authored-by: Brenton Bostick <bostick@gmail.com> Co-authored-by: Sean OMeara <someara@users.noreply.github.com> Co-authored-by: Joseph Henry <joseph-henry@users.noreply.github.com> Co-authored-by: Roman Peshkichev <roman.peshkichev@gmail.com>
This commit is contained in:
parent
1c5897895b
commit
a872cc3418
13 changed files with 184 additions and 181 deletions
|
@ -176,15 +176,7 @@ void setupJNICache(JavaVM *vm) {
|
|||
EXCEPTIONANDNULLCHECK(Peer_ctor = env->GetMethodID(Peer_class, "<init>", "(JIIIILcom/zerotier/sdk/PeerRole;[Lcom/zerotier/sdk/PeerPhysicalPath;)V"));
|
||||
EXCEPTIONANDNULLCHECK(Version_ctor = env->GetMethodID(Version_class, "<init>", "(III)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfigListener_onNetworkConfigurationUpdated_method = env->GetMethodID(VirtualNetworkConfigListener_class, "onNetworkConfigurationUpdated", "(JLcom/zerotier/sdk/VirtualNetworkConfigOperation;Lcom/zerotier/sdk/VirtualNetworkConfig;)I"));
|
||||
|
||||
|
||||
//
|
||||
// ANDROID-56: temporarily remove parameters to prevent crashing
|
||||
//
|
||||
// EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_ctor = env->GetMethodID(VirtualNetworkConfig_class, "<init>", "(JJLjava/lang/String;Lcom/zerotier/sdk/VirtualNetworkStatus;Lcom/zerotier/sdk/VirtualNetworkType;IZZZIJ[Ljava/net/InetSocketAddress;[Lcom/zerotier/sdk/VirtualNetworkRoute;Lcom/zerotier/sdk/VirtualNetworkDNS;)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_ctor = env->GetMethodID(VirtualNetworkConfig_class, "<init>", "(JJLjava/lang/String;Lcom/zerotier/sdk/VirtualNetworkStatus;Lcom/zerotier/sdk/VirtualNetworkType;IZZZ[Ljava/net/InetSocketAddress;[Lcom/zerotier/sdk/VirtualNetworkRoute;Lcom/zerotier/sdk/VirtualNetworkDNS;)V"));
|
||||
|
||||
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_ctor = env->GetMethodID(VirtualNetworkConfig_class, "<init>", "(JJLjava/lang/String;Lcom/zerotier/sdk/VirtualNetworkStatus;Lcom/zerotier/sdk/VirtualNetworkType;IZZZIJ[Ljava/net/InetSocketAddress;[Lcom/zerotier/sdk/VirtualNetworkRoute;Lcom/zerotier/sdk/VirtualNetworkDNS;)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkDNS_ctor = env->GetMethodID(VirtualNetworkDNS_class, "<init>", "(Ljava/lang/String;Ljava/util/ArrayList;)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkFrameListener_onVirtualNetworkFrame_method = env->GetMethodID(VirtualNetworkFrameListener_class, "onVirtualNetworkFrame", "(JJJJJ[B)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkRoute_ctor = env->GetMethodID(VirtualNetworkRoute_class, "<init>", "(Ljava/net/InetSocketAddress;Ljava/net/InetSocketAddress;II)V"));
|
||||
|
|
|
@ -31,7 +31,7 @@
|
|||
|
||||
jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
|
||||
{
|
||||
jobject resultObject = env->CallStaticObjectMethod(ResultCode_class, ResultCode_fromInt_method, code);
|
||||
jobject resultObject = env->CallStaticObjectMethod(ResultCode_class, ResultCode_fromInt_method, (jint)code);
|
||||
if(env->ExceptionCheck() || resultObject == NULL) {
|
||||
LOGE("Error creating ResultCode object");
|
||||
return NULL;
|
||||
|
@ -43,7 +43,7 @@ jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
|
|||
|
||||
jobject createVirtualNetworkStatus(JNIEnv *env, ZT_VirtualNetworkStatus status)
|
||||
{
|
||||
jobject statusObject = env->CallStaticObjectMethod(VirtualNetworkStatus_class, VirtualNetworkStatus_fromInt_method, status);
|
||||
jobject statusObject = env->CallStaticObjectMethod(VirtualNetworkStatus_class, VirtualNetworkStatus_fromInt_method, (jint)status);
|
||||
if (env->ExceptionCheck() || statusObject == NULL) {
|
||||
LOGE("Error creating VirtualNetworkStatus object");
|
||||
return NULL;
|
||||
|
@ -54,7 +54,7 @@ jobject createVirtualNetworkStatus(JNIEnv *env, ZT_VirtualNetworkStatus status)
|
|||
|
||||
jobject createEvent(JNIEnv *env, ZT_Event event)
|
||||
{
|
||||
jobject eventObject = env->CallStaticObjectMethod(Event_class, Event_fromInt_method, event);
|
||||
jobject eventObject = env->CallStaticObjectMethod(Event_class, Event_fromInt_method, (jint)event);
|
||||
if (env->ExceptionCheck() || eventObject == NULL) {
|
||||
LOGE("Error creating Event object");
|
||||
return NULL;
|
||||
|
@ -65,7 +65,7 @@ jobject createEvent(JNIEnv *env, ZT_Event event)
|
|||
|
||||
jobject createPeerRole(JNIEnv *env, ZT_PeerRole role)
|
||||
{
|
||||
jobject peerRoleObject = env->CallStaticObjectMethod(PeerRole_class, PeerRole_fromInt_method, role);
|
||||
jobject peerRoleObject = env->CallStaticObjectMethod(PeerRole_class, PeerRole_fromInt_method, (jint)role);
|
||||
if (env->ExceptionCheck() || peerRoleObject == NULL) {
|
||||
LOGE("Error creating PeerRole object");
|
||||
return NULL;
|
||||
|
@ -76,7 +76,7 @@ jobject createPeerRole(JNIEnv *env, ZT_PeerRole role)
|
|||
|
||||
jobject createVirtualNetworkType(JNIEnv *env, ZT_VirtualNetworkType type)
|
||||
{
|
||||
jobject vntypeObject = env->CallStaticObjectMethod(VirtualNetworkType_class, VirtualNetworkType_fromInt_method, type);
|
||||
jobject vntypeObject = env->CallStaticObjectMethod(VirtualNetworkType_class, VirtualNetworkType_fromInt_method, (jint)type);
|
||||
if (env->ExceptionCheck() || vntypeObject == NULL) {
|
||||
LOGE("Error creating VirtualNetworkType object");
|
||||
return NULL;
|
||||
|
@ -87,7 +87,7 @@ jobject createVirtualNetworkType(JNIEnv *env, ZT_VirtualNetworkType type)
|
|||
|
||||
jobject createVirtualNetworkConfigOperation(JNIEnv *env, ZT_VirtualNetworkConfigOperation op)
|
||||
{
|
||||
jobject vnetConfigOpObject = env->CallStaticObjectMethod(VirtualNetworkConfigOperation_class, VirtualNetworkConfigOperation_fromInt_method, op);
|
||||
jobject vnetConfigOpObject = env->CallStaticObjectMethod(VirtualNetworkConfigOperation_class, VirtualNetworkConfigOperation_fromInt_method, (jint)op);
|
||||
if (env->ExceptionCheck() || vnetConfigOpObject == NULL) {
|
||||
LOGE("Error creating VirtualNetworkConfigOperation object");
|
||||
return NULL;
|
||||
|
@ -113,7 +113,7 @@ jobject newInetAddress(JNIEnv *env, const sockaddr_storage &addr)
|
|||
}
|
||||
|
||||
inetAddressObj = env->CallStaticObjectMethod(
|
||||
InetAddress_class, InetAddress_getByAddress_method, buff);
|
||||
InetAddress_class, InetAddress_getByAddress_method, (jbyteArray)buff);
|
||||
}
|
||||
break;
|
||||
case AF_INET:
|
||||
|
@ -127,7 +127,7 @@ jobject newInetAddress(JNIEnv *env, const sockaddr_storage &addr)
|
|||
}
|
||||
|
||||
inetAddressObj = env->CallStaticObjectMethod(
|
||||
InetAddress_class, InetAddress_getByAddress_method, buff);
|
||||
InetAddress_class, InetAddress_getByAddress_method, (jbyteArray)buff);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
@ -190,7 +190,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
|
|||
|
||||
int port = addressPort(addr);
|
||||
|
||||
jobject inetSocketAddressObject = env->NewObject(InetSocketAddress_class, InetSocketAddress_ctor, inetAddressObject, port);
|
||||
jobject inetSocketAddressObject = env->NewObject(InetSocketAddress_class, InetSocketAddress_ctor, (jobject)inetAddressObject, (jint)port);
|
||||
if(env->ExceptionCheck() || inetSocketAddressObject == NULL) {
|
||||
LOGE("Error creating InetSocketAddress object");
|
||||
return NULL;
|
||||
|
@ -211,10 +211,10 @@ jobject newPeerPhysicalPath(JNIEnv *env, const ZT_PeerPhysicalPath &ppp)
|
|||
jobject pppObject = env->NewObject(
|
||||
PeerPhysicalPath_class,
|
||||
PeerPhysicalPath_ctor,
|
||||
addressObject,
|
||||
ppp.lastSend,
|
||||
ppp.lastReceive,
|
||||
ppp.preferred);
|
||||
(jobject)addressObject,
|
||||
(jlong)ppp.lastSend,
|
||||
(jlong)ppp.lastReceive,
|
||||
(jboolean)ppp.preferred); // ANDROID-56: cast to correct size
|
||||
if(env->ExceptionCheck() || pppObject == NULL)
|
||||
{
|
||||
LOGE("Error creating PPP object");
|
||||
|
@ -240,13 +240,13 @@ jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
|
|||
jobject peerObject = env->NewObject(
|
||||
Peer_class,
|
||||
Peer_ctor,
|
||||
peer.address,
|
||||
peer.versionMajor,
|
||||
peer.versionMinor,
|
||||
peer.versionRev,
|
||||
peer.latency,
|
||||
peerRoleObj,
|
||||
arrayObject);
|
||||
(jlong)peer.address,
|
||||
(jint)peer.versionMajor,
|
||||
(jint)peer.versionMinor,
|
||||
(jint)peer.versionRev,
|
||||
(jint)peer.latency,
|
||||
(jobject)peerRoleObj,
|
||||
(jobjectArray)arrayObject);
|
||||
if(env->ExceptionCheck() || peerObject == NULL)
|
||||
{
|
||||
LOGE("Error creating Peer object");
|
||||
|
@ -298,23 +298,20 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
|
|||
jobject vnetConfigObj = env->NewObject(
|
||||
VirtualNetworkConfig_class,
|
||||
VirtualNetworkConfig_ctor,
|
||||
vnetConfig.nwid,
|
||||
vnetConfig.mac,
|
||||
nameStr,
|
||||
statusObject,
|
||||
typeObject,
|
||||
vnetConfig.mtu,
|
||||
vnetConfig.dhcp,
|
||||
vnetConfig.bridge,
|
||||
vnetConfig.broadcastEnabled,
|
||||
//
|
||||
// ANDROID-56: temporarily remove parameters to prevent crashing
|
||||
//
|
||||
// vnetConfig.portError,
|
||||
// vnetConfig.netconfRevision,
|
||||
assignedAddrArrayObj,
|
||||
routesArrayObj,
|
||||
dnsObj);
|
||||
(jlong)vnetConfig.nwid,
|
||||
(jlong)vnetConfig.mac,
|
||||
(jstring)nameStr,
|
||||
(jobject)statusObject,
|
||||
(jobject)typeObject,
|
||||
(jint)vnetConfig.mtu,
|
||||
(jboolean)vnetConfig.dhcp, // ANDROID-56: cast to correct size
|
||||
(jboolean)vnetConfig.bridge, // ANDROID-56: cast to correct size
|
||||
(jboolean)vnetConfig.broadcastEnabled, // ANDROID-56: cast to correct size
|
||||
(jint)vnetConfig.portError,
|
||||
(jlong)vnetConfig.netconfRevision,
|
||||
(jobjectArray)assignedAddrArrayObj,
|
||||
(jobjectArray)routesArrayObj,
|
||||
(jobject)dnsObj);
|
||||
if(env->ExceptionCheck() || vnetConfigObj == NULL)
|
||||
{
|
||||
LOGE("Error creating new VirtualNetworkConfig object");
|
||||
|
@ -327,7 +324,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
|
|||
jobject newVersion(JNIEnv *env, int major, int minor, int rev)
|
||||
{
|
||||
// create a com.zerotier.sdk.Version object
|
||||
jobject versionObj = env->NewObject(Version_class, Version_ctor, major, minor, rev);
|
||||
jobject versionObj = env->NewObject(Version_class, Version_ctor, (jint)major, (jint)minor, (jint)rev);
|
||||
if(env->ExceptionCheck() || versionObj == NULL)
|
||||
{
|
||||
LOGE("Error creating new Version object");
|
||||
|
@ -358,10 +355,10 @@ jobject newVirtualNetworkRoute(JNIEnv *env, const ZT_VirtualNetworkRoute &route)
|
|||
jobject routeObj = env->NewObject(
|
||||
VirtualNetworkRoute_class,
|
||||
VirtualNetworkRoute_ctor,
|
||||
targetObj,
|
||||
viaObj,
|
||||
route.flags,
|
||||
route.metric);
|
||||
(jobject)targetObj,
|
||||
(jobject)viaObj,
|
||||
(jint)route.flags, // ANDROID-56: cast to correct size
|
||||
(jint)route.metric); // ANDROID-56: cast to correct size
|
||||
if(env->ExceptionCheck() || routeObj == NULL)
|
||||
{
|
||||
LOGE("Exception creating VirtualNetworkRoute");
|
||||
|
@ -387,7 +384,7 @@ jobject newVirtualNetworkDNS(JNIEnv *env, const ZT_VirtualNetworkDNS &dns)
|
|||
return NULL;
|
||||
}
|
||||
|
||||
jobject addrList = env->NewObject(ArrayList_class, ArrayList_ctor, 0);
|
||||
jobject addrList = env->NewObject(ArrayList_class, ArrayList_ctor, (jint)0);
|
||||
if (env->ExceptionCheck() || addrList == NULL) {
|
||||
LOGE("Exception creating new ArrayList");
|
||||
return NULL;
|
||||
|
@ -409,7 +406,7 @@ jobject newVirtualNetworkDNS(JNIEnv *env, const ZT_VirtualNetworkDNS &dns)
|
|||
continue;
|
||||
}
|
||||
|
||||
env->CallBooleanMethod(addrList, ArrayList_add_method, addr);
|
||||
env->CallBooleanMethod(addrList, ArrayList_add_method, (jobject)addr);
|
||||
if(env->ExceptionCheck())
|
||||
{
|
||||
LOGE("Exception calling add");
|
||||
|
@ -422,8 +419,8 @@ jobject newVirtualNetworkDNS(JNIEnv *env, const ZT_VirtualNetworkDNS &dns)
|
|||
jobject dnsObj = env->NewObject(
|
||||
VirtualNetworkDNS_class,
|
||||
VirtualNetworkDNS_ctor,
|
||||
domain,
|
||||
addrList);
|
||||
(jstring)domain,
|
||||
(jobject)addrList);
|
||||
if (env->ExceptionCheck() || dnsObj == NULL) {
|
||||
LOGE("Exception creating new VirtualNetworkDNS");
|
||||
return NULL;
|
||||
|
@ -450,10 +447,10 @@ jobject newNodeStatus(JNIEnv *env, const ZT_NodeStatus &status) {
|
|||
jobject nodeStatusObj = env->NewObject(
|
||||
NodeStatus_class,
|
||||
NodeStatus_ctor,
|
||||
status.address,
|
||||
pubIdentStr,
|
||||
secIdentStr,
|
||||
status.online);
|
||||
(jlong)status.address,
|
||||
(jstring)pubIdentStr,
|
||||
(jstring)secIdentStr,
|
||||
(jboolean)status.online);
|
||||
if(env->ExceptionCheck() || nodeStatusObj == NULL) {
|
||||
LOGE("Exception creating new NodeStatus");
|
||||
return NULL;
|
||||
|
|
|
@ -162,7 +162,7 @@ namespace {
|
|||
jint ret = env->CallIntMethod(
|
||||
ref->configListener,
|
||||
VirtualNetworkConfigListener_onNetworkConfigurationUpdated_method,
|
||||
(jlong)nwid, operationObject, networkConfigObject);
|
||||
(jlong)nwid, (jobject)operationObject, (jobject)networkConfigObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onNetworkConfigurationUpdated");
|
||||
return -105;
|
||||
|
@ -213,7 +213,7 @@ namespace {
|
|||
return;
|
||||
}
|
||||
|
||||
env->CallVoidMethod(ref->frameListener, VirtualNetworkFrameListener_onVirtualNetworkFrame_method, (jlong)nwid, (jlong)sourceMac, (jlong)destMac, (jlong)etherType, (jlong)vlanid, dataArray);
|
||||
env->CallVoidMethod(ref->frameListener, VirtualNetworkFrameListener_onVirtualNetworkFrame_method, (jlong)nwid, (jlong)sourceMac, (jlong)destMac, (jlong)etherType, (jlong)vlanid, (jbyteArray)dataArray);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onVirtualNetworkFrame");
|
||||
return;
|
||||
|
@ -254,7 +254,7 @@ namespace {
|
|||
switch (event) {
|
||||
case ZT_EVENT_UP: {
|
||||
LOGD("Event Up");
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, eventObject);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, (jobject)eventObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onEvent");
|
||||
return;
|
||||
|
@ -263,7 +263,7 @@ namespace {
|
|||
}
|
||||
case ZT_EVENT_OFFLINE: {
|
||||
LOGD("Event Offline");
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, eventObject);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, (jobject)eventObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onEvent");
|
||||
return;
|
||||
|
@ -272,7 +272,7 @@ namespace {
|
|||
}
|
||||
case ZT_EVENT_ONLINE: {
|
||||
LOGD("Event Online");
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, eventObject);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, (jobject)eventObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onEvent");
|
||||
return;
|
||||
|
@ -281,7 +281,7 @@ namespace {
|
|||
}
|
||||
case ZT_EVENT_DOWN: {
|
||||
LOGD("Event Down");
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, eventObject);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, (jobject)eventObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onEvent");
|
||||
return;
|
||||
|
@ -291,7 +291,7 @@ namespace {
|
|||
case ZT_EVENT_FATAL_ERROR_IDENTITY_COLLISION: {
|
||||
LOGV("Identity Collision");
|
||||
// call onEvent()
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, eventObject);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onEvent_method, (jobject)eventObject);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onEvent");
|
||||
return;
|
||||
|
@ -311,7 +311,7 @@ namespace {
|
|||
return;
|
||||
}
|
||||
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onTrace_method, messageStr);
|
||||
env->CallVoidMethod(ref->eventListener, EventListener_onTrace_method, (jstring)messageStr);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onTrace");
|
||||
return;
|
||||
|
@ -398,7 +398,7 @@ namespace {
|
|||
|
||||
int retval = env->CallIntMethod(ref->dataStorePutListener,
|
||||
DataStorePutListener_onDataStorePut_method,
|
||||
nameStr, bufferObj, secure);
|
||||
(jstring)nameStr, (jbyteArray)bufferObj, (jboolean)secure);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onDataStorePut");
|
||||
return;
|
||||
|
@ -410,7 +410,7 @@ namespace {
|
|||
|
||||
} else {
|
||||
LOGD("JNI: Delete file: %s", p);
|
||||
int retval = env->CallIntMethod(ref->dataStorePutListener, DataStorePutListener_onDelete_method, nameStr);
|
||||
int retval = env->CallIntMethod(ref->dataStorePutListener, DataStorePutListener_onDelete_method, (jstring)nameStr);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onDelete");
|
||||
return;
|
||||
|
@ -500,8 +500,8 @@ namespace {
|
|||
int retval = (int)env->CallLongMethod(
|
||||
ref->dataStoreGetListener,
|
||||
DataStoreGetListener_onDataStoreGet_method,
|
||||
nameStr,
|
||||
bufferObj);
|
||||
(jstring)nameStr,
|
||||
(jbyteArray)bufferObj);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onDataStoreGet");
|
||||
return -106;
|
||||
|
@ -570,7 +570,7 @@ namespace {
|
|||
return -103;
|
||||
}
|
||||
|
||||
int retval = env->CallIntMethod(ref->packetSender, PacketSender_onSendPacketRequested_method, localSocket, remoteAddressObj, bufferObj, 0);
|
||||
int retval = env->CallIntMethod(ref->packetSender, PacketSender_onSendPacketRequested_method, (jlong)localSocket, (jobject)remoteAddressObj, (jbyteArray)bufferObj, (jint)0);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onSendPacketRequested");
|
||||
return -104;
|
||||
|
@ -616,7 +616,7 @@ namespace {
|
|||
return true;
|
||||
}
|
||||
|
||||
jboolean ret = env->CallBooleanMethod(ref->pathChecker, PathChecker_onPathCheck_method, address, localSocket, remoteAddressObj);
|
||||
jboolean ret = env->CallBooleanMethod(ref->pathChecker, PathChecker_onPathCheck_method, (jlong)address, (jlong)localSocket, (jobject)remoteAddressObj);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Exception calling onPathCheck");
|
||||
return true;
|
||||
|
@ -656,7 +656,7 @@ namespace {
|
|||
//
|
||||
// may be NULL
|
||||
//
|
||||
jobject sockAddressObject = env->CallObjectMethod(ref->pathChecker, PathChecker_onPathLookup_method, address, ss_family);
|
||||
jobject sockAddressObject = env->CallObjectMethod(ref->pathChecker, PathChecker_onPathLookup_method, (jlong)address, (jint)ss_family);
|
||||
if (env->ExceptionCheck()) {
|
||||
LOGE("Unable to call onPathLookup implementation");
|
||||
return false;
|
||||
|
|
|
@ -66,12 +66,9 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
|
||||
private final boolean broadcastEnabled;
|
||||
|
||||
//
|
||||
// ANDROID-56: temporarily remove parameters to prevent crashing
|
||||
//
|
||||
// private final int portError;
|
||||
//
|
||||
// private final long netconfRevision;
|
||||
private final int portError;
|
||||
|
||||
private final long netconfRevision;
|
||||
|
||||
private final InetSocketAddress[] assignedAddresses;
|
||||
|
||||
|
@ -79,7 +76,7 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
|
||||
private final VirtualNetworkDNS dns;
|
||||
|
||||
public VirtualNetworkConfig(long nwid, long mac, String name, VirtualNetworkStatus status, VirtualNetworkType type, int mtu, boolean dhcp, boolean bridge, boolean broadcastEnabled, InetSocketAddress[] assignedAddresses, VirtualNetworkRoute[] routes, VirtualNetworkDNS dns) {
|
||||
public VirtualNetworkConfig(long nwid, long mac, String name, VirtualNetworkStatus status, VirtualNetworkType type, int mtu, boolean dhcp, boolean bridge, boolean broadcastEnabled, int portError, long netconfRevision, InetSocketAddress[] assignedAddresses, VirtualNetworkRoute[] routes, VirtualNetworkDNS dns) {
|
||||
this.nwid = nwid;
|
||||
this.mac = mac;
|
||||
this.name = name;
|
||||
|
@ -92,11 +89,11 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
this.dhcp = dhcp;
|
||||
this.bridge = bridge;
|
||||
this.broadcastEnabled = broadcastEnabled;
|
||||
// this.portError = portError;
|
||||
// if (netconfRevision < 0) {
|
||||
// throw new RuntimeException("netconfRevision < 0: " + netconfRevision);
|
||||
// }
|
||||
// this.netconfRevision = netconfRevision;
|
||||
this.portError = portError;
|
||||
if (netconfRevision < 0) {
|
||||
throw new RuntimeException("netconfRevision < 0: " + netconfRevision);
|
||||
}
|
||||
this.netconfRevision = netconfRevision;
|
||||
this.assignedAddresses = assignedAddresses;
|
||||
this.routes = routes;
|
||||
this.dns = dns;
|
||||
|
@ -104,7 +101,7 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VirtualNetworkConfig(" + StringUtils.networkIdToString(nwid) + ", " + StringUtils.macAddressToString(mac) + ", " + name + ", " + status + ", " + type + ", " + mtu + ", " + dhcp + ", " + bridge + ", " + broadcastEnabled + ", " + Arrays.toString(assignedAddresses) + ", " + Arrays.toString(routes) + ", " + dns + ")";
|
||||
return "VirtualNetworkConfig(" + StringUtils.networkIdToString(nwid) + ", " + StringUtils.macAddressToString(mac) + ", " + name + ", " + status + ", " + type + ", " + mtu + ", " + dhcp + ", " + bridge + ", " + broadcastEnabled + ", " + portError + ", " + netconfRevision + ", " + Arrays.toString(assignedAddresses) + ", " + Arrays.toString(routes) + ", " + dns + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -171,17 +168,17 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
return false;
|
||||
}
|
||||
|
||||
// if (this.portError != cfg.portError) {
|
||||
// Log.i(TAG, "Port Error Changed. Old: " + this.portError + ", New: " + cfg.portError);
|
||||
//
|
||||
// return false;
|
||||
// }
|
||||
//
|
||||
// if (this.netconfRevision != cfg.netconfRevision) {
|
||||
// Log.i(TAG, "NetConfRevision Changed. Old: " + this.netconfRevision + ", New: " + cfg.netconfRevision);
|
||||
//
|
||||
// return false;
|
||||
// }
|
||||
if (this.portError != cfg.portError) {
|
||||
Log.i(TAG, "Port Error Changed. Old: " + this.portError + ", New: " + cfg.portError);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (this.netconfRevision != cfg.netconfRevision) {
|
||||
Log.i(TAG, "NetConfRevision Changed. Old: " + this.netconfRevision + ", New: " + cfg.netconfRevision);
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!Arrays.equals(assignedAddresses, cfg.assignedAddresses)) {
|
||||
|
||||
|
@ -280,8 +277,8 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
result = 37 * result + (dhcp ? 1 : 0);
|
||||
result = 37 * result + (bridge ? 1 : 0);
|
||||
result = 37 * result + (broadcastEnabled ? 1 : 0);
|
||||
// result = 37 * result + portError;
|
||||
// result = 37 * result + (int) (netconfRevision ^ (netconfRevision >>> 32));
|
||||
result = 37 * result + portError;
|
||||
result = 37 * result + (int) (netconfRevision ^ (netconfRevision >>> 32));
|
||||
result = 37 * result + Arrays.hashCode(assignedAddresses);
|
||||
result = 37 * result + Arrays.hashCode(routes);
|
||||
result = 37 * result + (dns == null ? 0 : dns.hashCode());
|
||||
|
@ -362,18 +359,18 @@ public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
|||
/**
|
||||
* If the network is in PORT_ERROR state, this is the error most recently returned by the port config callback
|
||||
*/
|
||||
// public int getPortError() {
|
||||
// return portError;
|
||||
// }
|
||||
public int getPortError() {
|
||||
return portError;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network config revision as reported by netconf master
|
||||
*
|
||||
* <p>If this is zero, it means we're still waiting for our netconf.</p>
|
||||
*/
|
||||
// public long getNetconfRevision() {
|
||||
// return netconfRevision;
|
||||
// }
|
||||
public long getNetconfRevision() {
|
||||
return netconfRevision;
|
||||
}
|
||||
|
||||
/**
|
||||
* ZeroTier-assigned addresses (in {@link InetSocketAddress} objects)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue