From a4f7a97ee14686e66aa30b9c5af01d165779c745 Mon Sep 17 00:00:00 2001 From: Sandeep <7006205280dk@gmail.com> Date: Mon, 5 Jan 2026 12:18:44 +0530 Subject: [PATCH 1/4] Refactor: Remove sender_address from SwiftNet send_packet API and update headers --- src/handle_packets.c | 10 +++++----- src/make_request.c | 4 ++-- src/make_response.c | 2 +- src/process_packets.c | 32 +++++++++++++++----------------- src/send_packet.c | 2 +- src/swift_net.h | 6 +++--- 6 files changed, 27 insertions(+), 29 deletions(-) diff --git a/src/handle_packets.c b/src/handle_packets.c index bde3108..928e392 100644 --- a/src/handle_packets.c +++ b/src/handle_packets.c @@ -45,7 +45,7 @@ static inline void insert_queue_node(struct PacketQueueNode* const new_node, str return; } -static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const data, const uint32_t sender_address) { +static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const datas) { struct PacketQueueNode* const node = allocator_allocate(&packet_queue_node_memory_allocator); if (unlikely(node == NULL)) { return NULL; @@ -53,7 +53,7 @@ static inline struct PacketQueueNode* construct_node(const uint32_t data_read, v node->data = data; node->data_read = data_read; - node->sender_address.s_addr = sender_address; + node->next = NULL; return node; @@ -73,7 +73,7 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t return; } - uint32_t sender_address = 0; + if (addr_type == DLT_EN10MB) { struct ether_header* const eth = (struct ether_header *)packet_buffer; @@ -81,14 +81,14 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t if (ntohs(eth->ether_type) == ETHERTYPE_IP) { struct ip *ip_header = (struct ip *)(packet_buffer + sizeof(struct ether_header)); - sender_address = ip_header->ip_src.s_addr; + } else { allocator_free(&packet_buffer_memory_allocator, packet_buffer); return; } } - struct PacketQueueNode* const node = construct_node(len, packet_buffer, sender_address); + struct PacketQueueNode* const node = construct_node(len, packet_buffer); atomic_thread_fence(memory_order_release); diff --git a/src/make_request.c b/src/make_request.c index b56223a..fe6b297 100644 --- a/src/make_request.c +++ b/src/make_request.c @@ -63,7 +63,7 @@ struct SwiftNetClientPacketData* swiftnet_client_make_request(struct SwiftNetCli } struct SwiftNetServerPacketData* swiftnet_server_make_request(struct SwiftNetServer* const server, struct SwiftNetPacketBuffer* const packet, const struct SwiftNetClientAddrData addr_data, const uint32_t timeout_ms) { - struct RequestSent* const request_sent = construct_request_sent(addr_data.sender_address); + struct RequestSent* const request_sent = construct_request_sent(); const uint32_t packet_length = packet->packet_append_pointer - packet->packet_data_start; @@ -72,7 +72,7 @@ struct SwiftNetServerPacketData* swiftnet_server_make_request(struct SwiftNetSer .source_port = server->server_port }; - swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &addr_data.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, request_sent, false, 0); + swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, request_sent, false, 0); struct timeval tv; gettimeofday(&tv, NULL); diff --git a/src/make_response.c b/src/make_response.c index 089dc97..700241f 100644 --- a/src/make_response.c +++ b/src/make_response.c @@ -17,7 +17,7 @@ void swiftnet_server_make_response(struct SwiftNetServer* const server, struct S .destination_port = packet_data->metadata.port_info.source_port }; - swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &packet_data->metadata.sender.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, NULL, true, packet_data->metadata.packet_id); + swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, NULL, true, packet_data->metadata.packet_id); } #endif diff --git a/src/process_packets.c b/src/process_packets.c index 3ebca3c..a1213bb 100644 --- a/src/process_packets.c +++ b/src/process_packets.c @@ -113,17 +113,17 @@ static inline bool check_packet_already_completed(const uint16_t packet_id, stru return false; } -static inline struct SwiftNetPendingMessage* const get_pending_message(struct SwiftNetVector* const pending_messages_vector, const enum ConnectionType connection_type, const struct in_addr sender_address, const uint16_t packet_id) { +static inline struct SwiftNetPendingMessage* const get_pending_message(struct SwiftNetVector* const pending_messages_vector, const enum ConnectionType connection_type, const uint16_t packet_id) { vector_lock(pending_messages_vector); for(uint32_t i = 0; i < pending_messages_vector->size; i++) { struct SwiftNetPendingMessage* const current_pending_message = vector_get((struct SwiftNetVector*)pending_messages_vector, i); - if((connection_type == CONNECTION_TYPE_CLIENT && current_pending_message->packet_id == packet_id) || (connection_type == CONNECTION_TYPE_SERVER && current_pending_message->sender_address.s_addr == sender_address.s_addr && current_pending_message->packet_id == packet_id)) { - vector_unlock((struct SwiftNetVector*)pending_messages_vector); + if(current_pending_message->packet_id == packet_id) { + vector_unlock((struct SwiftNetVector*)pending_messages_vector); + return current_pending_message; +} - return current_pending_message; - } } vector_unlock((struct SwiftNetVector*)pending_messages_vector); @@ -237,7 +237,7 @@ static inline void chunk_received(uint8_t* const chunks_received, const uint32_t chunks_received[byte] |= 1 << bit; } -static inline struct SwiftNetPendingMessage* const create_new_pending_message(struct SwiftNetVector* const pending_messages, struct SwiftNetMemoryAllocator* const pending_messages_memory_allocator, const struct SwiftNetPacketInfo* const packet_info, const enum ConnectionType connection_type, const struct in_addr sender_address, const uint16_t packet_id) { +static inline struct SwiftNetPendingMessage* const create_new_pending_message(struct SwiftNetVector* const pending_messages, struct SwiftNetMemoryAllocator* const pending_messages_memory_allocator, const struct SwiftNetPacketInfo* const packet_info, const enum ConnectionType connection_type, const uint16_t packet_id) { struct SwiftNetPendingMessage* const new_pending_message = allocator_allocate(pending_messages_memory_allocator); uint8_t* const allocated_memory = malloc(packet_info->packet_length); @@ -254,9 +254,7 @@ static inline struct SwiftNetPendingMessage* const create_new_pending_message(st new_pending_message->packet_id = packet_id; - if(connection_type == CONNECTION_TYPE_SERVER) { - new_pending_message->sender_address.s_addr = sender_address.s_addr; - } + vector_lock(pending_messages); @@ -399,7 +397,7 @@ static inline void swiftnet_process_packets( switch(packet_info.packet_type) { case REQUEST_INFORMATION: { - const struct ip send_server_info_ip_header = construct_ip_header(node->sender_address, PACKET_HEADER_SIZE, rand()); + const struct ip send_server_info_ip_header = construct_ip_header( PACKET_HEADER_SIZE, rand()); const struct SwiftNetPacketInfo packet_info_new = construct_packet_info( sizeof(struct SwiftNetServerInformation), @@ -436,7 +434,7 @@ static inline void swiftnet_process_packets( if(pending_message == NULL) { const bool packet_already_completed = check_packet_already_completed(ip_header.ip_id, packets_completed_history); if(likely(packet_already_completed == true)) { - const struct ip send_packet_ip_header = construct_ip_header(node->sender_address, PACKET_HEADER_SIZE, ip_header.ip_id); + const struct ip send_packet_ip_header = construct_ip_header(PACKET_HEADER_SIZE, ip_header.ip_id); struct SwiftNetPacketInfo send_packet_info = construct_packet_info( 0x00, @@ -465,7 +463,7 @@ static inline void swiftnet_process_packets( goto next_packet; } - struct ip send_lost_packets_ip_header = construct_ip_header(node->sender_address, 0, ip_header.ip_id); + struct ip send_lost_packets_ip_header = construct_ip_header(0, ip_header.ip_id); struct SwiftNetPacketInfo packet_info_new = construct_packet_info( 0, @@ -553,7 +551,7 @@ static inline void swiftnet_process_packets( } struct SwiftNetClientAddrData sender = { - .sender_address.s_addr = loopback == true ? inet_addr("127.0.0.1") : node->sender_address.s_addr, + .maximum_transmission_unit = packet_info.maximum_transmission_unit, .port = packet_info.port_info.source_port, }; @@ -565,12 +563,12 @@ static inline void swiftnet_process_packets( const uint32_t mtu = MIN(packet_info.maximum_transmission_unit, maximum_transmission_unit); const uint32_t chunk_data_size = mtu - PACKET_HEADER_SIZE; - struct SwiftNetPendingMessage* const pending_message = get_pending_message(pending_messages, connection_type, node->sender_address, ip_header.ip_id); + struct SwiftNetPendingMessage* const pending_message = get_pending_message(pending_messages, connection_type, ip_header.ip_id); if(pending_message == NULL) { if(packet_info.packet_length > chunk_data_size) { // Split packet into chunks - struct SwiftNetPendingMessage* const new_pending_message = create_new_pending_message(pending_messages, pending_messages_memory_allocator, &packet_info, connection_type, node->sender_address, ip_header.ip_id); + struct SwiftNetPendingMessage* const new_pending_message = create_new_pending_message(pending_messages, pending_messages_memory_allocator, &packet_info, connection_type, ip_header.ip_id); new_pending_message->chunks_received_number++; @@ -601,7 +599,7 @@ static inline void swiftnet_process_packets( #ifdef SWIFT_NET_REQUESTS if (packet_info.packet_type == RESPONSE) { - handle_request_response(ip_header.ip_id, sender.sender_address, NULL, new_packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); + handle_request_response(ip_header.ip_id, NULL, new_packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); } else { pass_callback_execution(new_packet_data, packet_callback_queue, NULL, ip_header.ip_id); } @@ -685,7 +683,7 @@ static inline void swiftnet_process_packets( #ifdef SWIFT_NET_REQUESTS if (packet_info.packet_type == RESPONSE) { - handle_request_response(ip_header.ip_id, sender.sender_address, pending_message, packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); + handle_request_response(ip_header.ip_id, pending_message, packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); } else { pass_callback_execution(packet_data, packet_callback_queue, pending_message, ip_header.ip_id); } diff --git a/src/send_packet.c b/src/send_packet.c index 10b9ca7..1f00190 100644 --- a/src/send_packet.c +++ b/src/send_packet.c @@ -375,7 +375,7 @@ void swiftnet_server_send_packet(struct SwiftNetServer* const server, struct Swi memcpy(ð_hdr, &server->eth_header, sizeof(eth_hdr)); memcpy(ð_hdr.ether_dhost, &target.mac_address, sizeof(eth_hdr.ether_dhost)); - swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, &target.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, eth_hdr, server->loopback, server->addr_type, server->prepend_size + swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, NULL, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, eth_hdr, server->loopback, server->addr_type, server->prepend_size #ifdef SWIFT_NET_REQUESTS , NULL, false, 0 #endif diff --git a/src/swift_net.h b/src/swift_net.h index 94b6bcf..73241e0 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -71,7 +71,7 @@ struct SwiftNetPortInfo { }; struct SwiftNetClientAddrData { - struct in_addr sender_address; + uint32_t maximum_transmission_unit; uint16_t port; uint8_t mac_address[6]; @@ -99,7 +99,7 @@ struct SwiftNetPendingMessage { uint8_t* packet_data_start; struct SwiftNetPacketInfo packet_info; uint16_t packet_id; - struct in_addr sender_address; + uint8_t* chunks_received; uint32_t chunks_received_length; uint32_t chunks_received_number; @@ -147,7 +147,7 @@ struct PacketQueueNode { struct PacketQueueNode* next; uint8_t* data; uint32_t data_read; - struct in_addr sender_address; + }; struct PacketQueue { From 371bb79ec64e6d134897a7d667b72652a49ed5b2 Mon Sep 17 00:00:00 2001 From: Morcules Date: Mon, 5 Jan 2026 13:46:35 +0100 Subject: [PATCH 2/4] Resolved Issues --- src/handle_packets.c | 8 +++++--- src/make_request.c | 4 ++-- src/make_response.c | 2 +- src/process_packets.c | 31 +++++++++++-------------------- src/send_packet.c | 2 +- src/swift_net.h | 5 ++--- 6 files changed, 22 insertions(+), 30 deletions(-) diff --git a/src/handle_packets.c b/src/handle_packets.c index 928e392..be9a1bf 100644 --- a/src/handle_packets.c +++ b/src/handle_packets.c @@ -45,7 +45,7 @@ static inline void insert_queue_node(struct PacketQueueNode* const new_node, str return; } -static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const datas) { +static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const data, uint32_t sender_address) { struct PacketQueueNode* const node = allocator_allocate(&packet_queue_node_memory_allocator); if (unlikely(node == NULL)) { return NULL; @@ -53,6 +53,7 @@ static inline struct PacketQueueNode* construct_node(const uint32_t data_read, v node->data = data; node->data_read = data_read; + node->sender_address.s_addr = sender_address; node->next = NULL; @@ -73,7 +74,7 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t return; } - + uint32_t sender_address; if (addr_type == DLT_EN10MB) { struct ether_header* const eth = (struct ether_header *)packet_buffer; @@ -81,6 +82,7 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t if (ntohs(eth->ether_type) == ETHERTYPE_IP) { struct ip *ip_header = (struct ip *)(packet_buffer + sizeof(struct ether_header)); + sender_address = ip_header->ip_src.s_addr; } else { allocator_free(&packet_buffer_memory_allocator, packet_buffer); @@ -88,7 +90,7 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t } } - struct PacketQueueNode* const node = construct_node(len, packet_buffer); + struct PacketQueueNode* const node = construct_node(len, packet_buffer, sender_address); atomic_thread_fence(memory_order_release); diff --git a/src/make_request.c b/src/make_request.c index fe6b297..b56223a 100644 --- a/src/make_request.c +++ b/src/make_request.c @@ -63,7 +63,7 @@ struct SwiftNetClientPacketData* swiftnet_client_make_request(struct SwiftNetCli } struct SwiftNetServerPacketData* swiftnet_server_make_request(struct SwiftNetServer* const server, struct SwiftNetPacketBuffer* const packet, const struct SwiftNetClientAddrData addr_data, const uint32_t timeout_ms) { - struct RequestSent* const request_sent = construct_request_sent(); + struct RequestSent* const request_sent = construct_request_sent(addr_data.sender_address); const uint32_t packet_length = packet->packet_append_pointer - packet->packet_data_start; @@ -72,7 +72,7 @@ struct SwiftNetServerPacketData* swiftnet_server_make_request(struct SwiftNetSer .source_port = server->server_port }; - swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, request_sent, false, 0); + swiftnet_send_packet(server, addr_data.maximum_transmission_unit, port_info, packet, packet_length, &addr_data.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, request_sent, false, 0); struct timeval tv; gettimeofday(&tv, NULL); diff --git a/src/make_response.c b/src/make_response.c index 700241f..089dc97 100644 --- a/src/make_response.c +++ b/src/make_response.c @@ -17,7 +17,7 @@ void swiftnet_server_make_response(struct SwiftNetServer* const server, struct S .destination_port = packet_data->metadata.port_info.source_port }; - swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, NULL, true, packet_data->metadata.packet_id); + swiftnet_send_packet(server, packet_data->metadata.sender.maximum_transmission_unit, port_info, buffer, packet_length, &packet_data->metadata.sender.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, server->eth_header, server->loopback, server->addr_type, server->prepend_size, NULL, true, packet_data->metadata.packet_id); } #endif diff --git a/src/process_packets.c b/src/process_packets.c index a1213bb..265ac43 100644 --- a/src/process_packets.c +++ b/src/process_packets.c @@ -119,11 +119,10 @@ static inline struct SwiftNetPendingMessage* const get_pending_message(struct Sw for(uint32_t i = 0; i < pending_messages_vector->size; i++) { struct SwiftNetPendingMessage* const current_pending_message = vector_get((struct SwiftNetVector*)pending_messages_vector, i); - if(current_pending_message->packet_id == packet_id) { - vector_unlock((struct SwiftNetVector*)pending_messages_vector); - return current_pending_message; -} - + if(current_pending_message->packet_id == packet_id) { + vector_unlock((struct SwiftNetVector*)pending_messages_vector); + return current_pending_message; + } } vector_unlock((struct SwiftNetVector*)pending_messages_vector); @@ -160,7 +159,7 @@ static inline void insert_callback_queue_node(struct PacketCallbackQueueNode* co #ifdef SWIFT_NET_REQUESTS -static inline void handle_request_response(const uint16_t packet_id, const struct in_addr sender, struct SwiftNetPendingMessage* const pending_message, void* const packet_data, struct SwiftNetVector* const pending_messages, struct SwiftNetMemoryAllocator* const pending_message_memory_allocator, const enum ConnectionType connection_type, const bool loopback) { +static inline void handle_request_response(const uint16_t packet_id, struct SwiftNetPendingMessage* const pending_message, void* const packet_data, struct SwiftNetVector* const pending_messages, struct SwiftNetMemoryAllocator* const pending_message_memory_allocator, const enum ConnectionType connection_type, const bool loopback) { bool is_valid_response = false; vector_lock(&requests_sent); @@ -173,12 +172,6 @@ static inline void handle_request_response(const uint16_t packet_id, const struc } if (current_request_sent->packet_id == packet_id) { - if (!loopback) { - if (current_request_sent->address.s_addr != sender.s_addr) { - continue; - } - } - atomic_store_explicit(¤t_request_sent->packet_data, packet_data, memory_order_release); vector_remove(&requests_sent, i); @@ -254,8 +247,6 @@ static inline struct SwiftNetPendingMessage* const create_new_pending_message(st new_pending_message->packet_id = packet_id; - - vector_lock(pending_messages); vector_push((struct SwiftNetVector*)pending_messages, new_pending_message); @@ -397,7 +388,7 @@ static inline void swiftnet_process_packets( switch(packet_info.packet_type) { case REQUEST_INFORMATION: { - const struct ip send_server_info_ip_header = construct_ip_header( PACKET_HEADER_SIZE, rand()); + const struct ip send_server_info_ip_header = construct_ip_header(ip_header.ip_src, PACKET_HEADER_SIZE, rand()); const struct SwiftNetPacketInfo packet_info_new = construct_packet_info( sizeof(struct SwiftNetServerInformation), @@ -430,11 +421,11 @@ static inline void swiftnet_process_packets( { const uint32_t mtu = MIN(packet_info.maximum_transmission_unit, maximum_transmission_unit); - struct SwiftNetPendingMessage* const pending_message = get_pending_message(pending_messages, connection_type, ip_header.ip_src, ip_header.ip_id); + struct SwiftNetPendingMessage* const pending_message = get_pending_message(pending_messages, connection_type, ip_header.ip_id); if(pending_message == NULL) { const bool packet_already_completed = check_packet_already_completed(ip_header.ip_id, packets_completed_history); if(likely(packet_already_completed == true)) { - const struct ip send_packet_ip_header = construct_ip_header(PACKET_HEADER_SIZE, ip_header.ip_id); + const struct ip send_packet_ip_header = construct_ip_header(ip_header.ip_src, PACKET_HEADER_SIZE, ip_header.ip_id); struct SwiftNetPacketInfo send_packet_info = construct_packet_info( 0x00, @@ -463,7 +454,7 @@ static inline void swiftnet_process_packets( goto next_packet; } - struct ip send_lost_packets_ip_header = construct_ip_header(0, ip_header.ip_id); + struct ip send_lost_packets_ip_header = construct_ip_header(ip_header.ip_src, 0, ip_header.ip_id); struct SwiftNetPacketInfo packet_info_new = construct_packet_info( 0, @@ -622,7 +613,7 @@ static inline void swiftnet_process_packets( #ifdef SWIFT_NET_REQUESTS if (packet_info.packet_type == RESPONSE) { - handle_request_response(ip_header.ip_id, ((struct SwiftNetClientConnection*)connection)->server_addr, NULL, new_packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); + handle_request_response(ip_header.ip_id, NULL, new_packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); } else { pass_callback_execution(new_packet_data, packet_callback_queue, NULL, ip_header.ip_id); } @@ -708,7 +699,7 @@ static inline void swiftnet_process_packets( #ifdef SWIFT_NET_REQUESTS if (packet_info.packet_type == RESPONSE) { - handle_request_response(ip_header.ip_id, ((struct SwiftNetClientConnection*)connection)->server_addr, pending_message, packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); + handle_request_response(ip_header.ip_id, pending_message, packet_data, pending_messages, pending_messages_memory_allocator, connection_type, loopback); } else { pass_callback_execution(packet_data, packet_callback_queue, pending_message, ip_header.ip_id); } diff --git a/src/send_packet.c b/src/send_packet.c index 1f00190..10b9ca7 100644 --- a/src/send_packet.c +++ b/src/send_packet.c @@ -375,7 +375,7 @@ void swiftnet_server_send_packet(struct SwiftNetServer* const server, struct Swi memcpy(ð_hdr, &server->eth_header, sizeof(eth_hdr)); memcpy(ð_hdr.ether_dhost, &target.mac_address, sizeof(eth_hdr.ether_dhost)); - swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, NULL, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, eth_hdr, server->loopback, server->addr_type, server->prepend_size + swiftnet_send_packet(server, target.maximum_transmission_unit, port_info, packet, packet_length, &target.sender_address, &server->packets_sending, &server->packets_sending_memory_allocator, server->pcap, eth_hdr, server->loopback, server->addr_type, server->prepend_size #ifdef SWIFT_NET_REQUESTS , NULL, false, 0 #endif diff --git a/src/swift_net.h b/src/swift_net.h index 73241e0..fe9aaa2 100644 --- a/src/swift_net.h +++ b/src/swift_net.h @@ -71,7 +71,7 @@ struct SwiftNetPortInfo { }; struct SwiftNetClientAddrData { - + struct in_addr sender_address; uint32_t maximum_transmission_unit; uint16_t port; uint8_t mac_address[6]; @@ -99,7 +99,6 @@ struct SwiftNetPendingMessage { 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; @@ -147,7 +146,7 @@ struct PacketQueueNode { struct PacketQueueNode* next; uint8_t* data; uint32_t data_read; - + struct in_addr sender_address; }; struct PacketQueue { From 5da73650d09c010c8fc0db0f4950b520843ad130 Mon Sep 17 00:00:00 2001 From: Morcules Date: Mon, 5 Jan 2026 13:46:35 +0100 Subject: [PATCH 3/4] Resolved issues From fa1862323b70e7569e78382390b6255e927f4ff5 Mon Sep 17 00:00:00 2001 From: Morcules Date: Mon, 5 Jan 2026 15:02:27 +0100 Subject: [PATCH 4/4] Forgot to init sender address --- src/handle_packets.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/handle_packets.c b/src/handle_packets.c index be9a1bf..9771c65 100644 --- a/src/handle_packets.c +++ b/src/handle_packets.c @@ -45,7 +45,7 @@ static inline void insert_queue_node(struct PacketQueueNode* const new_node, str return; } -static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const data, uint32_t sender_address) { +static inline struct PacketQueueNode* construct_node(const uint32_t data_read, void* const data, const uint32_t sender_address) { struct PacketQueueNode* const node = allocator_allocate(&packet_queue_node_memory_allocator); if (unlikely(node == NULL)) { return NULL; @@ -74,7 +74,7 @@ static inline void swiftnet_handle_packets(const uint16_t source_port, pthread_t return; } - uint32_t sender_address; + uint32_t sender_address = 0; if (addr_type == DLT_EN10MB) { struct ether_header* const eth = (struct ether_header *)packet_buffer;