X-Git-Url: http://git.meshlink.io/?p=meshlink;a=blobdiff_plain;f=src%2Fmeshlink.c;h=2d4c2e1f2beb1c218eebd5343be2f6aa75cb8644;hp=30b386846a7322e261a1b0f4888331773352fe0c;hb=be83b0af60449c7b35d17d97f2e6dc12f611e831;hpb=529b8fab8c21e7ae5af91d742ff202eab38e51f3 diff --git a/src/meshlink.c b/src/meshlink.c index 30b38684..2d4c2e1f 100644 --- a/src/meshlink.c +++ b/src/meshlink.c @@ -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;