From 6012386e168640a4dd91e38a7a1fd50e9e8c0cb0 Mon Sep 17 00:00:00 2001 From: DonyDominic Date: Tue, 27 Jan 2026 23:41:20 +0530 Subject: [PATCH 1/2] refactor: optimize struct alignment across core networking headers --- src/initialize_client_connection.c | 4 +- src/internal/internal.h | 10 ++-- src/swift_net.h | 92 +++++++++++++++--------------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/initialize_client_connection.c b/src/initialize_client_connection.c index c8ed22f..64ab933 100644 --- a/src/initialize_client_connection.c +++ b/src/initialize_client_connection.c @@ -20,11 +20,11 @@ #include struct RequestServerInformationArgs { - pcap_t* pcap; - const void* const data; const uint32_t size; const struct in_addr server_addr; + pcap_t* pcap; const uint32_t timeout_ms; + const void* const data; struct SwiftNetClientConnection* const connection; }; diff --git a/src/internal/internal.h b/src/internal/internal.h index 0410220..2d0350b 100644 --- a/src/internal/internal.h +++ b/src/internal/internal.h @@ -110,12 +110,12 @@ enum AllocatorStackState { struct Listener { pcap_t* pcap; - char interface_name[IFNAMSIZ]; + pthread_t listener_thread; struct SwiftNetVector servers; struct SwiftNetVector client_connections; - pthread_t listener_thread; - bool loopback; + char interface_name[IFNAMSIZ]; uint16_t addr_type; + bool loopback; }; enum ConnectionType { @@ -215,9 +215,9 @@ extern void* client_start_pcap(void* client_void); #ifdef SWIFT_NET_REQUESTS struct RequestSent { - uint16_t packet_id; - struct in_addr address; _Atomic(void*) packet_data; + struct in_addr address; + uint16_t packet_id; }; extern struct SwiftNetMemoryAllocator requests_sent_memory_allocator; diff --git a/src/swift_net.h b/src/swift_net.h index d4d3fbd..50c8d90 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -75,8 +75,8 @@ struct SwiftNetPortInfo { }; struct SwiftNetClientAddrData { - struct in_addr sender_address; uint32_t maximum_transmission_unit; + struct in_addr sender_address; uint16_t port; uint8_t mac_address[6]; }; @@ -86,32 +86,32 @@ struct SwiftNetPacketClientMetadata { struct SwiftNetPortInfo port_info; uint16_t packet_id; #ifdef SWIFT_NET_REQUESTS - bool expecting_response; + bool expecting_response; #endif }; struct SwiftNetPacketInfo { uint32_t packet_length; - struct SwiftNetPortInfo port_info; - uint8_t packet_type; uint32_t chunk_amount; uint32_t chunk_index; uint32_t maximum_transmission_unit; + struct SwiftNetPortInfo port_info; + uint8_t packet_type; }; struct SwiftNetPendingMessage { + uint8_t* chunks_received; uint8_t* packet_data_start; struct SwiftNetPacketInfo packet_info; - uint16_t packet_id; - uint8_t* chunks_received; uint32_t chunks_received_length; uint32_t chunks_received_number; + uint16_t packet_id; }; struct SwiftNetPacketServerMetadata { + struct SwiftNetClientAddrData sender; uint32_t data_length; struct SwiftNetPortInfo port_info; - struct SwiftNetClientAddrData sender; uint16_t packet_id; #ifdef SWIFT_NET_REQUESTS bool expecting_response; @@ -129,10 +129,10 @@ enum PacketSendingUpdated { }; struct SwiftNetPacketSending { - uint16_t packet_id; uint32_t* lost_chunks; - uint32_t lost_chunks_size; _Atomic enum PacketSendingUpdated updated; + uint32_t lost_chunks_size; + uint16_t packet_id; _Atomic bool locked; }; @@ -154,36 +154,36 @@ struct PacketQueueNode { }; struct PacketQueue { - _Atomic enum PacketQueueOwner owner; struct PacketQueueNode* first_node; struct PacketQueueNode* last_node; + _Atomic enum PacketQueueOwner owner; }; struct PacketCallbackQueueNode { - void* packet_data; struct SwiftNetPendingMessage* pending_message; - uint16_t packet_id; struct PacketCallbackQueueNode* next; + void* packet_data; + uint16_t packet_id; }; struct SwiftNetServerPacketData { + struct SwiftNetPendingMessage* internal_pending_message; // Do not use!! uint8_t* data; uint8_t* current_pointer; struct SwiftNetPacketServerMetadata metadata; - struct SwiftNetPendingMessage* internal_pending_message; // Do not use!! }; struct SwiftNetClientPacketData { + struct SwiftNetPendingMessage* internal_pending_message; // Do not use!! uint8_t* data; uint8_t* current_pointer; struct SwiftNetPacketClientMetadata metadata; - struct SwiftNetPendingMessage* internal_pending_message; // Do not use!! }; struct PacketCallbackQueue { - _Atomic enum PacketQueueOwner owner; struct PacketCallbackQueueNode* first_node; struct PacketCallbackQueueNode* last_node; + _Atomic enum PacketQueueOwner owner; }; struct SwiftNetSentSuccessfullyCompletedPacketSignal { @@ -192,15 +192,15 @@ struct SwiftNetSentSuccessfullyCompletedPacketSignal { }; struct SwiftNetMemoryAllocatorStack { - _Atomic uint32_t size; - void* pointers; - void* data; _Atomic(void*) next; _Atomic(void*) previous; + void* pointers; + void* data; + _Atomic uint32_t size; _Atomic uint8_t owner; #ifdef SWIFT_NET_INTERNAL_TESTING - uint8_t* ptr_status; _Atomic bool accessing_ptr_status; + uint8_t* ptr_status; #endif }; @@ -226,58 +226,58 @@ struct SwiftNetVector { // Connection data struct SwiftNetClientConnection { pcap_t* pcap; - struct ether_header eth_header; - struct SwiftNetPortInfo port_info; - struct in_addr server_addr; - _Atomic(void (*)(struct SwiftNetClientPacketData* const, void* const user)) packet_handler; + _Atomic(void (*)(struct SwiftNetClientPacketData* const, void* const user)) packet_handler; _Atomic(void*) packet_handler_user_arg; - _Atomic bool closing; - _Atomic bool initialized; - uint16_t addr_type; - bool loopback; - pthread_t process_packets_thread; + struct SwiftNetVector packets_completed; + struct SwiftNetMemoryAllocator packets_completed_memory_allocator; + struct PacketQueue packet_queue; pthread_mutex_t process_packets_mtx; pthread_cond_t process_packets_cond; - pthread_t execute_callback_thread; - pthread_mutex_t execute_callback_mtx; - pthread_cond_t execute_callback_cond; - uint32_t maximum_transmission_unit; + pthread_t process_packets_thread; struct SwiftNetVector pending_messages; struct SwiftNetMemoryAllocator pending_messages_memory_allocator; struct SwiftNetVector packets_sending; struct SwiftNetMemoryAllocator packets_sending_memory_allocator; - struct SwiftNetVector packets_completed; - struct SwiftNetMemoryAllocator packets_completed_memory_allocator; - struct PacketQueue packet_queue; struct PacketCallbackQueue packet_callback_queue; + pthread_mutex_t execute_callback_mtx; + pthread_cond_t execute_callback_cond; + pthread_t execute_callback_thread; + struct SwiftNetPortInfo port_info; + uint16_t addr_type; + struct in_addr server_addr; + struct ether_header eth_header; + uint32_t maximum_transmission_unit; uint8_t prepend_size; + bool loopback; + _Atomic bool closing; + _Atomic bool initialized; }; struct SwiftNetServer { pcap_t* pcap; - struct ether_header eth_header; - uint16_t server_port; _Atomic(void (*)(struct SwiftNetServerPacketData* const, void* const user)) packet_handler; _Atomic(void*) packet_handler_user_arg; - _Atomic bool closing; - uint16_t addr_type; - bool loopback; - pthread_t process_packets_thread; + uint8_t* current_read_pointer; + struct PacketQueue packet_queue; pthread_mutex_t process_packets_mtx; pthread_cond_t process_packets_cond; - pthread_t execute_callback_thread; - pthread_mutex_t execute_callback_mtx; - pthread_cond_t execute_callback_cond; + pthread_t process_packets_thread; struct SwiftNetVector pending_messages; struct SwiftNetMemoryAllocator pending_messages_memory_allocator; struct SwiftNetVector packets_sending; struct SwiftNetMemoryAllocator packets_sending_memory_allocator; struct SwiftNetVector packets_completed; struct SwiftNetMemoryAllocator packets_completed_memory_allocator; - uint8_t* current_read_pointer; - struct PacketQueue packet_queue; struct PacketCallbackQueue packet_callback_queue; + pthread_mutex_t execute_callback_mtx; + pthread_cond_t execute_callback_cond; + pthread_t execute_callback_thread; + struct ether_header eth_header; + uint16_t server_port; + uint16_t addr_type; uint8_t prepend_size; + bool loopback; + _Atomic bool closing; }; // Set a custom message (packet) handler for the server. From af7895c854bbc917dafb55ccb9ea2f6c9e3642bd Mon Sep 17 00:00:00 2001 From: Morcules Date: Tue, 27 Jan 2026 20:23:11 +0100 Subject: [PATCH 2/2] Small visual tweaks --- src/internal/internal.h | 64 ++++++++++++++++++++--------------------- src/swift_net.h | 43 ++++++++++++++------------- 2 files changed, 53 insertions(+), 54 deletions(-) diff --git a/src/internal/internal.h b/src/internal/internal.h index 2d0350b..7c7d6b3 100644 --- a/src/internal/internal.h +++ b/src/internal/internal.h @@ -7,16 +7,16 @@ #include #include #include -#include "../swift_net.h" #include #include #include #include +#include "../swift_net.h" #ifdef __linux__ - #define LOOPBACK_INTERFACE_NAME "lo\0" +#define LOOPBACK_INTERFACE_NAME "lo\0" #elif defined(__APPLE__) - #define LOOPBACK_INTERFACE_NAME "lo0\0" +#define LOOPBACK_INTERFACE_NAME "lo0\0" #endif typedef enum { @@ -146,36 +146,36 @@ extern int swiftnet_pcap_send(pcap_t *pcap, const uint8_t *data, int len); extern void* check_existing_listener(const char* interface_name, void* const connection, const enum ConnectionType connection_type, const bool loopback); #ifdef SWIFT_NET_INTERNAL_TESTING - extern uint32_t bytes_leaked; - extern uint32_t items_leaked; +extern uint32_t bytes_leaked; +extern uint32_t items_leaked; #endif #ifdef SWIFT_NET_DEBUG - extern struct SwiftNetDebugger debugger; +extern struct SwiftNetDebugger debugger; - static inline bool check_debug_flag(const enum SwiftNetDebugFlags flag) { - return (debugger.flags & flag) != 0; - } +static inline bool check_debug_flag(const enum SwiftNetDebugFlags flag) { + return (debugger.flags & flag) != 0; +} - static inline void send_debug_message(const char* message, ...) { - va_list args; - va_start(args, message); +static inline void send_debug_message(const char* message, ...) { + va_list args; + va_start(args, message); - char* prefix = "[DEBUG] "; + char* prefix = "[DEBUG] "; - const uint32_t prefix_length = strlen(prefix); - const uint32_t message_length = strlen(message); + const uint32_t prefix_length = strlen(prefix); + const uint32_t message_length = strlen(message); - char full_message[prefix_length + message_length + 1]; + char full_message[prefix_length + message_length + 1]; - memcpy(full_message, prefix, prefix_length); - memcpy(full_message + prefix_length, message, message_length); - full_message[prefix_length + message_length] = '\0'; + memcpy(full_message, prefix, prefix_length); + memcpy(full_message + prefix_length, message, message_length); + full_message[prefix_length + message_length] = '\0'; - vprintf(full_message, args); + vprintf(full_message, args); - va_end(args); - } + va_end(args); +} #endif #define STACK_CREATING_LOCKED 0 @@ -214,14 +214,14 @@ extern void* server_start_pcap(void* server_void); extern void* client_start_pcap(void* client_void); #ifdef SWIFT_NET_REQUESTS - struct RequestSent { - _Atomic(void*) packet_data; - struct in_addr address; - uint16_t packet_id; - }; +struct RequestSent { + _Atomic(void*) packet_data; + struct in_addr address; + uint16_t packet_id; +}; - extern struct SwiftNetMemoryAllocator requests_sent_memory_allocator; - extern struct SwiftNetVector requests_sent; +extern struct SwiftNetMemoryAllocator requests_sent_memory_allocator; +extern struct SwiftNetVector requests_sent; #endif extern void swiftnet_send_packet( @@ -239,9 +239,9 @@ extern void swiftnet_send_packet( const uint16_t addr_type, const uint8_t prepend_size #ifdef SWIFT_NET_REQUESTS - , struct RequestSent* const request_sent - , const bool response - , const uint16_t request_packet_id + , struct RequestSent* const request_sent + , const bool response + , const uint16_t request_packet_id #endif ); diff --git a/src/swift_net.h b/src/swift_net.h index 50c8d90..aa21eb3 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -1,12 +1,6 @@ #pragma once #include -#ifdef __cplusplus - extern "C" { - - #define restrict __restrict__ -#endif - #include #include #include @@ -17,16 +11,22 @@ #include #include +#ifdef __cplusplus +extern "C" { + +#define restrict __restrict__ +#endif + #ifndef SWIFT_NET_DISABLE_ERROR_CHECKING - #define SWIFT_NET_ERROR +#define SWIFT_NET_ERROR #endif #ifndef SWIFT_NET_DISABLE_REQUESTS - #define SWIFT_NET_REQUESTS +#define SWIFT_NET_REQUESTS #endif #ifndef SWIFT_NET_DISABLE_DEBUGGING - #define SWIFT_NET_DEBUG +#define SWIFT_NET_DEBUG #endif enum PacketQueueOwner { @@ -39,11 +39,11 @@ enum PacketType { REQUEST_INFORMATION = 0x02, SEND_LOST_PACKETS_REQUEST = 0x03, SEND_LOST_PACKETS_RESPONSE = 0x04, - SUCCESSFULLY_RECEIVED_PACKET = 0x05, -#ifdef SWIFT_NET_REQUESTS + SUCCESSFULLY_RECEIVED_PACKET = 0x05, + #ifdef SWIFT_NET_REQUESTS REQUEST = 0x06, RESPONSE = 0x07, -#endif + #endif }; #define PACKET_INFO_ID_NONE 0xFFFF @@ -54,6 +54,8 @@ enum PacketType { extern uint32_t maximum_transmission_unit; #ifdef SWIFT_NET_DEBUG +#define SWIFTNET_DEBUG_FLAGS(num) ((enum SwiftNetDebugFlags)(num)) + enum SwiftNetDebugFlags { PACKETS_SENDING = 1u << 1, PACKETS_RECEIVING = 1u << 2, @@ -61,9 +63,6 @@ enum SwiftNetDebugFlags { LOST_PACKETS = 1u << 4 }; -#define SWIFTNET_DEBUG_FLAGS(num) \ - ((enum SwiftNetDebugFlags)(num)) - struct SwiftNetDebugger { int flags; }; @@ -114,7 +113,7 @@ struct SwiftNetPacketServerMetadata { struct SwiftNetPortInfo port_info; uint16_t packet_id; #ifdef SWIFT_NET_REQUESTS - bool expecting_response; + bool expecting_response; #endif }; @@ -226,7 +225,7 @@ struct SwiftNetVector { // Connection data struct SwiftNetClientConnection { pcap_t* pcap; - _Atomic(void (*)(struct SwiftNetClientPacketData* const, void* const user)) packet_handler; + _Atomic(void (*)(struct SwiftNetClientPacketData* const, void* const user)) packet_handler; _Atomic(void*) packet_handler_user_arg; struct SwiftNetVector packets_completed; struct SwiftNetMemoryAllocator packets_completed_memory_allocator; @@ -407,13 +406,13 @@ extern void swiftnet_server_make_response( #endif #ifdef SWIFT_NET_DEBUG - // Adds one or more debug flags to the global debugger state. - extern void swiftnet_add_debug_flags(const enum SwiftNetDebugFlags flags); - // Removes one or more debug flags from the global debugger state. - extern void swiftnet_remove_debug_flags(const enum SwiftNetDebugFlags flags); +// Adds one or more debug flags to the global debugger state. +extern void swiftnet_add_debug_flags(const enum SwiftNetDebugFlags flags); +// Removes one or more debug flags from the global debugger state. +extern void swiftnet_remove_debug_flags(const enum SwiftNetDebugFlags flags); #endif #ifdef __cplusplus - } +} #endif