fix: исправлен порядок байт при добавлении маршрутов из конфига

Использован ntohl() для преобразования сетевого адреса из network byte order
в host byte order перед добавлением в таблицу маршрутизации.
Теперь маршруты отображаются корректно (10.23.1.0 вместо 0.1.23.10).
This commit is contained in:
Evgeny committed 2026-02-16 17:33:33 +03:00
1 parent 4cd22b1513
commit d917b42942
1 file changed
+7 -3
+7 -3
View File
@@ -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);
}