From fdd4ec02f638ce60801907919ee60ce2a191d8c3 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Wed, 15 Apr 2026 16:10:12 +0300 Subject: [PATCH] 1 --- src/etcp_connections.c | 12 ++++++------ src/etcp_connections.h | 2 +- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/etcp_connections.c b/src/etcp_connections.c index b4c35097..f4b9dcd3 100644 --- a/src/etcp_connections.c +++ b/src/etcp_connections.c @@ -1362,7 +1362,7 @@ void etcp_connections_read_callback_socket(socket_t sock, void* arg) { uint16_t port = ntohs(sin->sin_port); ack_repl_hdr->peer_port[0] = port >> 8; ack_repl_hdr->peer_port[1] = port & 0xFF; - link->nat_ip = ntohl(sin->sin_addr.s_addr); + link->nat_ip = sin->sin_addr.s_addr; link->nat_port = port; } else { // For IPv6, set to 0 (not supported for NAT traversal) @@ -1453,8 +1453,8 @@ process_decrypted: // Parse NAT IP:port from response (new format includes 4+2 bytes) if (pkt_len >= 19) { - uint32_t new_nat_ip = (pkt->data[offset] << 24) | (pkt->data[offset+1] << 16) | - (pkt->data[offset+2] << 8) | pkt->data[offset+3]; + uint32_t new_nat_ip = (pkt->data[offset+3] << 24) | (pkt->data[offset+2] << 16) | + (pkt->data[offset+1] << 8) | pkt->data[offset+0]; offset += 4; uint16_t new_nat_port = (pkt->data[offset] << 8) | pkt->data[offset+1]; offset += 2; @@ -1471,15 +1471,15 @@ process_decrypted: } else if (link->nat_ip != new_nat_ip || link->nat_port != new_nat_port) { // NAT address changed struct in_addr old_addr, new_addr; - old_addr.s_addr = htonl(link->nat_ip); - new_addr.s_addr = htonl(new_nat_ip); + old_addr.s_addr = link->nat_ip; + new_addr.s_addr = new_nat_ip; link->nat_ip = new_nat_ip; link->nat_port = new_nat_port; link->nat_changes_count++; DEBUG_INFO(DEBUG_CATEGORY_CONNECTION, "[%s] NAT address changed: %s:%u -> %s:%u (change #%u)", - link->etcp->log_name, ip_to_str(&old_addr, AF_INET).str, link->nat_port, ip_to_str(&new_addr, AF_INET).str, new_nat_port, + link->etcp->log_name, ip_to_str(&old_addr.s_addr, AF_INET).str, link->nat_port, ip_to_str(&new_addr.s_addr, AF_INET).str, new_nat_port, link->nat_changes_count); } } else { diff --git a/src/etcp_connections.h b/src/etcp_connections.h index ef2b7eeb..2a65e8e7 100644 --- a/src/etcp_connections.h +++ b/src/etcp_connections.h @@ -188,7 +188,7 @@ struct ETCP_LINK { // NAT address tracking (from INIT_RESPONSE) uint32_t nat_ip; // NAT IPv4 address (network byte order), 0 = not set - uint16_t nat_port; // NAT port (network byte order) + uint16_t nat_port; // NAT port (host byte order) uint32_t nat_changes_count; // Counter of NAT address changes uint32_t nat_hits_count; // Counter of NAT address matches (new init response with same IP:port) uint8_t nat_check_status; // NAT_CHECK_*