pthread_mutex_unlock(&(mesh->mesh_mutex));
}
+void meshlink_set_node_pmtu_cb(meshlink_handle_t *mesh, meshlink_node_pmtu_cb_t cb) {
+ if(!mesh) {
+ meshlink_errno = MESHLINK_EINVAL;
+ return;
+ }
+
+ pthread_mutex_lock(&(mesh->mesh_mutex));
+ mesh->node_pmtu_cb = cb;
+ pthread_mutex_unlock(&(mesh->mesh_mutex));
+}
+
void meshlink_set_node_duplicate_cb(meshlink_handle_t *mesh, meshlink_node_duplicate_cb_t cb) {
if(!mesh) {
meshlink_errno = MESHLINK_EINVAL;
node_write_config(mesh, n);
config_sync(mesh, "current");
+ if(n->status.reachable) {
+ update_node_status(mesh, n);
+ }
+
pthread_mutex_unlock(&(mesh->mesh_mutex));
return;
}
if(mesh->node_status_cb) {
mesh->node_status_cb(mesh, (meshlink_node_t *)n, n->status.reachable && !n->status.blacklisted);
}
+
+ if(mesh->node_pmtu_cb) {
+ mesh->node_pmtu_cb(mesh, (meshlink_node_t *)n, n->minmtu);
+ }
+}
+
+void update_node_pmtu(meshlink_handle_t *mesh, node_t *n) {
+ if(mesh->node_pmtu_cb && !n->status.blacklisted) {
+ mesh->node_pmtu_cb(mesh, (meshlink_node_t *)n, n->minmtu);
+ }
}
void handle_duplicate_node(meshlink_handle_t *mesh, node_t *n) {