static const char meshlink_tcp_label[] = "MeshLink TCP";
static const char meshlink_udp_label[] = "MeshLink UDP";
static const char meshlink_tcp_label[] = "MeshLink TCP";
static const char meshlink_udp_label[] = "MeshLink UDP";
meshlink_channel_accept_cb_t channel_accept_cb;
meshlink_node_duplicate_cb_t node_duplicate_cb;
meshlink_connection_try_cb_t connection_try_cb;
meshlink_channel_accept_cb_t channel_accept_cb;
meshlink_node_duplicate_cb_t node_duplicate_cb;
meshlink_connection_try_cb_t connection_try_cb;
- // State used for meshlink_join()
- int sock;
- char cookie[18], hash[18];
- bool success;
- sptps_t sptps;
- char *data;
- size_t thedatalen;
- size_t blen;
- char line[4096];
- char buffer[4096];
-
- // Proxy configuration, currently not exposed.
- char *proxyhost;
- char *proxyport;
- char *proxyuser;
- char *proxypass;
- proxytype_t proxytype;
+ // ADNS
+ pthread_t adns_thread;
+ pthread_cond_t adns_cond;
+ meshlink_queue_t adns_queue;
+ meshlink_queue_t adns_done_queue;
+ signal_t adns_signal;
extern void update_node_status(meshlink_handle_t *mesh, struct node_t *n);
extern void update_node_pmtu(meshlink_handle_t *mesh, struct node_t *n);
extern meshlink_log_level_t global_log_level;
extern meshlink_log_cb_t global_log_cb;
extern void handle_duplicate_node(meshlink_handle_t *mesh, struct node_t *n);
extern void handle_network_change(meshlink_handle_t *mesh, bool online);
extern void update_node_status(meshlink_handle_t *mesh, struct node_t *n);
extern void update_node_pmtu(meshlink_handle_t *mesh, struct node_t *n);
extern meshlink_log_level_t global_log_level;
extern meshlink_log_cb_t global_log_cb;
extern void handle_duplicate_node(meshlink_handle_t *mesh, struct node_t *n);
extern void handle_network_change(meshlink_handle_t *mesh, bool online);
+extern void call_error_cb(meshlink_handle_t *mesh, meshlink_errno_t meshlink_errno);
+
+/// Per-instance PRNG
+static inline int prng(meshlink_handle_t *mesh, uint64_t max) {
+ return xoshiro(mesh->prng_state) % max;
+}
+
+/// Fudge value of ~0.1 seconds, in microseconds.
+static const unsigned int TIMER_FUDGE = 0x8000000;