diff options
author | Grant Limberg <glimberg@gmail.com> | 2015-04-23 21:43:16 -0700 |
---|---|---|
committer | Grant Limberg <glimberg@gmail.com> | 2015-04-23 21:43:16 -0700 |
commit | d66f2cd54d3fa2f5fd7cbbce4936a4ddd9c5fbc6 (patch) | |
tree | e5fffbb2d931f95ae04aae2ee018e3e5c2a1d068 /java/jni | |
parent | 46adf870a13a2fdb06a89c517d0cc2bd7cb35928 (diff) | |
download | infinitytier-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.cpp | 184 |
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; } /* |