Record routing audit progress and NODEINFO parsing defect
This commit is contained in:
1 parent
bf03348c64
commit
5f51149622
2 files changed
+26
-2
No files matched your search
@@ -4,6 +4,28 @@
|
||||
|
||||
## Текущие задачи
|
||||
|
||||
[ ] **Routing: согласовать обход секции подсетей в topo_node_deserialize с wire-размером**.
|
||||
24.10.2026, продолжение аудита: при flags=0, local_v4_subnets=1, hop_count=1 размер равен header+8,
|
||||
но ветка без TOPO_FLAG_SEND_SUBNETS сдвигает dp ещё на 5 байт. Копирование hop-list читает за len.
|
||||
Воспроизведение на собранной библиотеке: заданный hop 11 11 11 11 11 11 11 11 превращается в
|
||||
11 11 11 aa aa aa aa aa; пять aa находятся после переданной длины. deserialize возвращает 0.
|
||||
Причина: topo_node_dyn_size не включает подсети без флага, а deserialize всё равно пропускает их.
|
||||
Нужно согласовать serializer/размер/parser: при снятом флаге секции на wire нет; счётчики должны
|
||||
быть нулевыми либо явно игнорироваться без сдвига. При установленном флаге обход секции не должен
|
||||
зависеть от наличия out_subnets. Добавить регрессии границ буфера и обоих режимов out_subnets.
|
||||
Дальнейший аудит остановлен по AGENTS.md; parser не менялся.
|
||||
Воспроизведение: /tmp/routing-audit-deserialize-repro.c; лог: /tmp/routing-audit-deserialize-repro.log.
|
||||
|
||||
[+] **Routing: запретить пересекающиеся IPv4-подсети при вставке route_lib**.
|
||||
24.10.2026: по решению пользователя сохранён запрет пересечений. Весь входной набор проверяется
|
||||
до изменения таблицы, включая внутренние конфликты; /0..32, нормализация host-битов, отказ атомарный.
|
||||
Поиск упрощён для непересекающихся диапазонов; добавлены проверки /0, /31, /32 и границ.
|
||||
Новые проверки на старой библиотеке: 5/8 PASS; после исправления: 8/8 PASS, IPv6: 11/11 PASS.
|
||||
Убрано объявление несуществующей route_add_local_subnet; исправлены wire/API route_ping и
|
||||
описание выбора сокетов, TCP/UDP-проб, отмены и владения в заголовках routing helpers.
|
||||
Полный check.sh: 184/184 PASS, proxy 9/9, burst 1/1, load 8/8 (134217728 байт), 196с.
|
||||
Лог: /tmp/routing-audit-full-check.log; результаты аудита: /tmp/routing-doc-audit-report.txt.
|
||||
|
||||
[ ] **ETCP: полезная утилизация нескольких каналов и доставка при зависании части линков** — общая задача открыта.
|
||||
24.10.2026: тесты отдельно проверяют обработку RTO (опоздание<=20мс), ожидание готового повтора (<=100мс)
|
||||
и доставку сверх заданной задержки канала (<=100мс). TX учитывается после принятия send.
|
||||
|
||||
@@ -33,7 +33,7 @@ int routing_create(struct UTUN_INSTANCE* instance);
|
||||
int routing_bind(struct UTUN_INSTANCE* instance);
|
||||
|
||||
/**
|
||||
* @brief Destroy routing module for instance
|
||||
* @brief Снять DATA binding и освободить IPv4-таблицу; callback TUN снимается при остановке самого TUN
|
||||
* @param instance UTUN instance
|
||||
*/
|
||||
void routing_destroy(struct UTUN_INSTANCE* instance);
|
||||
@@ -58,7 +58,9 @@ void routing_del_conn(struct ETCP_CONN* etcp);
|
||||
void routing_set_tun(struct UTUN_INSTANCE* instance);
|
||||
|
||||
/**
|
||||
* @brief Route a single packet (exposed for NAT module interception)
|
||||
* @brief Маршрутизировать [cmd:1][IPv4] в TUN либо через TOPO_GROUP_UTUN; требует готовых instance->rt/tun
|
||||
* @param entry Передаваемые entry и dgram: модуль забирает владение при любом исходе
|
||||
* @param src_node_id Исходный узел для диагностики, для выхода из TUN — instance->node_id
|
||||
*/
|
||||
void route_pkt(struct UTUN_INSTANCE* instance, struct ll_entry* entry, uint64_t src_node_id);
|
||||
|
||||
|
||||
Reference in new issue
Block a user