]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink.c
Add meshlink_get_node_reachability().
[meshlink] / src / meshlink.c
index c4613a7019e6182929804a30a7963dc0e9602557..2d4c2e1f2beb1c218eebd5343be2f6aa75cb8644 100644 (file)
@@ -2143,6 +2143,31 @@ meshlink_submesh_t *meshlink_get_node_submesh(meshlink_handle_t *mesh, meshlink_
        return s;
 }
 
+bool meshlink_get_node_reachability(struct meshlink_handle *mesh, struct meshlink_node *node, time_t *last_reachable, time_t *last_unreachable) {
+       if(!mesh || !node) {
+               meshlink_errno = MESHLINK_EINVAL;
+               return NULL;
+       }
+
+       node_t *n = (node_t *)node;
+       bool reachable;
+
+       pthread_mutex_lock(&mesh->mutex);
+       reachable = n->status.reachable;
+
+       if(last_reachable) {
+               *last_reachable = n->last_reachable;
+       }
+
+       if(last_unreachable) {
+               *last_unreachable = n->last_unreachable;
+       }
+
+       pthread_mutex_unlock(&mesh->mutex);
+
+       return reachable;
+}
+
 bool meshlink_sign(meshlink_handle_t *mesh, const void *data, size_t len, void *signature, size_t *siglen) {
        if(!mesh || !data || !len || !signature || !siglen) {
                meshlink_errno = MESHLINK_EINVAL;
@@ -3807,6 +3832,22 @@ void meshlink_set_dev_class_timeouts(meshlink_handle_t *mesh, dev_class_t devcla
        pthread_mutex_unlock(&mesh->mutex);
 }
 
+void meshlink_set_dev_class_fast_retry_period(meshlink_handle_t *mesh, dev_class_t devclass, int fast_retry_period) {
+       if(!mesh || devclass < 0 || devclass >= DEV_CLASS_COUNT) {
+               meshlink_errno = EINVAL;
+               return;
+       }
+
+       if(fast_retry_period < 0) {
+               meshlink_errno = EINVAL;
+               return;
+       }
+
+       pthread_mutex_lock(&mesh->mutex);
+       mesh->dev_class_traits[devclass].fast_retry_period = fast_retry_period;
+       pthread_mutex_unlock(&mesh->mutex);
+}
+
 void handle_network_change(meshlink_handle_t *mesh, bool online) {
        (void)online;