-// This is a *temporary* global variable which will keep the compiler happy
-// while refactoring the code to get rid of global variables.
-// TODO: remove this when no other global variables remain.
+/// A channel.
+struct meshlink_channel {
+ struct node_t *node;
+ void *priv;
+
+ struct utcp_connection *c;
+ meshlink_channel_receive_cb_t receive_cb;
+ meshlink_channel_poll_cb_t poll_cb;
+};
+
+/// Header for data packets routed between nodes
+typedef struct meshlink_packethdr {
+ uint8_t destination[16];
+ uint8_t source[16];
+} __attribute__((__packed__)) meshlink_packethdr_t;
+
+extern void meshlink_send_from_queue(event_loop_t *el, meshlink_handle_t *mesh);
+extern void update_node_status(meshlink_handle_t *mesh, struct node_t *n);
+extern meshlink_log_level_t global_log_level;
+extern meshlink_log_cb_t global_log_cb;
+
+/// Device class traits
+typedef struct {
+ unsigned int min_connects;
+ unsigned int max_connects;
+ int edge_weight;
+} dev_class_traits_t;