From 47d4780eb448f839fc6b0644135395f879080ba4 Mon Sep 17 00:00:00 2001 From: Jesper Jensen Date: Sun, 23 Jul 2023 12:15:34 +0200 Subject: I don't remember --- src/proto.h.orig | 78 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 src/proto.h.orig (limited to 'src/proto.h.orig') diff --git a/src/proto.h.orig b/src/proto.h.orig new file mode 100644 index 0000000..ce2a713 --- /dev/null +++ b/src/proto.h.orig @@ -0,0 +1,78 @@ +#pragma once + +#include "routing.h" +#include +#include + +// 192.0.2.0 +#define UNDEF_ADDR (struct in_addr){0xC0000200} +#define MAX_DISC 32 +#define MAX_INFLIGHT 32 + +#define PROTO_UNCTM 60 +#define PROTO_TMOUT 5 + +struct ping { + struct nodeid remote_id; + int attempt; + bool is_new; +}; + +union message_cont { + struct ping ping; +}; + +struct dht; +struct msgbuff; + +#define PROCESS_REPONSE(NAME) int (NAME)(struct dht* dht, time_t now, union message_cont* cont, char* packet, size_t packet_len, int socket, struct sockaddr* remote, socklen_t remote_len, struct msgbuff* msgbuff) +typedef PROCESS_REPONSE(resp); + +#define PROCESS_TIMEOUT(NAME) int (NAME)(struct dht* dht, struct nodeid* self, time_t now, union message_cont* cont, struct msgbuff* msgbuff) +typedef PROCESS_TIMEOUT(tmout); + +struct dht { + struct nodeid self; + int sfd; + + bool pause; + + bool reqalloc[MAX_INFLIGHT]; + struct { + struct sockaddr_storage addr; + socklen_t addr_len; + resp* fun; + time_t timeout; + tmout* timeout_fun; + union message_cont cont; + } requestdata[MAX_INFLIGHT]; +}; + +// @HACK: This isn't true anymore +// The longest message we can send is probably a response to find_node which +// consists of: +// d1:t <-- 4 bytes +// <-- 2 bytes +// : <-- 1 byte +// <-- 16 bytes* +// 1:y1:r1:r <-- 9 bytes +// d2:id20: <-- 8 bytes +// <-- 20 bytes +// 5:nodes208: <-- 11 bytes +// <-- 208 bytes +// ee <-- 2 bytes +// TOTAL 281 bytes +struct message { +<<<<<<< HEAD + char payload[1024]; +======= + char payload[281]; +>>>>>>> 685b13e (I don't remember) + size_t payload_len; + struct sockaddr_storage dest; + socklen_t dest_len; +}; + +void proto_begin(struct dht* dht, time_t now, struct message** output, const struct message* const output_end); +int proto_run(struct dht* dht, char* buffer, size_t buffer_len, struct sockaddr_in* remote, socklen_t remote_len, time_t now, struct message** output, const struct message* const output_end); +void proto_end(struct dht* dht); -- cgit v1.2.3