|
|
|
|
@ -40,6 +40,10 @@ extern "C" {
|
|
|
|
|
|
|
|
|
|
namespace { |
|
|
|
|
|
|
|
|
|
jobject createResultObject(JNIEnv *env, ZT1_ResultCode code); |
|
|
|
|
jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status); |
|
|
|
|
jobject createEvent(JNIEnv *env, ZT1_Event event); |
|
|
|
|
|
|
|
|
|
struct JniRef |
|
|
|
|
{ |
|
|
|
|
JniRef() |
|
|
|
|
@ -163,7 +167,7 @@ namespace {
|
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jfieldID enumField = env->GetStaticFieldID(resultClass, fieldName.c_str(), "Lcom/zerotierone/sdk/ResultCode"); |
|
|
|
|
jfieldID enumField = env->GetStaticFieldID(resultClass, fieldName.c_str(), "Lcom/zerotierone/sdk/ResultCode;"); |
|
|
|
|
|
|
|
|
|
resultObject = env->GetStaticObjectField(resultClass, enumField); |
|
|
|
|
|
|
|
|
|
@ -180,6 +184,98 @@ namespace {
|
|
|
|
|
} |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jobject createVirtualNetworkStatus(JNIEnv *env, ZT1_VirtualNetworkStatus status) |
|
|
|
|
{ |
|
|
|
|
static jclass statusClass = NULL; |
|
|
|
|
|
|
|
|
|
jobject statusObject = NULL; |
|
|
|
|
|
|
|
|
|
if(statusClass == NULL) |
|
|
|
|
{ |
|
|
|
|
statusClass = env->FindClass("com/zerotierone/sdk/VirtualNetworkStatus"); |
|
|
|
|
if(statusClass == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; // exception thrown
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::string fieldName; |
|
|
|
|
switch(status) |
|
|
|
|
{ |
|
|
|
|
case ZT1_NETWORK_STATUS_REQUESTING_CONFIGURATION: |
|
|
|
|
fieldName = "NETWORK_STATUS_REQUESTING_CONFIGURATION"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_NETWORK_STATUS_OK: |
|
|
|
|
fieldName = "NETWORK_STATUS_OK"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_NETWORK_STATUS_ACCESS_DENIED: |
|
|
|
|
fieldName = "NETWORK_STATUS_ACCESS_DENIED"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_NETWORK_STATUS_NOT_FOUND: |
|
|
|
|
fieldName = "NETWORK_STATUS_NOT_FOUND"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_NETWORK_STATUS_PORT_ERROR: |
|
|
|
|
fieldName = "NETWORK_STATUS_PORT_ERROR"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_NETWORK_STATUS_CLIENT_TOO_OLD: |
|
|
|
|
fieldName = "NETWORK_STATUS_CLIENT_TOO_OLD"; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jfieldID enumField = env->GetStaticFieldID(statusClass, fieldName.c_str(), "Lcom/zerotierone/sdk/VirtualNetworkStatus;"); |
|
|
|
|
|
|
|
|
|
statusObject = env->GetStaticObjectField(statusClass, enumField); |
|
|
|
|
|
|
|
|
|
return statusObject; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jobject createEvent(JNIEnv *env, ZT1_Event event) |
|
|
|
|
{ |
|
|
|
|
static jclass eventClass = NULL; |
|
|
|
|
jobject eventObject = NULL; |
|
|
|
|
|
|
|
|
|
if(eventClass == NULL) |
|
|
|
|
{ |
|
|
|
|
eventClass = env->FindClass("com/zerotierone/sdk/Event"); |
|
|
|
|
if(eventClass == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
std::string fieldName; |
|
|
|
|
switch(event) |
|
|
|
|
{ |
|
|
|
|
case ZT1_EVENT_UP: |
|
|
|
|
fieldName = "EVENT_UP"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_OFFLINE: |
|
|
|
|
fieldName = "EVENT_OFFLINE"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_DOWN: |
|
|
|
|
fieldName = "EVENT_DOWN"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_FATAL_ERROR_IDENTITY_COLLISION: |
|
|
|
|
fieldName = "EVENT_FATAL_ERROR_IDENTITY_COLLISION"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_AUTHENTICATION_FAILURE: |
|
|
|
|
fieldName = "EVENT_AUTHENTICATION_FAILURE"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_INVALID_PACKET: |
|
|
|
|
fieldName = "EVENT_INVALID_PACKET"; |
|
|
|
|
break; |
|
|
|
|
case ZT1_EVENT_TRACE: |
|
|
|
|
fieldName = "EVENT_TRACE"; |
|
|
|
|
break; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
jfieldID enumField = env->GetStaticFieldID(eventClass, fieldName.c_str(), "Lcom/zerotierone/sdk/Event;"); |
|
|
|
|
|
|
|
|
|
eventObject = env->GetStaticObjectField(eventClass, enumField); |
|
|
|
|
|
|
|
|
|
return eventObject; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@ -226,7 +322,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init
|
|
|
|
|
|
|
|
|
|
jclass cls = env->GetObjectClass(obj); |
|
|
|
|
jfieldID fid = env->GetFieldID( |
|
|
|
|
cls, "getListener", "Lcom.zerotierone.sdk.DataStoreGetListener;"); |
|
|
|
|
cls, "getListener", "Lcom/zerotierone/sdk/DataStoreGetListener;"); |
|
|
|
|
|
|
|
|
|
if(fid == NULL) |
|
|
|
|
{ |
|
|
|
|
@ -240,7 +336,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fid = env->GetFieldID( |
|
|
|
|
cls, "putListener", "Lcom.zerotierone.sdk.DataStorePutLisetner;"); |
|
|
|
|
cls, "putListener", "Lcom/zerotierone/sdk/DataStorePutLisetner;"); |
|
|
|
|
|
|
|
|
|
if(fid == NULL) |
|
|
|
|
{ |
|
|
|
|
@ -254,7 +350,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fid = env->GetFieldID( |
|
|
|
|
cls, "sender", "Lcom.zerotierone.sdk.PacketSender;"); |
|
|
|
|
cls, "sender", "Lcom/zerotierone/sdk/PacketSender;"); |
|
|
|
|
if(fid == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; // exception already thrown
|
|
|
|
|
@ -267,7 +363,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fid = env->GetFieldID( |
|
|
|
|
cls, "frameListener", "Lcom.zerotierone.sdk.VirtualNetworkFrameListener;"); |
|
|
|
|
cls, "frameListener", "Lcom/zerotierone/sdk/VirtualNetworkFrameListener;"); |
|
|
|
|
if(fid == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; // exception already thrown
|
|
|
|
|
@ -280,7 +376,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
fid = env->GetFieldID( |
|
|
|
|
cls, "configListener", "Lcom.zerotierone.sdk.VirtualNetworkConfigListener;"); |
|
|
|
|
cls, "configListener", "Lcom/zerotierone/sdk/VirtualNetworkConfigListener;"); |
|
|
|
|
if(fid == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; // exception already thrown
|
|
|
|
|
@ -682,7 +778,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_status
|
|
|
|
|
// create a com.zerotierone.sdk.NodeStatus object
|
|
|
|
|
if(nodeStatusClass == NULL) |
|
|
|
|
{ |
|
|
|
|
nodeStatusClass = env->FindClass("com.zerotierone.sdk.NodeStatus"); |
|
|
|
|
nodeStatusClass = env->FindClass("com/zerotierone/sdk/NodeStatus"); |
|
|
|
|
if(nodeStatusClass == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -730,7 +826,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networkConfig
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
// create a com.zerotierone.sdk.VirtualNetworkConfig object
|
|
|
|
|
jclass vnetConfigClass = env->FindClass("com.zerotierone.sdk.VirtualNetworkConfig"); |
|
|
|
|
jclass vnetConfigClass = env->FindClass("com/zerotierone/sdk/VirtualNetworkConfig"); |
|
|
|
|
if(vnetConfigClass == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -766,7 +862,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
|
|
|
|
|
(JNIEnv *env, jobject obj) |
|
|
|
|
{ |
|
|
|
|
// create a com.zerotierone.sdk.Version object
|
|
|
|
|
jclass versionClass = env->FindClass("com.zerotierone.sdk.Version"); |
|
|
|
|
jclass versionClass = env->FindClass("com/zerotierone/sdk/Version"); |
|
|
|
|
if(versionClass == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -800,7 +896,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
|
|
|
|
|
|
|
|
|
|
if(majorField == NULL) |
|
|
|
|
{ |
|
|
|
|
majorField = env->GetFieldID(versionClass, "major", "Lcom.zerotierone.sdk.Version"); |
|
|
|
|
majorField = env->GetFieldID(versionClass, "major", "Lcom/zerotierone/sdk/Version;"); |
|
|
|
|
if(majorField = NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -809,7 +905,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
|
|
|
|
|
|
|
|
|
|
if(minorField == NULL) |
|
|
|
|
{ |
|
|
|
|
minorField = env->GetFieldID(versionClass, "minor", "Lcom.zerotierone.sdk.Version"); |
|
|
|
|
minorField = env->GetFieldID(versionClass, "minor", "Lcom/zerotierone/sdk/Version;"); |
|
|
|
|
if(minorField == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -818,7 +914,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
|
|
|
|
|
|
|
|
|
|
if(revisionField == NULL) |
|
|
|
|
{ |
|
|
|
|
revisionField = env->GetFieldID(versionClass, "revision", "Lcom.zerotierone.sdk.Version"); |
|
|
|
|
revisionField = env->GetFieldID(versionClass, "revision", "Lcom/zerotierone/sdk/Version;"); |
|
|
|
|
if(revisionField == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
@ -827,7 +923,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_version
|
|
|
|
|
|
|
|
|
|
if(featureFlagsField == NULL) |
|
|
|
|
{ |
|
|
|
|
featureFlagsField = env->GetFieldID(versionClass, "featureFlags", "Lcom.zerotierone.sdk.Version"); |
|
|
|
|
featureFlagsField = env->GetFieldID(versionClass, "featureFlags", "Lcom/zerotierone/sdk/Version;"); |
|
|
|
|
if(featureFlagsField == NULL) |
|
|
|
|
{ |
|
|
|
|
return NULL; |
|
|
|
|
|