return devclass;
}
+bool meshlink_get_node_tiny(meshlink_handle_t *mesh, meshlink_node_t *node) {
+ if(!mesh || !node) {
+ meshlink_errno = MESHLINK_EINVAL;
+ return -1;
+ }
+
+ bool tiny;
+
+ if(pthread_mutex_lock(&mesh->mutex) != 0) {
+ abort();
+ }
+
+ tiny = ((node_t *)node)->status.tiny;
+
+ pthread_mutex_unlock(&mesh->mutex);
+
+ return tiny;
+}
+
bool meshlink_get_node_blacklisted(meshlink_handle_t *mesh, meshlink_node_t *node) {
if(!mesh) {
meshlink_errno = MESHLINK_EINVAL;
channel->receive_cb = cb;
}
-static void channel_receive(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len) {
+void channel_receive(meshlink_handle_t *mesh, meshlink_node_t *source, const void *data, size_t len) {
(void)mesh;
node_t *n = (node_t *)source;
}
mesh->channel_accept_cb = cb;
- mesh->receive_cb = channel_receive;
for splay_each(node_t, n, mesh->nodes) {
if(!n->utcp && n != mesh->self) {
n->utcp = utcp_init(channel_accept, channel_pre_accept, channel_send, n);
utcp_set_mtu(n->utcp, n->mtu - sizeof(meshlink_packethdr_t));
utcp_set_retransmit_cb(n->utcp, channel_retransmit);
- mesh->receive_cb = channel_receive;
if(!n->utcp) {
meshlink_errno = errno == ENOMEM ? MESHLINK_ENOMEM : MESHLINK_EINTERNAL;