Browse Source

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

Использован ntohl() для преобразования сетевого адреса из network byte order
в host byte order перед добавлением в таблицу маршрутизации.
Теперь маршруты отображаются корректно (10.23.1.0 вместо 0.1.23.10).
nodeinfo-routing-update
Evgeny 2 months ago
parent
commit
d917b42942
  1. 10
      src/utun_instance.c

10
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);
}

Loading…
Cancel
Save