mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-02-20 17:52:46 +00:00
make VirtualNetworkConfig a plain data class
This commit is contained in:
parent
e060ae3176
commit
54fd7c7e9a
@ -114,20 +114,6 @@ jmethodID VirtualNetworkType_fromInt_method;
|
||||
// Instance fields
|
||||
//
|
||||
|
||||
jfieldID VirtualNetworkConfig_assignedAddresses_field;
|
||||
jfieldID VirtualNetworkConfig_bridge_field;
|
||||
jfieldID VirtualNetworkConfig_broadcastEnabled_field;
|
||||
jfieldID VirtualNetworkConfig_dhcp_field;
|
||||
jfieldID VirtualNetworkConfig_dns_field;
|
||||
jfieldID VirtualNetworkConfig_enabled_field;
|
||||
jfieldID VirtualNetworkConfig_mac_field;
|
||||
jfieldID VirtualNetworkConfig_mtu_field;
|
||||
jfieldID VirtualNetworkConfig_name_field;
|
||||
jfieldID VirtualNetworkConfig_nwid_field;
|
||||
jfieldID VirtualNetworkConfig_portError_field;
|
||||
jfieldID VirtualNetworkConfig_routes_field;
|
||||
jfieldID VirtualNetworkConfig_status_field;
|
||||
jfieldID VirtualNetworkConfig_type_field;
|
||||
jfieldID VirtualNetworkDNS_domain_field;
|
||||
jfieldID VirtualNetworkDNS_servers_field;
|
||||
jfieldID VirtualNetworkRoute_flags_field;
|
||||
@ -201,7 +187,7 @@ void setupJNICache(JavaVM *vm) {
|
||||
EXCEPTIONANDNULLCHECK(Peer_ctor = env->GetMethodID(Peer_class, "<init>", "(JIIIILcom/zerotier/sdk/PeerRole;[Lcom/zerotier/sdk/PeerPhysicalPath;)V"));
|
||||
EXCEPTIONANDNULLCHECK(Version_ctor = env->GetMethodID(Version_class, "<init>", "(III)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfigListener_onNetworkConfigurationUpdated_method = env->GetMethodID(VirtualNetworkConfigListener_class, "onNetworkConfigurationUpdated", "(JLcom/zerotier/sdk/VirtualNetworkConfigOperation;Lcom/zerotier/sdk/VirtualNetworkConfig;)I"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_ctor = env->GetMethodID(VirtualNetworkConfig_class, "<init>", "()V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_ctor = env->GetMethodID(VirtualNetworkConfig_class, "<init>", "(JJLjava/lang/String;Lcom/zerotier/sdk/VirtualNetworkStatus;Lcom/zerotier/sdk/VirtualNetworkType;IZZZIZJ[Ljava/net/InetSocketAddress;[Lcom/zerotier/sdk/VirtualNetworkRoute;Lcom/zerotier/sdk/VirtualNetworkDNS;)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkDNS_ctor = env->GetMethodID(VirtualNetworkDNS_class, "<init>", "()V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkFrameListener_onVirtualNetworkFrame_method = env->GetMethodID(VirtualNetworkFrameListener_class, "onVirtualNetworkFrame", "(JJJJJ[B)V"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkRoute_ctor = env->GetMethodID(VirtualNetworkRoute_class, "<init>", "()V"));
|
||||
@ -222,20 +208,6 @@ void setupJNICache(JavaVM *vm) {
|
||||
// Instance fields
|
||||
//
|
||||
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_assignedAddresses_field = env->GetFieldID(VirtualNetworkConfig_class, "assignedAddresses", "[Ljava/net/InetSocketAddress;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_bridge_field = env->GetFieldID(VirtualNetworkConfig_class, "bridge", "Z"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_broadcastEnabled_field = env->GetFieldID(VirtualNetworkConfig_class, "broadcastEnabled", "Z"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_dhcp_field = env->GetFieldID(VirtualNetworkConfig_class, "dhcp", "Z"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_dns_field = env->GetFieldID(VirtualNetworkConfig_class, "dns", "Lcom/zerotier/sdk/VirtualNetworkDNS;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_enabled_field = env->GetFieldID(VirtualNetworkConfig_class, "enabled", "Z"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_mac_field = env->GetFieldID(VirtualNetworkConfig_class, "mac", "J"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_mtu_field = env->GetFieldID(VirtualNetworkConfig_class, "mtu", "I"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_name_field = env->GetFieldID(VirtualNetworkConfig_class, "name", "Ljava/lang/String;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_nwid_field = env->GetFieldID(VirtualNetworkConfig_class, "nwid", "J"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_portError_field = env->GetFieldID(VirtualNetworkConfig_class, "portError", "I"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_routes_field = env->GetFieldID(VirtualNetworkConfig_class, "routes", "[Lcom/zerotier/sdk/VirtualNetworkRoute;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_status_field = env->GetFieldID(VirtualNetworkConfig_class, "status", "Lcom/zerotier/sdk/VirtualNetworkStatus;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkConfig_type_field = env->GetFieldID(VirtualNetworkConfig_class, "type", "Lcom/zerotier/sdk/VirtualNetworkType;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkDNS_domain_field = env->GetFieldID(VirtualNetworkDNS_class, "domain", "Ljava/lang/String;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkDNS_servers_field = env->GetFieldID(VirtualNetworkDNS_class, "servers", "Ljava/util/ArrayList;"));
|
||||
EXCEPTIONANDNULLCHECK(VirtualNetworkRoute_flags_field = env->GetFieldID(VirtualNetworkRoute_class, "flags", "I"));
|
||||
|
@ -83,20 +83,6 @@ extern jmethodID VirtualNetworkType_fromInt_method;
|
||||
// Instance fields
|
||||
//
|
||||
|
||||
extern jfieldID VirtualNetworkConfig_assignedAddresses_field;
|
||||
extern jfieldID VirtualNetworkConfig_bridge_field;
|
||||
extern jfieldID VirtualNetworkConfig_broadcastEnabled_field;
|
||||
extern jfieldID VirtualNetworkConfig_dhcp_field;
|
||||
extern jfieldID VirtualNetworkConfig_dns_field;
|
||||
extern jfieldID VirtualNetworkConfig_enabled_field;
|
||||
extern jfieldID VirtualNetworkConfig_mac_field;
|
||||
extern jfieldID VirtualNetworkConfig_mtu_field;
|
||||
extern jfieldID VirtualNetworkConfig_name_field;
|
||||
extern jfieldID VirtualNetworkConfig_nwid_field;
|
||||
extern jfieldID VirtualNetworkConfig_portError_field;
|
||||
extern jfieldID VirtualNetworkConfig_routes_field;
|
||||
extern jfieldID VirtualNetworkConfig_status_field;
|
||||
extern jfieldID VirtualNetworkConfig_type_field;
|
||||
extern jfieldID VirtualNetworkDNS_domain_field;
|
||||
extern jfieldID VirtualNetworkDNS_servers_field;
|
||||
extern jfieldID VirtualNetworkRoute_flags_field;
|
||||
|
@ -258,54 +258,66 @@ jobject newPeer(JNIEnv *env, const ZT_Peer &peer)
|
||||
|
||||
jobject newNetworkConfig(JNIEnv *env, const ZT_VirtualNetworkConfig &vnetConfig)
|
||||
{
|
||||
jobject vnetConfigObj = env->NewObject(VirtualNetworkConfig_class, VirtualNetworkConfig_ctor);
|
||||
if(env->ExceptionCheck() || vnetConfigObj == NULL)
|
||||
{
|
||||
LOGE("Error creating new VirtualNetworkConfig object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
env->SetLongField(vnetConfigObj, VirtualNetworkConfig_nwid_field, vnetConfig.nwid);
|
||||
env->SetLongField(vnetConfigObj, VirtualNetworkConfig_mac_field, vnetConfig.mac);
|
||||
jstring nameStr = env->NewStringUTF(vnetConfig.name);
|
||||
if(env->ExceptionCheck() || nameStr == NULL)
|
||||
{
|
||||
LOGE("Exception creating new string");
|
||||
return NULL; // out of memory
|
||||
}
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_name_field, nameStr);
|
||||
|
||||
jobject statusObject = createVirtualNetworkStatus(env, vnetConfig.status);
|
||||
if(env->ExceptionCheck() || statusObject == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_status_field, statusObject);
|
||||
|
||||
jobject typeObject = createVirtualNetworkType(env, vnetConfig.type);
|
||||
if(env->ExceptionCheck() || typeObject == NULL)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_type_field, typeObject);
|
||||
|
||||
env->SetIntField(vnetConfigObj, VirtualNetworkConfig_mtu_field, (int)vnetConfig.mtu);
|
||||
env->SetBooleanField(vnetConfigObj, VirtualNetworkConfig_dhcp_field, vnetConfig.dhcp);
|
||||
env->SetBooleanField(vnetConfigObj, VirtualNetworkConfig_bridge_field, vnetConfig.bridge);
|
||||
env->SetBooleanField(vnetConfigObj, VirtualNetworkConfig_broadcastEnabled_field, vnetConfig.broadcastEnabled);
|
||||
env->SetIntField(vnetConfigObj, VirtualNetworkConfig_portError_field, vnetConfig.portError);
|
||||
|
||||
jobjectArray assignedAddrArrayObj = newInetSocketAddressArray(env, vnetConfig.assignedAddresses, vnetConfig.assignedAddressCount);
|
||||
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_assignedAddresses_field, assignedAddrArrayObj);
|
||||
if (env->ExceptionCheck() || assignedAddrArrayObj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jobjectArray routesArrayObj = newVirtualNetworkRouteArray(env, vnetConfig.routes, vnetConfig.routeCount);
|
||||
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_routes_field, routesArrayObj);
|
||||
|
||||
jobject dnsObj = newVirtualNetworkDNS(env, vnetConfig.dns);
|
||||
if (dnsObj != NULL) {
|
||||
env->SetObjectField(vnetConfigObj, VirtualNetworkConfig_dns_field, dnsObj);
|
||||
if (env->ExceptionCheck() || routesArrayObj == NULL) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
//
|
||||
// may be NULL
|
||||
//
|
||||
jobject dnsObj = newVirtualNetworkDNS(env, vnetConfig.dns);
|
||||
if(env->ExceptionCheck()) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
jobject vnetConfigObj = env->NewObject(
|
||||
VirtualNetworkConfig_class,
|
||||
VirtualNetworkConfig_ctor,
|
||||
vnetConfig.nwid,
|
||||
vnetConfig.mac,
|
||||
nameStr,
|
||||
statusObject,
|
||||
typeObject,
|
||||
vnetConfig.mtu,
|
||||
vnetConfig.dhcp,
|
||||
vnetConfig.bridge,
|
||||
vnetConfig.broadcastEnabled,
|
||||
vnetConfig.portError,
|
||||
vnetConfig.netconfRevision,
|
||||
assignedAddrArrayObj,
|
||||
routesArrayObj,
|
||||
dnsObj);
|
||||
if(env->ExceptionCheck() || vnetConfigObj == NULL)
|
||||
{
|
||||
LOGE("Error creating new VirtualNetworkConfig object");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return vnetConfigObj;
|
||||
}
|
||||
|
||||
|
@ -124,13 +124,17 @@ namespace {
|
||||
return -101;
|
||||
}
|
||||
|
||||
jobject networkConfigObject = newNetworkConfig(env, *config);
|
||||
if(networkConfigObject == NULL)
|
||||
{
|
||||
LOGE("Error creating VirtualNetworkConfig object");
|
||||
if (config == NULL) {
|
||||
LOGE("Config is NULL");
|
||||
return -102;
|
||||
}
|
||||
|
||||
jobject networkConfigObject = newNetworkConfig(env, *config);
|
||||
if(env->ExceptionCheck() || networkConfigObject == NULL)
|
||||
{
|
||||
return -103;
|
||||
}
|
||||
|
||||
return env->CallIntMethod(
|
||||
ref->configListener,
|
||||
VirtualNetworkConfigListener_onNetworkConfigurationUpdated_method,
|
||||
|
@ -36,30 +36,75 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
|
||||
public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
||||
/**
|
||||
* Virtual network configuration
|
||||
*
|
||||
* Defined in ZeroTierOne.h as ZT_VirtualNetworkConfig
|
||||
*/
|
||||
public class VirtualNetworkConfig implements Comparable<VirtualNetworkConfig> {
|
||||
|
||||
private final static String TAG = "VirtualNetworkConfig";
|
||||
|
||||
public static final int MAX_MULTICAST_SUBSCRIPTIONS = 4096;
|
||||
public static final int ZT_MAX_ZT_ASSIGNED_ADDRESSES = 16;
|
||||
|
||||
private long nwid;
|
||||
private long mac;
|
||||
private String name;
|
||||
private VirtualNetworkStatus status;
|
||||
private VirtualNetworkType type;
|
||||
private int mtu;
|
||||
private boolean dhcp;
|
||||
private boolean bridge;
|
||||
private boolean broadcastEnabled;
|
||||
private int portError;
|
||||
private boolean enabled;
|
||||
private long netconfRevision;
|
||||
private InetSocketAddress[] assignedAddresses;
|
||||
private VirtualNetworkRoute[] routes;
|
||||
private VirtualNetworkDNS dns;
|
||||
private final long nwid;
|
||||
|
||||
private VirtualNetworkConfig() {
|
||||
private final long mac;
|
||||
|
||||
private final String name;
|
||||
|
||||
private final VirtualNetworkStatus status;
|
||||
|
||||
private final VirtualNetworkType type;
|
||||
|
||||
private final int mtu;
|
||||
|
||||
private final boolean dhcp;
|
||||
|
||||
private final boolean bridge;
|
||||
|
||||
private final boolean broadcastEnabled;
|
||||
|
||||
private final int portError;
|
||||
|
||||
private final boolean enabled;
|
||||
|
||||
private final long netconfRevision;
|
||||
|
||||
private final InetSocketAddress[] assignedAddresses;
|
||||
|
||||
private final VirtualNetworkRoute[] routes;
|
||||
|
||||
private final VirtualNetworkDNS dns;
|
||||
|
||||
public VirtualNetworkConfig(long nwid, long mac, String name, VirtualNetworkStatus status, VirtualNetworkType type, int mtu, boolean dhcp, boolean bridge, boolean broadcastEnabled, int portError, boolean enabled, long netconfRevision, InetSocketAddress[] assignedAddresses, VirtualNetworkRoute[] routes, VirtualNetworkDNS dns) {
|
||||
this.nwid = nwid;
|
||||
this.mac = mac;
|
||||
this.name = name;
|
||||
this.status = status;
|
||||
this.type = type;
|
||||
if (mtu < 0) {
|
||||
throw new RuntimeException("mtu < 0: " + mtu);
|
||||
}
|
||||
this.mtu = mtu;
|
||||
this.dhcp = dhcp;
|
||||
this.bridge = bridge;
|
||||
this.broadcastEnabled = broadcastEnabled;
|
||||
this.portError = portError;
|
||||
if (netconfRevision < 0) {
|
||||
throw new RuntimeException("netconfRevision < 0: " + netconfRevision);
|
||||
}
|
||||
this.enabled = enabled;
|
||||
this.netconfRevision = netconfRevision;
|
||||
this.assignedAddresses = assignedAddresses;
|
||||
this.routes = routes;
|
||||
this.dns = dns;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String toString() {
|
||||
return "VirtualNetworkConfig(" + StringUtils.networkIdToString(nwid) + ", " + StringUtils.macAddressToString(mac) + ", " + name + ", " + status + ", " + type + ", " + mtu + ", " + dhcp + ", " + bridge + ", " + broadcastEnabled + ", " + portError + ", " + enabled + ", " + netconfRevision + ", " + Arrays.toString(assignedAddresses) + ", " + Arrays.toString(routes) + ", " + dns + ")";
|
||||
}
|
||||
|
||||
@Override
|
||||
@ -254,42 +299,42 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
/**
|
||||
* 64-bit ZeroTier network ID
|
||||
*/
|
||||
public final long networkId() {
|
||||
public long getNwid() {
|
||||
return nwid;
|
||||
}
|
||||
|
||||
/**
|
||||
* Ethernet MAC (48 bits) that should be assigned to port
|
||||
*/
|
||||
public final long macAddress() {
|
||||
public long getMac() {
|
||||
return mac;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network name (from network configuration master)
|
||||
*/
|
||||
public final String name() {
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network configuration request status
|
||||
*/
|
||||
public final VirtualNetworkStatus networkStatus() {
|
||||
public VirtualNetworkStatus getStatus() {
|
||||
return status;
|
||||
}
|
||||
|
||||
/**
|
||||
* Network type
|
||||
*/
|
||||
public final VirtualNetworkType networkType() {
|
||||
public VirtualNetworkType getType() {
|
||||
return type;
|
||||
}
|
||||
|
||||
/**
|
||||
* Maximum interface MTU
|
||||
*/
|
||||
public final int mtu() {
|
||||
public int getMtu() {
|
||||
return mtu;
|
||||
}
|
||||
|
||||
@ -300,7 +345,7 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
* for security or other reasons. This is simply a netconf parameter that
|
||||
* means 'DHCP is available on this network.'</p>
|
||||
*/
|
||||
public final boolean isDhcpAvailable() {
|
||||
public boolean isDhcp() {
|
||||
return dhcp;
|
||||
}
|
||||
|
||||
@ -310,21 +355,21 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
* <p>This is informational. If this is false, bridged packets will simply
|
||||
* be dropped and bridging won't work.</p>
|
||||
*/
|
||||
public final boolean isBridgeEnabled() {
|
||||
public boolean isBridge() {
|
||||
return bridge;
|
||||
}
|
||||
|
||||
/**
|
||||
* If true, this network supports and allows broadcast (ff:ff:ff:ff:ff:ff) traffic
|
||||
*/
|
||||
public final boolean broadcastEnabled() {
|
||||
public boolean isBroadcastEnabled() {
|
||||
return broadcastEnabled;
|
||||
}
|
||||
|
||||
/**
|
||||
* If the network is in PORT_ERROR state, this is the error most recently returned by the port config callback
|
||||
*/
|
||||
public final int portError() {
|
||||
public int getPortError() {
|
||||
return portError;
|
||||
}
|
||||
|
||||
@ -333,7 +378,7 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
*
|
||||
* <p>If this is zero, it means we're still waiting for our netconf.</p>
|
||||
*/
|
||||
public final long netconfRevision() {
|
||||
public long getNetconfRevision() {
|
||||
return netconfRevision;
|
||||
}
|
||||
|
||||
@ -347,7 +392,7 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
* This is only used for ZeroTier-managed address assignments sent by the
|
||||
* virtual network's configuration master.
|
||||
*/
|
||||
public final InetSocketAddress[] assignedAddresses() {
|
||||
public InetSocketAddress[] getAssignedAddresses() {
|
||||
return assignedAddresses;
|
||||
}
|
||||
|
||||
@ -356,7 +401,14 @@ public final class VirtualNetworkConfig implements Comparable<VirtualNetworkConf
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
public final VirtualNetworkRoute[] routes() { return routes; }
|
||||
public VirtualNetworkRoute[] getRoutes() {
|
||||
return routes;
|
||||
}
|
||||
|
||||
public final VirtualNetworkDNS dns() { return dns; }
|
||||
/**
|
||||
* Network specific DNS configuration
|
||||
*/
|
||||
public VirtualNetworkDNS getDns() {
|
||||
return dns;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user