From ae2b654a67668da393cbe5179c1ed5aea4f65fed Mon Sep 17 00:00:00 2001 From: jeka Date: Wed, 15 Apr 2026 19:10:18 +0300 Subject: [PATCH] 1 --- src/etcp_connections.h | 2 ++ src/route_bgp.c | 2 +- src/route_ping.c | 9 +++------ 3 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/etcp_connections.h b/src/etcp_connections.h index 2a65e8e7..c701aebd 100644 --- a/src/etcp_connections.h +++ b/src/etcp_connections.h @@ -237,6 +237,8 @@ int etcp_send_ping(struct UTUN_INSTANCE* instance, const uint8_t* peer_pubkey_bi const struct sockaddr_storage* addr, int timeout_ms, etcp_ping_callback_t cb, void* user_arg, const uint8_t* user_data, size_t user_data_len); + +// шлёт пинг на addr используя pubkey. в пакет помещает user_data[user_len]. при получении ответа или таймауте вызывает callback. int etcp_send_ping_to_socket(struct UTUN_INSTANCE* instance, struct ETCP_SOCKET* e_sock, const uint8_t* peer_pubkey_bin, const struct sockaddr_storage* addr, int timeout_ms, etcp_ping_callback_t cb, void* user_arg, diff --git a/src/route_bgp.c b/src/route_bgp.c index 1061f278..f246aca0 100644 --- a/src/route_bgp.c +++ b/src/route_bgp.c @@ -940,7 +940,7 @@ static void route_bgp_handle_nat_info(struct ROUTE_BGP* bgp, struct ETCP_CONN* f (unsigned)nat_port); } -static void route_bgp_handle_nat_check_req(struct ROUTE_BGP* bgp, struct ETCP_CONN* from_conn, const uint8_t* data, size_t len) { +static void route_bgp_handle_nat_check_req(struct ROUTE_BGP* bgp, struct ETCP_CONN* from_conn, const uint8_t* data, size_t len) {// поиск нужного линка и запуск nat_check if (!bgp || !from_conn || !data || len < sizeof(struct BGP_NAT_CHECK_REQ)) return; const struct BGP_NAT_CHECK_REQ* req = (const struct BGP_NAT_CHECK_REQ*)data; diff --git a/src/route_ping.c b/src/route_ping.c index daab61ff..95ebee82 100644 --- a/src/route_ping.c +++ b/src/route_ping.c @@ -304,10 +304,7 @@ int route_ping_send_req_addr(struct ROUTE_BGP* bgp, struct ETCP_CONN* to_conn, u req_pkt->count = count; req_pkt->interval_ms = interval_ms; req_pkt->timeout_ms = timeout_ms; - req_pkt->target_ipv4[0] = target_ip;// ip уже в network byte order - req_pkt->target_ipv4[1] = target_ip>>8; - req_pkt->target_ipv4[2] = target_ip>>16; - req_pkt->target_ipv4[3] = target_ip>>24; + memcpy(req_pkt->target_ipv4, &target_ip, 4); req_pkt->target_port = htons(target_port); if (pubkey) { memcpy(req_pkt->pubkey, pubkey, SC_PUBKEY_SIZE); @@ -370,7 +367,7 @@ void route_ping_destroy_pending(struct ROUTE_BGP* bgp) { } } -void route_ping_handle_req(struct ROUTE_BGP* bgp, struct ETCP_CONN* from_conn, const uint8_t* data, size_t len) { +void route_ping_handle_req(struct ROUTE_BGP* bgp, struct ETCP_CONN* from_conn, const uint8_t* data, size_t len) {// получен запрос сделать пинг. const size_t base_len = offsetof(struct BGP_PING_REQUEST, target_ipv4); const size_t addr_len = offsetof(struct BGP_PING_REQUEST, pubkey); if (!bgp || !from_conn || !data || (len != base_len && len != addr_len && len != sizeof(struct BGP_PING_REQUEST))) { @@ -401,7 +398,7 @@ void route_ping_handle_req(struct ROUTE_BGP* bgp, struct ETCP_CONN* from_conn, c sock_count_v4 = 1; DEBUG_INFO(DEBUG_CATEGORY_BGP, "using custom target %d.%d.%d.%d:%u for node %016llx", req_pkt->target_ipv4[0], req_pkt->target_ipv4[1], req_pkt->target_ipv4[2], req_pkt->target_ipv4[3], - req_pkt->target_port, (unsigned long long)req_pkt->node_id); + htons(req_pkt->target_port), (unsigned long long)req_pkt->node_id); // Check if embedded pubkey is non-zero (only when full packet length) if (len == sizeof(struct BGP_PING_REQUEST)) { int pubkey_zero = 1;