From d917b42942d552d6c282f20f9ccca6daee815ba1 Mon Sep 17 00:00:00 2001 From: Evgeny Date: Mon, 16 Feb 2026 17:33:33 +0300 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=BB=D0=B5=D0=BD=20=D0=BF=D0=BE=D1=80=D1=8F=D0=B4=D0=BE=D0=BA?= =?UTF-8?q?=20=D0=B1=D0=B0=D0=B9=D1=82=20=D0=BF=D1=80=D0=B8=20=D0=B4=D0=BE?= =?UTF-8?q?=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8=D0=B8=20=D0=BC=D0=B0?= =?UTF-8?q?=D1=80=D1=88=D1=80=D1=83=D1=82=D0=BE=D0=B2=20=D0=B8=D0=B7=20?= =?UTF-8?q?=D0=BA=D0=BE=D0=BD=D1=84=D0=B8=D0=B3=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Использован ntohl() для преобразования сетевого адреса из network byte order в host byte order перед добавлением в таблицу маршрутизации. Теперь маршруты отображаются корректно (10.23.1.0 вместо 0.1.23.10). --- src/utun_instance.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/utun_instance.c b/src/utun_instance.c index dcc3fa9..09d304d 100644 --- a/src/utun_instance.c +++ b/src/utun_instance.c @@ -68,7 +68,7 @@ static int instance_init_common(struct UTUN_INSTANCE* instance, struct UASYNC* u struct CFG_ROUTE_ENTRY* subnet = config->my_subnets; while (subnet) { struct ROUTE_ENTRY entry = {0}; - entry.network = subnet->ip.addr.v4.s_addr; + entry.network = ntohl(subnet->ip.addr.v4.s_addr); // Convert network byte order to host entry.prefix_length = subnet->netmask; entry.next_hop = NULL; // Local route entry.type = ROUTE_TYPE_LOCAL; @@ -80,12 +80,16 @@ static int instance_init_common(struct UTUN_INSTANCE* instance, struct UASYNC* u if (route_table_insert(instance->rt, &entry)) { char ip_str[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, &entry.network, ip_str, sizeof(ip_str)); + struct in_addr addr; + addr.s_addr = htonl(entry.network); // Convert back to network byte order for printing + inet_ntop(AF_INET, &addr, ip_str, sizeof(ip_str)); DEBUG_INFO(DEBUG_CATEGORY_ROUTING, "Added local route: %s/%d", ip_str, entry.prefix_length); } else { char ip_str[INET_ADDRSTRLEN]; - inet_ntop(AF_INET, &entry.network, ip_str, sizeof(ip_str)); + struct in_addr addr; + addr.s_addr = htonl(entry.network); // Convert back to network byte order for printing + inet_ntop(AF_INET, &addr, ip_str, sizeof(ip_str)); DEBUG_WARN(DEBUG_CATEGORY_ROUTING, "Failed to add local route: %s/%d (skipping)", ip_str, entry.prefix_length); }