|
@@ -636,6 +636,18 @@ void Node::clusterHandleIncomingMessage(const void *msg,unsigned int len)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+void Node::clusterStatus(ZT_ClusterStatus *cs)
|
|
|
+{
|
|
|
+ if (!cs)
|
|
|
+ return;
|
|
|
+#ifdef ZT_ENABLE_CLUSTER
|
|
|
+ if (RR->cluster)
|
|
|
+ RR->cluster->status(*cs);
|
|
|
+ else
|
|
|
+#endif
|
|
|
+ memset(cs,0,sizeof(ZT_ClusterStatus));
|
|
|
+}
|
|
|
+
|
|
|
/****************************************************************************/
|
|
|
/* Node methods used only within node/ */
|
|
|
/****************************************************************************/
|
|
@@ -947,15 +959,6 @@ enum ZT_ResultCode ZT_Node_clusterInit(
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * Add a member to this cluster
|
|
|
- *
|
|
|
- * Calling this without having called clusterInit() will do nothing.
|
|
|
- *
|
|
|
- * @param node Node instance
|
|
|
- * @param memberId Member ID (must be less than or equal to ZT_CLUSTER_MAX_MEMBERS)
|
|
|
- * @return OK or error if clustering is disabled, ID invalid, etc.
|
|
|
- */
|
|
|
enum ZT_ResultCode ZT_Node_clusterAddMember(ZT_Node *node,unsigned int memberId)
|
|
|
{
|
|
|
try {
|
|
@@ -965,14 +968,6 @@ enum ZT_ResultCode ZT_Node_clusterAddMember(ZT_Node *node,unsigned int memberId)
|
|
|
}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * Remove a member from this cluster
|
|
|
- *
|
|
|
- * Calling this without having called clusterInit() will do nothing.
|
|
|
- *
|
|
|
- * @param node Node instance
|
|
|
- * @param memberId Member ID to remove (nothing happens if not present)
|
|
|
- */
|
|
|
void ZT_Node_clusterRemoveMember(ZT_Node *node,unsigned int memberId)
|
|
|
{
|
|
|
try {
|
|
@@ -980,18 +975,6 @@ void ZT_Node_clusterRemoveMember(ZT_Node *node,unsigned int memberId)
|
|
|
} catch ( ... ) {}
|
|
|
}
|
|
|
|
|
|
-/**
|
|
|
- * Handle an incoming cluster state message
|
|
|
- *
|
|
|
- * The message itself contains cluster member IDs, and invalid or badly
|
|
|
- * addressed messages will be silently discarded.
|
|
|
- *
|
|
|
- * Calling this without having called clusterInit() will do nothing.
|
|
|
- *
|
|
|
- * @param node Node instance
|
|
|
- * @param msg Cluster message
|
|
|
- * @param len Length of cluster message
|
|
|
- */
|
|
|
void ZT_Node_clusterHandleIncomingMessage(ZT_Node *node,const void *msg,unsigned int len)
|
|
|
{
|
|
|
try {
|
|
@@ -999,6 +982,13 @@ void ZT_Node_clusterHandleIncomingMessage(ZT_Node *node,const void *msg,unsigned
|
|
|
} catch ( ... ) {}
|
|
|
}
|
|
|
|
|
|
+void ZT_Node_clusterStatus(ZT_Node *node,ZT_ClusterStatus *cs)
|
|
|
+{
|
|
|
+ try {
|
|
|
+ reinterpret_cast<ZeroTier::Node *>(node)->clusterStatus(cs);
|
|
|
+ } catch ( ... ) {}
|
|
|
+}
|
|
|
+
|
|
|
void ZT_version(int *major,int *minor,int *revision,unsigned long *featureFlags)
|
|
|
{
|
|
|
if (major) *major = ZEROTIER_ONE_VERSION_MAJOR;
|