#ifndef CIRCE_CORE_PACKET_H #define CIRCE_CORE_PACKET_H #define CIRCE_MTU 1280 #define CIRCE_MAX_UDP_PAYLOAD 1472 #include "peer_table.h" #include #include enum circe_packet_type { // Some packets need to be splintered because of UDP MTU CIRCE_PACKET_OPENTUNNEL = 0x0, CIRCE_PACKET_ACKOPEN1, CIRCE_PACKET_ACKOPEN2, CIRCE_PACKET_ACKOPEN3, CIRCE_PACKET_IDENTIFY1, CIRCE_PACKET_IDENTIFY2, CIRCE_PACKET_DATA, CIRCE_PACKET_HEARTBEAT, CIRCE_PACKET_CLOSETUNNEL1, CIRCE_PACKET_CLOSETUNNEL2, CIRCE_PACKET_ROUTE_CHALLENGE1, CIRCE_PACKET_ROUTE_CHALLENGE2, }; enum circe_packet_field { CIRCE_PACKET_FIELD_VERSION = 0x0, CIRCE_PACKET_FIELD_IDENTITY, CIRCE_PACKET_FIELD_TYPE, CIRCE_PACKET_FIELD_ECDH_FRAGMENT, CIRCE_PACKET_FIELD_MLKEM_PUBKEY, CIRCE_PACKET_FIELD_MLKEM_ENCAPSULATED, CIRCE_PACKET_FIELD_SEQ_NUMBER, CIRCE_PACKET_FIELD_DATA_PAYLOAD, CIRCE_PACKET_FIELD_ID_PAYLOAD1, CIRCE_PACKET_FIELD_ID_PAYLOAD2, CIRCE_PACKET_FIELD_OVERMAX, }; struct circe_outgoing_packet { struct circe_location destination; uint8_t buffer[CIRCE_MAX_UDP_PAYLOAD]; size_t length; }; #endif