mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-06-06 20:43:44 +02:00
Merge branch 'dev' of http://10.6.6.2/zerotier/ZeroTierOne into dev
This commit is contained in:
commit
f8e18f2098
3 changed files with 44 additions and 40 deletions
|
@ -35,9 +35,9 @@ LOCAL_SRC_FILES := \
|
||||||
$(ZT1)/node/Switch.cpp \
|
$(ZT1)/node/Switch.cpp \
|
||||||
$(ZT1)/node/Tag.cpp \
|
$(ZT1)/node/Tag.cpp \
|
||||||
$(ZT1)/node/Topology.cpp \
|
$(ZT1)/node/Topology.cpp \
|
||||||
$(ZT1)/node/Utils.cpp \
|
$(ZT1)/node/Utils.cpp
|
||||||
$(ZT1)/osdep/Http.cpp \
|
# $(ZT1)/osdep/Http.cpp \
|
||||||
$(ZT1)/osdep/OSUtils.cpp
|
# $(ZT1)/osdep/OSUtils.cpp
|
||||||
|
|
||||||
# JNI Files
|
# JNI Files
|
||||||
LOCAL_SRC_FILES += \
|
LOCAL_SRC_FILES += \
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "ZT_jniutils.h"
|
#include "ZT_jniutils.h"
|
||||||
#include "ZT_jnilookup.h"
|
#include "ZT_jnilookup.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
@ -30,7 +30,7 @@ extern "C" {
|
||||||
jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
|
jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
|
||||||
{
|
{
|
||||||
jclass resultClass = NULL;
|
jclass resultClass = NULL;
|
||||||
|
|
||||||
jobject resultObject = NULL;
|
jobject resultObject = NULL;
|
||||||
|
|
||||||
resultClass = lookup.findClass("com/zerotier/sdk/ResultCode");
|
resultClass = lookup.findClass("com/zerotier/sdk/ResultCode");
|
||||||
|
@ -67,14 +67,14 @@ jobject createResultObject(JNIEnv *env, ZT_ResultCode code)
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = lookup.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;");
|
jfieldID enumField = lookup.findStaticField(resultClass, fieldName.c_str(), "Lcom/zerotier/sdk/ResultCode;");
|
||||||
if(env->ExceptionCheck() || enumField == NULL)
|
if(env->ExceptionCheck() || enumField == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error on FindStaticField");
|
LOGE("Error on FindStaticField");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
resultObject = env->GetStaticObjectField(resultClass, enumField);
|
resultObject = env->GetStaticObjectField(resultClass, enumField);
|
||||||
if(env->ExceptionCheck() || resultObject == NULL)
|
if(env->ExceptionCheck() || resultObject == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error on GetStaticObjectField");
|
LOGE("Error on GetStaticObjectField");
|
||||||
}
|
}
|
||||||
|
@ -154,6 +154,8 @@ jobject createEvent(JNIEnv *env, ZT_Event event)
|
||||||
case ZT_EVENT_TRACE:
|
case ZT_EVENT_TRACE:
|
||||||
fieldName = "EVENT_TRACE";
|
fieldName = "EVENT_TRACE";
|
||||||
break;
|
break;
|
||||||
|
case ZT_EVENT_USER_MESSAGE:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
jfieldID enumField = lookup.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;");
|
jfieldID enumField = lookup.findStaticField(eventClass, fieldName.c_str(), "Lcom/zerotier/sdk/Event;");
|
||||||
|
@ -332,7 +334,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject inetAddressObject = NULL;
|
jobject inetAddressObject = NULL;
|
||||||
|
|
||||||
if(addr.ss_family != 0)
|
if(addr.ss_family != 0)
|
||||||
{
|
{
|
||||||
inetAddressObject = newInetAddress(env, addr);
|
inetAddressObject = newInetAddress(env, addr);
|
||||||
|
@ -468,7 +470,7 @@ jobject newPeerPhysicalPath(JNIEnv *env, const ZT_PeerPhysicalPath &ppp)
|
||||||
return pppObject;
|
return pppObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
|
jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
|
||||||
{
|
{
|
||||||
LOGV("newPeer called");
|
LOGV("newPeer called");
|
||||||
|
|
||||||
|
@ -570,7 +572,7 @@ jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
|
||||||
|
|
||||||
jobjectArray arrayObject = env->NewObjectArray(
|
jobjectArray arrayObject = env->NewObjectArray(
|
||||||
peer.pathCount, peerPhysicalPathClass, NULL);
|
peer.pathCount, peerPhysicalPathClass, NULL);
|
||||||
if(env->ExceptionCheck() || arrayObject == NULL)
|
if(env->ExceptionCheck() || arrayObject == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Error creating PeerPhysicalPath[] array");
|
LOGE("Error creating PeerPhysicalPath[] array");
|
||||||
return NULL;
|
return NULL;
|
||||||
|
@ -709,7 +711,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
assignedAddressesField = lookup.findField(vnetConfigClass, "assignedAddresses",
|
assignedAddressesField = lookup.findField(vnetConfigClass, "assignedAddresses",
|
||||||
"[Ljava/net/InetSocketAddress;");
|
"[Ljava/net/InetSocketAddress;");
|
||||||
if(env->ExceptionCheck() || assignedAddressesField == NULL)
|
if(env->ExceptionCheck() || assignedAddressesField == NULL)
|
||||||
{
|
{
|
||||||
|
@ -717,7 +719,7 @@ jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
routesField = lookup.findField(vnetConfigClass, "routes",
|
routesField = lookup.findField(vnetConfigClass, "routes",
|
||||||
"[Lcom/zerotier/sdk/VirtualNetworkRoute;");
|
"[Lcom/zerotier/sdk/VirtualNetworkRoute;");
|
||||||
if(env->ExceptionCheck() || routesField == NULL)
|
if(env->ExceptionCheck() || routesField == NULL)
|
||||||
{
|
{
|
||||||
|
|
|
@ -139,8 +139,8 @@ namespace {
|
||||||
}
|
}
|
||||||
|
|
||||||
return env->CallIntMethod(
|
return env->CallIntMethod(
|
||||||
ref->configListener,
|
ref->configListener,
|
||||||
configListenerCallbackMethod,
|
configListenerCallbackMethod,
|
||||||
(jlong)nwid, operationObject, networkConfigObject);
|
(jlong)nwid, operationObject, networkConfigObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -203,7 +203,7 @@ namespace {
|
||||||
|
|
||||||
void EventCallback(ZT_Node *node,
|
void EventCallback(ZT_Node *node,
|
||||||
void *userData,
|
void *userData,
|
||||||
enum ZT_Event event,
|
enum ZT_Event event,
|
||||||
const void *data)
|
const void *data)
|
||||||
{
|
{
|
||||||
LOGV("EventCallback");
|
LOGV("EventCallback");
|
||||||
|
@ -291,6 +291,8 @@ namespace {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case ZT_EVENT_USER_MESSAGE:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -348,7 +350,7 @@ namespace {
|
||||||
objectName, buffer, bufferIndex, objectSizeObj);
|
objectName, buffer, bufferIndex, objectSizeObj);
|
||||||
|
|
||||||
long retval = (long)env->CallLongMethod(
|
long retval = (long)env->CallLongMethod(
|
||||||
ref->dataStoreGetListener, dataStoreGetCallbackMethod,
|
ref->dataStoreGetListener, dataStoreGetCallbackMethod,
|
||||||
nameStr, bufferObj, (jlong)bufferIndex, objectSizeObj);
|
nameStr, bufferObj, (jlong)bufferIndex, objectSizeObj);
|
||||||
|
|
||||||
if(retval > 0)
|
if(retval > 0)
|
||||||
|
@ -463,7 +465,7 @@ namespace {
|
||||||
LOGE("Couldn't find onSendPacketRequested method");
|
LOGE("Couldn't find onSendPacketRequested method");
|
||||||
return -2;
|
return -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject localAddressObj = NULL;
|
jobject localAddressObj = NULL;
|
||||||
if(memcmp(localAddress, &ZT_SOCKADDR_NULL, sizeof(sockaddr_storage)) != 0)
|
if(memcmp(localAddress, &ZT_SOCKADDR_NULL, sizeof(sockaddr_storage)) != 0)
|
||||||
{
|
{
|
||||||
|
@ -496,7 +498,7 @@ namespace {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
|
JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved)
|
||||||
{
|
{
|
||||||
lookup.setJavaVM(vm);
|
lookup.setJavaVM(vm);
|
||||||
return JNI_VERSION_1_6;
|
return JNI_VERSION_1_6;
|
||||||
|
@ -641,7 +643,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_node_1init(
|
||||||
ZeroTier::Mutex::Lock lock(nodeMapMutex);
|
ZeroTier::Mutex::Lock lock(nodeMapMutex);
|
||||||
ref->node = node;
|
ref->node = node;
|
||||||
nodeMap.insert(std::make_pair(ref->id, ref));
|
nodeMap.insert(std::make_pair(ref->id, ref));
|
||||||
|
|
||||||
|
|
||||||
return resultObject;
|
return resultObject;
|
||||||
}
|
}
|
||||||
|
@ -659,7 +661,7 @@ JNIEXPORT void JNICALL Java_com_zerotier_sdk_Node_node_1delete(
|
||||||
|
|
||||||
NodeMap::iterator found;
|
NodeMap::iterator found;
|
||||||
{
|
{
|
||||||
ZeroTier::Mutex::Lock lock(nodeMapMutex);
|
ZeroTier::Mutex::Lock lock(nodeMapMutex);
|
||||||
found = nodeMap.find(nodeId);
|
found = nodeMap.find(nodeId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -685,9 +687,9 @@ JNIEXPORT void JNICALL Java_com_zerotier_sdk_Node_node_1delete(
|
||||||
* Signature: (JJJJJII[B[J)Lcom/zerotier/sdk/ResultCode;
|
* Signature: (JJJJJII[B[J)Lcom/zerotier/sdk/ResultCode;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
|
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
|
||||||
JNIEnv *env, jobject obj,
|
JNIEnv *env, jobject obj,
|
||||||
jlong id,
|
jlong id,
|
||||||
jlong in_now,
|
jlong in_now,
|
||||||
jlong in_nwid,
|
jlong in_nwid,
|
||||||
jlong in_sourceMac,
|
jlong in_sourceMac,
|
||||||
jlong in_destMac,
|
jlong in_destMac,
|
||||||
|
@ -697,7 +699,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
|
||||||
jlongArray out_nextBackgroundTaskDeadline)
|
jlongArray out_nextBackgroundTaskDeadline)
|
||||||
{
|
{
|
||||||
uint64_t nodeId = (uint64_t) id;
|
uint64_t nodeId = (uint64_t) id;
|
||||||
|
|
||||||
ZT_Node *node = findNode(nodeId);
|
ZT_Node *node = findNode(nodeId);
|
||||||
if(node == NULL)
|
if(node == NULL)
|
||||||
{
|
{
|
||||||
|
@ -752,9 +754,9 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processVirtualNetworkFrame(
|
||||||
* Signature: (JJLjava/net/InetSocketAddress;I[B[J)Lcom/zerotier/sdk/ResultCode;
|
* Signature: (JJLjava/net/InetSocketAddress;I[B[J)Lcom/zerotier/sdk/ResultCode;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
JNIEnv *env, jobject obj,
|
JNIEnv *env, jobject obj,
|
||||||
jlong id,
|
jlong id,
|
||||||
jlong in_now,
|
jlong in_now,
|
||||||
jobject in_localAddress,
|
jobject in_localAddress,
|
||||||
jobject in_remoteAddress,
|
jobject in_remoteAddress,
|
||||||
jbyteArray in_packetData,
|
jbyteArray in_packetData,
|
||||||
|
@ -820,7 +822,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
jmethodID inetSock_getPort = lookup.findMethod(
|
jmethodID inetSock_getPort = lookup.findMethod(
|
||||||
InetSocketAddressClass, "getPort", "()I");
|
InetSocketAddressClass, "getPort", "()I");
|
||||||
|
|
||||||
if(env->ExceptionCheck() || inetSock_getPort == NULL)
|
if(env->ExceptionCheck() || inetSock_getPort == NULL)
|
||||||
{
|
{
|
||||||
LOGE("Couldn't find getPort method on InetSocketAddress");
|
LOGE("Couldn't find getPort method on InetSocketAddress");
|
||||||
return createResultObject(env, ZT_RESULT_FATAL_ERROR_INTERNAL);
|
return createResultObject(env, ZT_RESULT_FATAL_ERROR_INTERNAL);
|
||||||
|
@ -844,10 +846,10 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned int addrSize = env->GetArrayLength(remoteAddressArray);
|
unsigned int addrSize = env->GetArrayLength(remoteAddressArray);
|
||||||
|
|
||||||
|
|
||||||
sockaddr_storage localAddress = {};
|
sockaddr_storage localAddress = {};
|
||||||
|
|
||||||
if(localAddrObj == NULL)
|
if(localAddrObj == NULL)
|
||||||
{
|
{
|
||||||
localAddress = ZT_SOCKADDR_NULL;
|
localAddress = ZT_SOCKADDR_NULL;
|
||||||
|
@ -939,7 +941,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
localData,
|
localData,
|
||||||
packetLength,
|
packetLength,
|
||||||
&nextBackgroundTaskDeadline);
|
&nextBackgroundTaskDeadline);
|
||||||
if(rc != ZT_RESULT_OK)
|
if(rc != ZT_RESULT_OK)
|
||||||
{
|
{
|
||||||
LOGE("ZT_Node_processWirePacket returned: %d", rc);
|
LOGE("ZT_Node_processWirePacket returned: %d", rc);
|
||||||
}
|
}
|
||||||
|
@ -959,7 +961,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processWirePacket(
|
||||||
* Signature: (JJ[J)Lcom/zerotier/sdk/ResultCode;
|
* Signature: (JJ[J)Lcom/zerotier/sdk/ResultCode;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processBackgroundTasks(
|
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_processBackgroundTasks(
|
||||||
JNIEnv *env, jobject obj,
|
JNIEnv *env, jobject obj,
|
||||||
jlong id,
|
jlong id,
|
||||||
jlong in_now,
|
jlong in_now,
|
||||||
jlongArray out_nextBackgroundTaskDeadline)
|
jlongArray out_nextBackgroundTaskDeadline)
|
||||||
|
@ -1032,7 +1034,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_leave(
|
||||||
uint64_t nwid = (uint64_t)in_nwid;
|
uint64_t nwid = (uint64_t)in_nwid;
|
||||||
|
|
||||||
ZT_ResultCode rc = ZT_Node_leave(node, nwid, NULL);
|
ZT_ResultCode rc = ZT_Node_leave(node, nwid, NULL);
|
||||||
|
|
||||||
return createResultObject(env, rc);
|
return createResultObject(env, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1042,8 +1044,8 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_leave(
|
||||||
* Signature: (JJJJ)Lcom/zerotier/sdk/ResultCode;
|
* Signature: (JJJJ)Lcom/zerotier/sdk/ResultCode;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_multicastSubscribe(
|
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_multicastSubscribe(
|
||||||
JNIEnv *env, jobject obj,
|
JNIEnv *env, jobject obj,
|
||||||
jlong id,
|
jlong id,
|
||||||
jlong in_nwid,
|
jlong in_nwid,
|
||||||
jlong in_multicastGroup,
|
jlong in_multicastGroup,
|
||||||
jlong in_multicastAdi)
|
jlong in_multicastAdi)
|
||||||
|
@ -1072,8 +1074,8 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_multicastSubscribe(
|
||||||
* Signature: (JJJJ)Lcom/zerotier/sdk/ResultCode;
|
* Signature: (JJJJ)Lcom/zerotier/sdk/ResultCode;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_multicastUnsubscribe(
|
JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_multicastUnsubscribe(
|
||||||
JNIEnv *env, jobject obj,
|
JNIEnv *env, jobject obj,
|
||||||
jlong id,
|
jlong id,
|
||||||
jlong in_nwid,
|
jlong in_nwid,
|
||||||
jlong in_multicastGroup,
|
jlong in_multicastGroup,
|
||||||
jlong in_multicastAdi)
|
jlong in_multicastAdi)
|
||||||
|
@ -1141,7 +1143,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_status
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeStatusConstructor = lookup.findMethod(
|
nodeStatusConstructor = lookup.findMethod(
|
||||||
nodeStatusClass, "<init>", "()V");
|
nodeStatusClass, "<init>", "()V");
|
||||||
if(nodeStatusConstructor == NULL)
|
if(nodeStatusConstructor == NULL)
|
||||||
|
@ -1225,7 +1227,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotier_sdk_Node_networkConfig(
|
||||||
}
|
}
|
||||||
|
|
||||||
ZT_VirtualNetworkConfig *vnetConfig = ZT_Node_networkConfig(node, nwid);
|
ZT_VirtualNetworkConfig *vnetConfig = ZT_Node_networkConfig(node, nwid);
|
||||||
|
|
||||||
jobject vnetConfigObject = newNetworkConfig(env, *vnetConfig);
|
jobject vnetConfigObject = newNetworkConfig(env, *vnetConfig);
|
||||||
|
|
||||||
ZT_Node_freeQueryResult(node, vnetConfig);
|
ZT_Node_freeQueryResult(node, vnetConfig);
|
||||||
|
@ -1267,7 +1269,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers(
|
||||||
}
|
}
|
||||||
|
|
||||||
ZT_PeerList *peerList = ZT_Node_peers(node);
|
ZT_PeerList *peerList = ZT_Node_peers(node);
|
||||||
|
|
||||||
if(peerList == NULL)
|
if(peerList == NULL)
|
||||||
{
|
{
|
||||||
LOGE("ZT_Node_peers returned NULL");
|
LOGE("ZT_Node_peers returned NULL");
|
||||||
|
@ -1306,7 +1308,7 @@ JNIEXPORT jobjectArray JNICALL Java_com_zerotier_sdk_Node_peers(
|
||||||
{
|
{
|
||||||
jobject peerObj = newPeer(env, peerList->peers[i]);
|
jobject peerObj = newPeer(env, peerList->peers[i]);
|
||||||
env->SetObjectArrayElement(peerArrayObj, i, peerObj);
|
env->SetObjectArrayElement(peerArrayObj, i, peerObj);
|
||||||
if(env->ExceptionCheck())
|
if(env->ExceptionCheck())
|
||||||
{
|
{
|
||||||
LOGE("Error assigning Peer object to array");
|
LOGE("Error assigning Peer object to array");
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Add table
Reference in a new issue