summaryrefslogtreecommitdiff
path: root/java/jni
diff options
context:
space:
mode:
authorGrant Limberg <glimberg@gmail.com>2015-04-23 21:43:16 -0700
committerGrant Limberg <glimberg@gmail.com>2015-04-23 21:43:16 -0700
commitd66f2cd54d3fa2f5fd7cbbce4936a4ddd9c5fbc6 (patch)
treee5fffbb2d931f95ae04aae2ee018e3e5c2a1d068 /java/jni
parent46adf870a13a2fdb06a89c517d0cc2bd7cb35928 (diff)
downloadinfinitytier-d66f2cd54d3fa2f5fd7cbbce4936a4ddd9c5fbc6.tar.gz
infinitytier-d66f2cd54d3fa2f5fd7cbbce4936a4ddd9c5fbc6.zip
Node.networkConfig now only needs to populate the lists of assigned addresses and multicast subscriptions and then it's finished
Signed-off-by: Grant Limberg <glimberg@gmail.com>
Diffstat (limited to 'java/jni')
-rw-r--r--java/jni/com_zerotierone_sdk_Node.cpp184
1 files changed, 181 insertions, 3 deletions
diff --git a/java/jni/com_zerotierone_sdk_Node.cpp b/java/jni/com_zerotierone_sdk_Node.cpp
index a94589f2..aad7f642 100644
--- a/java/jni/com_zerotierone_sdk_Node.cpp
+++ b/java/jni/com_zerotierone_sdk_Node.cpp
@@ -692,7 +692,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_status
}
}
- env->SetIntField(nodeStatusObj, addressField, nodeStatus.address);
+ env->SetLongField(nodeStatusObj, addressField, nodeStatus.address);
jstring pubIdentStr = env->NewStringUTF(nodeStatus.publicIdentity);
if(pubIdentStr == NULL)
@@ -751,10 +751,188 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_networkConfig
ZT1_VirtualNetworkConfig *vnetConfig = ZT1_Node_networkConfig(node, nwid);
- // TODO: copy data from C to Java
+ static jfieldID nwidField = NULL;
+ static jfieldID macField = NULL;
+ static jfieldID nameField = NULL;
+ static jfieldID statusField = NULL;
+ static jfieldID typeField = NULL;
+ static jfieldID mtuField = NULL;
+ static jfieldID dhcpField = NULL;
+ static jfieldID bridgeField = NULL;
+ static jfieldID broadcastEnabledField = NULL;
+ static jfieldID portErrorField = NULL;
+ static jfieldID enabledField = NULL;
+ static jfieldID netconfRevisionField = NULL;
+ static jfieldID multicastSubscriptionsField = NULL;
+ static jfieldID assignedAddressesField = NULL;
+
+ if(nwidField == NULL)
+ {
+ nwidField = env->GetFieldID(vnetConfigClass, "nwid", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(nwidField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(macField == NULL)
+ {
+ macField = env->GetFieldID(vnetConfigClass, "mac", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(macField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(nameField == NULL)
+ {
+ nameField = env->GetFieldID(vnetConfigClass, "name", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(nameField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(statusField == NULL)
+ {
+ statusField = env->GetFieldID(vnetConfigClass, "status", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(statusField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(typeField == NULL)
+ {
+ typeField = env->GetFieldID(vnetConfigClass, "type", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(typeField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(mtuField == NULL)
+ {
+ mtuField = env->GetFieldID(vnetConfigClass, "mtu", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(mtuField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(dhcpField == NULL)
+ {
+ dhcpField = env->GetFieldID(vnetConfigClass, "dhcp", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(dhcpField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(bridgeField == NULL)
+ {
+ bridgeField = env->GetFieldID(vnetConfigClass, "bridge", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(bridgeField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(broadcastEnabledField == NULL)
+ {
+ broadcastEnabledField = env->GetFieldID(vnetConfigClass, "broadcastEnabled", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(broadcastEnabledField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(portErrorField == NULL)
+ {
+ portErrorField == env->GetFieldID(vnetConfigClass, "portError", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(portErrorField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(enabledField == NULL)
+ {
+ enabledField = env->GetFieldID(vnetConfigClass, "enabled", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(enabledField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(netconfRevisionField == NULL)
+ {
+ netconfRevisionField = env->GetFieldID(vnetConfigClass, "netconfRevision", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(netconfRevisionField == NULL)
+ {
+ return NULL;
+ }
+ }
+
+ if(multicastSubscriptionsField == NULL)
+ {
+ multicastSubscriptionsField = env->GetFieldID(vnetConfigClass, "multicastSubscriptions", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(multicastSubscriptionsField == NULL)
+ {
+ return NULL;
+ }
+ }
+ if(assignedAddressesField == NULL)
+ {
+ assignedAddressesField = env->GetFieldID(vnetConfigClass, "assignedAddresses", "Lcom/zerotierone/sdk/VirtualNetworkConfig;");
+ if(assignedAddressesField == NULL)
+ {
+ return NULL;
+ }
+ }
- return NULL;
+ env->SetLongField(vnetConfigObj, nwidField, vnetConfig->nwid);
+ env->SetLongField(vnetConfigObj, macField, vnetConfig->mac);
+ jstring nameStr = env->NewStringUTF(vnetConfig->name);
+ if(nameStr == NULL)
+ {
+ return NULL; // out of memory
+ }
+ env->SetObjectField(vnetConfigObj, nameField, nameStr);
+
+ jobject statusObject = createVirtualNetworkStatus(env, vnetConfig->status);
+ if(statusObject == NULL)
+ {
+ return NULL;
+ }
+ env->SetObjectField(vnetConfigObj, statusField, statusObject);
+
+ jobject typeObject = createVirtualNetworkType(env, vnetConfig->type);
+ if(typeObject == NULL)
+ {
+ return NULL;
+ }
+ env->SetObjectField(vnetConfigObj, typeField, typeObject);
+
+ env->SetIntField(vnetConfigObj, mtuField, vnetConfig->mtu);
+ env->SetBooleanField(vnetConfigObj, dhcpField, vnetConfig->dhcp);
+ env->SetBooleanField(vnetConfigObj, bridgeField, vnetConfig->bridge);
+ env->SetBooleanField(vnetConfigObj, broadcastEnabledField, vnetConfig->broadcastEnabled);
+ env->SetBooleanField(vnetConfigObj, portErrorField, vnetConfig->portError);
+
+
+ jobject mcastSubsArrayObj = NULL;
+ jobject assignedAddrArrayObj = NULL;
+
+
+ env->SetObjectField(vnetConfigObj, multicastSubscriptionsField, mcastSubsArrayObj);
+ env->SetObjectField(vnetConfigObj, assignedAddressesField, assignedAddrArrayObj);
+
+ ZT1_Node_freeQueryResult(node, vnetConfig);
+ vnetConfig = NULL;
+
+ return vnetConfigObj;
}
/*