mirror of
https://github.com/zerotier/ZeroTierOne.git
synced 2025-05-06 02:28:23 +00:00
Fixes for bugs pointed out by updating warnings
This commit is contained in:
parent
0a2d1e7a66
commit
7e0cc28a89
@ -111,12 +111,18 @@ jobject createEvent(JNIEnv *env, ZT1_Event event)
|
|||||||
case ZT1_EVENT_OFFLINE:
|
case ZT1_EVENT_OFFLINE:
|
||||||
fieldName = "EVENT_OFFLINE";
|
fieldName = "EVENT_OFFLINE";
|
||||||
break;
|
break;
|
||||||
|
case ZT1_EVENT_ONLINE:
|
||||||
|
fieldName = "EVENT_ONLINE";
|
||||||
|
break;
|
||||||
case ZT1_EVENT_DOWN:
|
case ZT1_EVENT_DOWN:
|
||||||
fieldName = "EVENT_DOWN";
|
fieldName = "EVENT_DOWN";
|
||||||
break;
|
break;
|
||||||
case ZT1_EVENT_FATAL_ERROR_IDENTITY_COLLISION:
|
case ZT1_EVENT_FATAL_ERROR_IDENTITY_COLLISION:
|
||||||
fieldName = "EVENT_FATAL_ERROR_IDENTITY_COLLISION";
|
fieldName = "EVENT_FATAL_ERROR_IDENTITY_COLLISION";
|
||||||
break;
|
break;
|
||||||
|
case ZT1_EVENT_SAW_MORE_RECENT_VERSION:
|
||||||
|
fieldName = "EVENT_SAW_MORE_RECENT_VERSION";
|
||||||
|
break;
|
||||||
case ZT1_EVENT_AUTHENTICATION_FAILURE:
|
case ZT1_EVENT_AUTHENTICATION_FAILURE:
|
||||||
fieldName = "EVENT_AUTHENTICATION_FAILURE";
|
fieldName = "EVENT_AUTHENTICATION_FAILURE";
|
||||||
break;
|
break;
|
||||||
@ -332,7 +338,7 @@ jobject newInetSocketAddress(JNIEnv *env, const sockaddr_storage &addr)
|
|||||||
jclass inetSocketAddressClass = NULL;
|
jclass inetSocketAddressClass = NULL;
|
||||||
jmethodID inetSocketAddress_constructor = NULL;
|
jmethodID inetSocketAddress_constructor = NULL;
|
||||||
|
|
||||||
inetSocketAddressClass == env->FindClass("java/net/InetSocketAddress");
|
inetSocketAddressClass = env->FindClass("java/net/InetSocketAddress");
|
||||||
if(inetSocketAddressClass == NULL)
|
if(inetSocketAddressClass == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
@ -631,156 +637,125 @@ jobject newNetworkConfig(JNIEnv *env, const ZT1_VirtualNetworkConfig &vnetConfig
|
|||||||
jfieldID multicastSubscriptionsField = NULL;
|
jfieldID multicastSubscriptionsField = NULL;
|
||||||
jfieldID assignedAddressesField = NULL;
|
jfieldID assignedAddressesField = NULL;
|
||||||
|
|
||||||
if(vnetConfigClass == NULL)
|
|
||||||
{
|
|
||||||
vnetConfigClass = env->FindClass("com/zerotierone/sdk/VirtualNetworkConfig");
|
vnetConfigClass = env->FindClass("com/zerotierone/sdk/VirtualNetworkConfig");
|
||||||
if(vnetConfigClass == NULL)
|
if(vnetConfigClass == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Couldn't find com.zerotierone.sdk.VirtualNetworkConfig");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(vnetConfig_constructor == NULL)
|
vnetConfig_constructor = env->GetMethodID(
|
||||||
{
|
|
||||||
jmethodID vnetConfig_constructor = env->GetMethodID(
|
|
||||||
vnetConfigClass, "<init>", "()V");
|
vnetConfigClass, "<init>", "()V");
|
||||||
if(vnetConfig_constructor == NULL)
|
if(vnetConfig_constructor == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Couldn't find VirtualNetworkConfig Constructor");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
jobject vnetConfigObj = env->NewObject(vnetConfigClass, vnetConfig_constructor);
|
jobject vnetConfigObj = env->NewObject(vnetConfigClass, vnetConfig_constructor);
|
||||||
if(vnetConfigObj == NULL)
|
if(vnetConfigObj == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error creating new VirtualNetworkConfig object");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(nwidField == NULL)
|
|
||||||
{
|
|
||||||
nwidField = env->GetFieldID(vnetConfigClass, "nwid", "J");
|
nwidField = env->GetFieldID(vnetConfigClass, "nwid", "J");
|
||||||
if(nwidField == NULL)
|
if(nwidField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting nwid field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(macField == NULL)
|
|
||||||
{
|
|
||||||
macField = env->GetFieldID(vnetConfigClass, "mac", "J");
|
macField = env->GetFieldID(vnetConfigClass, "mac", "J");
|
||||||
if(macField == NULL)
|
if(macField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting mac field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(nameField == NULL)
|
|
||||||
{
|
|
||||||
nameField = env->GetFieldID(vnetConfigClass, "name", "Ljava/lang/String;");
|
nameField = env->GetFieldID(vnetConfigClass, "name", "Ljava/lang/String;");
|
||||||
if(nameField == NULL)
|
if(nameField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting name field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
statusField = env->GetFieldID(vnetConfigClass, "status", "Lcom/zerotierone/sdk/VirtualNetworkStatus;");
|
||||||
if(statusField == NULL)
|
if(statusField == NULL)
|
||||||
{
|
{
|
||||||
statusField = env->GetFieldID(vnetConfigClass, "status", "Lcom/zerotierone/sdk/VirtualNetworStatus;");
|
LOGE("Error getting status field");
|
||||||
if(statusField == NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(typeField == NULL)
|
|
||||||
{
|
|
||||||
typeField = env->GetFieldID(vnetConfigClass, "type", "Lcom/zerotierone/sdk/VirtualNetworkType;");
|
typeField = env->GetFieldID(vnetConfigClass, "type", "Lcom/zerotierone/sdk/VirtualNetworkType;");
|
||||||
if(typeField == NULL)
|
if(typeField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting type field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(mtuField == NULL)
|
|
||||||
{
|
|
||||||
mtuField = env->GetFieldID(vnetConfigClass, "mtu", "I");
|
mtuField = env->GetFieldID(vnetConfigClass, "mtu", "I");
|
||||||
if(mtuField == NULL)
|
if(mtuField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting mtu field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(dhcpField == NULL)
|
|
||||||
{
|
|
||||||
dhcpField = env->GetFieldID(vnetConfigClass, "dhcp", "Z");
|
dhcpField = env->GetFieldID(vnetConfigClass, "dhcp", "Z");
|
||||||
if(dhcpField == NULL)
|
if(dhcpField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting dhcp field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(bridgeField == NULL)
|
|
||||||
{
|
|
||||||
bridgeField = env->GetFieldID(vnetConfigClass, "bridge", "Z");
|
bridgeField = env->GetFieldID(vnetConfigClass, "bridge", "Z");
|
||||||
if(bridgeField == NULL)
|
if(bridgeField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting bridge field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(broadcastEnabledField == NULL)
|
|
||||||
{
|
|
||||||
broadcastEnabledField = env->GetFieldID(vnetConfigClass, "broadcastEnabled", "Z");
|
broadcastEnabledField = env->GetFieldID(vnetConfigClass, "broadcastEnabled", "Z");
|
||||||
if(broadcastEnabledField == NULL)
|
if(broadcastEnabledField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting broadcastEnabled field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
portErrorField = env->GetFieldID(vnetConfigClass, "portError", "I");
|
||||||
if(portErrorField == NULL)
|
if(portErrorField == NULL)
|
||||||
{
|
{
|
||||||
portErrorField == env->GetFieldID(vnetConfigClass, "portError", "I");
|
LOGE("Error getting portError field");
|
||||||
if(portErrorField == NULL)
|
|
||||||
{
|
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(enabledField == NULL)
|
|
||||||
{
|
|
||||||
enabledField = env->GetFieldID(vnetConfigClass, "enabled", "Z");
|
enabledField = env->GetFieldID(vnetConfigClass, "enabled", "Z");
|
||||||
if(enabledField == NULL)
|
if(enabledField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting enabled field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(netconfRevisionField == NULL)
|
|
||||||
{
|
|
||||||
netconfRevisionField = env->GetFieldID(vnetConfigClass, "netconfRevision", "J");
|
netconfRevisionField = env->GetFieldID(vnetConfigClass, "netconfRevision", "J");
|
||||||
if(netconfRevisionField == NULL)
|
if(netconfRevisionField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting netconfRevision field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(multicastSubscriptionsField == NULL)
|
|
||||||
{
|
|
||||||
multicastSubscriptionsField = env->GetFieldID(vnetConfigClass, "multicastSubscriptions", "Ljava/util/ArrayList;");
|
multicastSubscriptionsField = env->GetFieldID(vnetConfigClass, "multicastSubscriptions", "Ljava/util/ArrayList;");
|
||||||
if(multicastSubscriptionsField == NULL)
|
if(multicastSubscriptionsField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting multicastSubscriptions field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if(assignedAddressesField == NULL)
|
|
||||||
{
|
|
||||||
assignedAddressesField = env->GetFieldID(vnetConfigClass, "assignedAddresses", "Ljava/util/ArrayList;");
|
assignedAddressesField = env->GetFieldID(vnetConfigClass, "assignedAddresses", "Ljava/util/ArrayList;");
|
||||||
if(assignedAddressesField == NULL)
|
if(assignedAddressesField == NULL)
|
||||||
{
|
{
|
||||||
|
LOGE("Error getting assignedAddresses field");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
env->SetLongField(vnetConfigObj, nwidField, vnetConfig.nwid);
|
env->SetLongField(vnetConfigObj, nwidField, vnetConfig.nwid);
|
||||||
env->SetLongField(vnetConfigObj, macField, vnetConfig.mac);
|
env->SetLongField(vnetConfigObj, macField, vnetConfig.mac);
|
||||||
@ -865,7 +840,7 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags
|
|||||||
jfieldID featureFlagsField = NULL;
|
jfieldID featureFlagsField = NULL;
|
||||||
|
|
||||||
majorField = env->GetFieldID(versionClass, "major", "I");
|
majorField = env->GetFieldID(versionClass, "major", "I");
|
||||||
if(majorField = NULL)
|
if(majorField == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@ -892,6 +867,8 @@ jobject newVersion(JNIEnv *env, int major, int minor, int rev, long featureFlags
|
|||||||
env->SetIntField(versionObj, minorField, (jint)minor);
|
env->SetIntField(versionObj, minorField, (jint)minor);
|
||||||
env->SetIntField(versionObj, revisionField, (jint)rev);
|
env->SetIntField(versionObj, revisionField, (jint)rev);
|
||||||
env->SetLongField(versionObj, featureFlagsField, (jlong)featureFlags);
|
env->SetLongField(versionObj, featureFlagsField, (jlong)featureFlags);
|
||||||
|
|
||||||
|
return versionObj;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
|
@ -53,6 +53,19 @@ namespace {
|
|||||||
, configListener(NULL)
|
, configListener(NULL)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
~JniRef()
|
||||||
|
{
|
||||||
|
JNIEnv *env = NULL;
|
||||||
|
jvm->GetEnv((void**)&env, JNI_VERSION_1_6);
|
||||||
|
|
||||||
|
env->DeleteGlobalRef(dataStoreGetListener);
|
||||||
|
env->DeleteGlobalRef(dataStorePutListener);
|
||||||
|
env->DeleteGlobalRef(packetSender);
|
||||||
|
env->DeleteGlobalRef(eventListener);
|
||||||
|
env->DeleteGlobalRef(frameListener);
|
||||||
|
env->DeleteGlobalRef(configListener);
|
||||||
|
}
|
||||||
|
|
||||||
uint64_t id;
|
uint64_t id;
|
||||||
|
|
||||||
JavaVM *jvm;
|
JavaVM *jvm;
|
||||||
@ -250,7 +263,7 @@ namespace {
|
|||||||
{
|
{
|
||||||
const char* message = (const char*)data;
|
const char* message = (const char*)data;
|
||||||
jstring messageStr = env->NewStringUTF(message);
|
jstring messageStr = env->NewStringUTF(message);
|
||||||
env->CallVoidMethod(ref->eventListener, onTraceMethod);
|
env->CallVoidMethod(ref->eventListener, onTraceMethod, messageStr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -356,12 +369,12 @@ namespace {
|
|||||||
// set operation
|
// set operation
|
||||||
jbyteArray bufferObj = env->NewByteArray(bufferSize);
|
jbyteArray bufferObj = env->NewByteArray(bufferSize);
|
||||||
env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer);
|
env->SetByteArrayRegion(bufferObj, 0, bufferSize, (jbyte*)buffer);
|
||||||
bool secure = secure != 0;
|
bool bsecure = secure != 0;
|
||||||
|
|
||||||
|
|
||||||
return env->CallIntMethod(ref->dataStorePutListener,
|
return env->CallIntMethod(ref->dataStorePutListener,
|
||||||
dataStorePutCallbackMethod,
|
dataStorePutCallbackMethod,
|
||||||
nameStr, bufferObj, secure);
|
nameStr, bufferObj, bsecure);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -439,11 +452,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL; // exception already thrown
|
return NULL; // exception already thrown
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->dataStoreGetListener = env->GetObjectField(obj, fid);
|
jobject tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->dataStoreGetListener == NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->dataStoreGetListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = env->GetFieldID(
|
fid = env->GetFieldID(
|
||||||
cls, "putListener", "Lcom/zerotierone/sdk/DataStorePutListener;");
|
cls, "putListener", "Lcom/zerotierone/sdk/DataStorePutListener;");
|
||||||
@ -453,11 +467,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL; // exception already thrown
|
return NULL; // exception already thrown
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->dataStorePutListener = env->GetObjectField(obj, fid);
|
tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->dataStorePutListener == NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->dataStorePutListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = env->GetFieldID(
|
fid = env->GetFieldID(
|
||||||
cls, "sender", "Lcom/zerotierone/sdk/PacketSender;");
|
cls, "sender", "Lcom/zerotierone/sdk/PacketSender;");
|
||||||
@ -466,11 +481,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL; // exception already thrown
|
return NULL; // exception already thrown
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->packetSender = env->GetObjectField(obj, fid);
|
tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->packetSender == NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->packetSender = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = env->GetFieldID(
|
fid = env->GetFieldID(
|
||||||
cls, "frameListener", "Lcom/zerotierone/sdk/VirtualNetworkFrameListener;");
|
cls, "frameListener", "Lcom/zerotierone/sdk/VirtualNetworkFrameListener;");
|
||||||
@ -479,11 +495,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL; // exception already thrown
|
return NULL; // exception already thrown
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->frameListener = env->GetObjectField(obj, fid);
|
tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->frameListener = NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->frameListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = env->GetFieldID(
|
fid = env->GetFieldID(
|
||||||
cls, "configListener", "Lcom/zerotierone/sdk/VirtualNetworkConfigListener;");
|
cls, "configListener", "Lcom/zerotierone/sdk/VirtualNetworkConfigListener;");
|
||||||
@ -492,11 +509,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL; // exception already thrown
|
return NULL; // exception already thrown
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->configListener = env->GetObjectField(obj, fid);
|
tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->configListener == NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->configListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
fid = env->GetFieldID(
|
fid = env->GetFieldID(
|
||||||
cls, "eventListener", "Lcom/zerotierone/sdk/EventListener;");
|
cls, "eventListener", "Lcom/zerotierone/sdk/EventListener;");
|
||||||
@ -505,11 +523,12 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_node_1init(
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
ref->eventListener = env->GetObjectField(obj, fid);
|
tmp = env->GetObjectField(obj, fid);
|
||||||
if(ref->eventListener == NULL)
|
if(tmp == NULL)
|
||||||
{
|
{
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
ref->eventListener = env->NewGlobalRef(tmp);
|
||||||
|
|
||||||
ZT1_ResultCode rc = ZT1_Node_new(
|
ZT1_ResultCode rc = ZT1_Node_new(
|
||||||
&node,
|
&node,
|
||||||
@ -722,7 +741,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_processWirePacket(
|
|||||||
memcpy(ipv6.sin6_addr.s6_addr, addr, 16);
|
memcpy(ipv6.sin6_addr.s6_addr, addr, 16);
|
||||||
memcpy(&remoteAddress, &ipv6, sizeof(sockaddr_in6));
|
memcpy(&remoteAddress, &ipv6, sizeof(sockaddr_in6));
|
||||||
}
|
}
|
||||||
else if(addrSize = 4)
|
else if(addrSize == 4)
|
||||||
{
|
{
|
||||||
// IPV4 address
|
// IPV4 address
|
||||||
sockaddr_in ipv4 = {};
|
sockaddr_in ipv4 = {};
|
||||||
@ -759,7 +778,7 @@ JNIEXPORT jobject JNICALL Java_com_zerotierone_sdk_Node_processWirePacket(
|
|||||||
env->ReleaseByteArrayElements(addressArray, addr, 0);
|
env->ReleaseByteArrayElements(addressArray, addr, 0);
|
||||||
env->ReleaseByteArrayElements(in_packetData, packetData, 0);
|
env->ReleaseByteArrayElements(in_packetData, packetData, 0);
|
||||||
|
|
||||||
return createResultObject(env, ZT1_RESULT_OK);
|
return createResultObject(env, rc);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -41,6 +41,13 @@ public enum Event {
|
|||||||
*/
|
*/
|
||||||
EVENT_OFFLINE,
|
EVENT_OFFLINE,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Node is online -- at least one upstream node appears reachable
|
||||||
|
*
|
||||||
|
* Meta-data: none
|
||||||
|
*/
|
||||||
|
EVENT_ONLINE,
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Node is shutting down
|
* Node is shutting down
|
||||||
*
|
*
|
||||||
|
Loading…
x
Reference in New Issue
Block a user