]> git.meshlink.io Git - meshlink/blobdiff - src/meshlink_internal.h
Adding ports and seqno to packet header
[meshlink] / src / meshlink_internal.h
index ca2e0bc5c4904bf32931375dcd7d8c4356f0e240..8700b94e5a1ef2f3a898ce026e6987a032b2416a 100644 (file)
@@ -49,6 +49,12 @@ typedef enum proxytype_t {
        PROXY_EXEC,
 } proxytype_t;
 
+typedef struct outpacketqueue {
+       meshlink_node_t *destination;
+       const void *data;
+       unsigned int len;
+} outpacketqueue_t;
+
 /// A handle for an instance of MeshLink.
 struct meshlink_handle {
        char *confbase;
@@ -60,9 +66,13 @@ struct meshlink_handle {
        meshlink_log_level_t log_level;
 
        pthread_t thread;
+       bool threadstarted;
+       pthread_mutex_t outpacketqueue_mutex;
+       pthread_mutex_t nodes_mutex;
        event_loop_t loop;
        listen_socket_t listen_socket[MAXSOCKETS];
        int listen_sockets;
+       signal_t datafromapp;
 
        struct node_t *self;
 
@@ -73,6 +83,8 @@ struct meshlink_handle {
        struct list_t *connections;
        struct list_t *outgoings;
 
+       struct list_t *outpacketqueue;
+
        int contradicting_add_edge;
        int contradicting_del_edge;
        int sleeptime;
@@ -121,6 +133,12 @@ struct meshlink_node {
 typedef struct meshlink_packethdr {
        uint8_t destination[16];
        uint8_t source[16];
+       uint16_t dport;
+       uint16_t sport;
+       uint16_t seqno;
 } __attribute__ ((__packed__)) meshlink_packethdr_t;
 
+extern void meshlink_send_from_queue(event_loop_t* el,meshlink_handle_t *mesh);
+
+
 #endif // MESHLINK_INTERNAL_H