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>
This commit is contained in:
Grant Limberg 2015-04-23 21:43:16 -07:00
parent 46adf870a1
commit d66f2cd54d
2 changed files with 181 additions and 4 deletions

View File

@ -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;
}
}
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);
return NULL;
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;
}
/*

View File

@ -47,7 +47,6 @@ public class VirtualNetworkConfig {
private boolean portError;
private boolean enabled;
private long netconfRevision;
private int multicastSubscriptionCount;
private ArrayList<MulticastGroup> multicastSubscriptions;
private ArrayList<InetAddress> assignedAddresses;