From f8904fcfbbeb0336b0516d75c758322cce12de7d Mon Sep 17 00:00:00 2001
From: lns <matzeton@googlemail.com>
Date: Sun, 5 Jun 2022 03:03:46 +0200
Subject: ...

Signed-off-by: lns <matzeton@googlemail.com>
---
 src/ppkt.h | 31 +++++++++++++++++--------------
 1 file changed, 17 insertions(+), 14 deletions(-)

(limited to 'src/ppkt.h')

diff --git a/src/ppkt.h b/src/ppkt.h
index 5772fe8..029e73b 100644
--- a/src/ppkt.h
+++ b/src/ppkt.h
@@ -7,13 +7,14 @@
 
 #define PTUNNEL_MAGIC 0xdeadc0de
 
-#define U8_PTYPE_AUTH_REQUEST 0x01u
-#define U8_PTYPE_AUTH_RESPONSE 0x02u
+#define PTUNNAL_MAX_BODY_SIZE (1500 - sizeof(struct iphdr) \
+                                    - sizeof(struct icmphdr) \
+                                    - sizeof(struct ppkt_header))
 
 enum ptype {
     PTYPE_INVALID = 0,
-    PTYPE_AUTH_REQUEST = U8_PTYPE_AUTH_REQUEST,
-    PTYPE_AUTH_RESPONSE = U8_PTYPE_AUTH_RESPONSE,
+    PTYPE_AUTH_REQUEST,
+    PTYPE_AUTH_RESPONSE,
 };
 
 struct psock;
@@ -21,18 +22,23 @@ struct pdesc;
 
 struct ppkt_auth_request {
     uint32_t magic;
-    uint16_t hash_siz;
-    uint8_t hash[0];
+    uint16_t authdata_siz;
+    uint8_t authdata[0];
 } __attribute__((__packed__));
 
 struct ppkt_auth_response {
     uint8_t code;
 } __attribute__((__packed__));
 
-struct ppkt {
+struct ppkt_header {
     uint16_t total_size;
     uint8_t type;
-    uint8_t data[0];
+} __attribute__((__packed__));
+
+union ppkt_body {
+    struct ppkt_auth_request auth_request;
+    struct ppkt_auth_response auth_response;
+    uint8_t buf[PTUNNAL_MAX_BODY_SIZE];
 } __attribute__((__packed__));
 
 struct ppkt_buffer {
@@ -40,14 +46,11 @@ struct ppkt_buffer {
     size_t iovec_used;
 
     struct icmphdr icmphdr;
-    struct ppkt pkt;
-    union {
-        struct ppkt_auth_request auth_request;
-        struct ppkt_auth_response auth_response;
-    };
+    struct ppkt_header pheader;
+    union ppkt_body pbody;
 };
 
-enum ptype ppkt_type_to_enum(struct ppkt *);
+enum ptype ppkt_type_to_enum(struct ppkt_header *);
 
 int ppkt_process_icmp(struct psock *);
 
-- 
cgit v1.2.3