summaryrefslogtreecommitdiff
path: root/icmpd.h
diff options
context:
space:
mode:
Diffstat (limited to 'icmpd.h')
-rw-r--r--icmpd.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/icmpd.h b/icmpd.h
new file mode 100644
index 0000000..7a87ec6
--- /dev/null
+++ b/icmpd.h
@@ -0,0 +1,31 @@
+#pragma once
+
+#include <stdbool.h>
+#include <stdint.h>
+#include "mt.h"
+
+
+struct icmpd_received {
+ uint8_t *data; // points to malloc'd buffer; should be freed by recipient
+ size_t length; // length of 'data'
+
+ uint32_t source_addr;
+ int id, seqnum;
+};
+
+
+struct icmpd;
+
+// Pass 0 as client_addr to listen for messages from any IP (this channel will then only receive unassigned messages)
+// Pass -1 as id to listen for messages with any id
+struct icmpd* icmpd_create_server(int id, uint32_t client_addr);
+
+struct icmpd* icmpd_create_client(uint32_t server_addr);
+
+void icmpd_server_set_outstanding(struct icmpd *d, int seqnum);
+
+bool icmpd_peek(struct icmpd *d);
+struct icmpd_received icmpd_recv(struct icmpd *d);
+void icmpd_send(struct icmpd *d, const void *data, size_t length);
+
+void icmpd_destroy(struct icmpd *d);