fix: исправлен порядок байт при добавлении маршрутов из конфига
Использован ntohl() для преобразования сетевого адреса из network byte order в host byte order перед добавлением в таблицу маршрутизации. Теперь маршруты отображаются корректно (10.23.1.0 вместо 0.1.23.10).
This commit is contained in:
1 parent
4cd22b1513
commit
d917b42942
1 file changed
+7
-3
+7
-3
@@ -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);
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user