docs: update file inventory and module header contracts
Refresh both AGENTS guides and clarify module purpose, usage, ownership, threading, return values and wire formats in headers. Remove the unused timeout_heap freed_count field and unimplemented getter.
This commit is contained in:
1 parent
c19eff67f6
commit
a97e8bcc1f
118 files changed
+628
-406
No files matched your search
@@ -1,3 +1,7 @@
|
||||
/* conn_mgr_priv — внутренние состояния, wire-команды и общие операции трёх частей conn_mgr.
|
||||
* core управляет handles и попытками, indirect — согласованием посредников, monitor — оценкой/обновлением путей.
|
||||
* Все структуры принадлежат менеджеру topo-группы и используются в его uasync-потоке.
|
||||
* Сервисы подключаются через conn_mgr.h; поля ENTRY/CANDIDATE не являются внешним API. */
|
||||
#ifndef CONN_MGR_PRIV_H
|
||||
#define CONN_MGR_PRIV_H
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/* route6_lib — локальная IPv6-таблица подсетей на BSD radix с longest-prefix lookup.
|
||||
* Очередь индексирует записи по node_id для удаления всех подсетей узла; TOPO_GROUP_NODE заимствован.
|
||||
* create/insert/lookup/delete/destroy — в одном uasync-потоке; маршруты удалять до освобождения узла.
|
||||
* addr — 16 сетевых байтов. Результат lookup принадлежит таблице и живёт до удаления записи/destroy. */
|
||||
#ifndef ROUTE6_LIB_H
|
||||
#define ROUTE6_LIB_H
|
||||
|
||||
@@ -13,36 +17,7 @@ extern "C" {
|
||||
#include "../lib/u_async.h"
|
||||
|
||||
|
||||
/*
|
||||
Диапазон Назначение
|
||||
::/128 Неопределенный адрес (unspecified). Используется до назначения адреса интерфейсу.
|
||||
::1/128 Адрес обратной петли (loopback), аналог 127.0.0.1 в IPv4.
|
||||
2000::/3 Глобально маршрутизируемые (Global Unicast) адреса. Основное адресное пространство Интернета.
|
||||
fc00::/7 Уникальные локальные адреса (ULA), аналог частных IPv4 (10.0.0.0/8, 192.168.0.0/16). На практике обычно используется fd00::/8.
|
||||
fe80::/10 Локальные канальные адреса (Link-Local). Автоматически назначаются интерфейсам и работают только в пределах одного сегмента сети. Не маршрутизируются.
|
||||
ff00::/8 Multicast-адреса. Используются вместо широковещания (broadcast), которого в IPv6 нет.
|
||||
100::/64 Адреса для протокола Discard-Only. Предназначены для тестирования и отладки.
|
||||
64:ff9b::/96 Префикс для трансляции IPv4↔IPv6 (NAT64).
|
||||
64:ff9b:1::/48 Расширенный префикс NAT64.
|
||||
2001:db8::/32 Зарезервирован для документации и примеров. Не используется в Интернете.
|
||||
2002::/16 6to4-адреса (устаревший механизм перехода с IPv4 на IPv6).
|
||||
2001::/32 Teredo (устаревшая технология туннелирования IPv6 через IPv4).
|
||||
::ffff:0:0/96 IPv4-mapped IPv6 addresses. Используются ОС для представления IPv4-адресов в IPv6 API.
|
||||
|
||||
Адреса узлов сети формируются по следующему принципу:
|
||||
FCxx:xxxx:xxxx:xxxx : yyyy:yyyy:yyyy:yyyy - local network: x = network id, y - node id.
|
||||
-- network id --- ---- node id ------
|
||||
|
||||
FDxx/8 - опциональные ipv6 подсети узлов /64 (если нужно)
|
||||
|
||||
В разных node_groups общие:
|
||||
- nodelists с их настройками (глобальная таблица)
|
||||
- одинаковые линки между nodes (т.к. только один линк между парой узлов)
|
||||
|
||||
- При маршрутизации используем только узлы
|
||||
|
||||
|
||||
*/
|
||||
|
||||
// таблица маршрутизации IPv6 на radix tree + ll_queue (поиск по node_id для удаления)
|
||||
|
||||
|
||||
@@ -1,3 +1,7 @@
|
||||
/* route_connectivity — прямые UDP/TCP-пробы адресов узла для оценки достижимости и RTT.
|
||||
* probe_node запускает серии из подходящих локальных сокетов и обновляет nq->connectivity;
|
||||
* результат используется топологией, сама проба не создаёт READY-сессию группы.
|
||||
* Состояние привязано к TOPO_GROUP_NODE: отменить пробы до удаления узла/группы. Все операции — uasync. */
|
||||
#ifndef ROUTE_CONNECTIVITY_H
|
||||
#define ROUTE_CONNECTIVITY_H
|
||||
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
/* route_lib — локальная IPv4-таблица подсетей UTUN, отсортированный массив без пересечения маршрутов.
|
||||
* create → insert/add_local_subnet → lookup → delete/destroy; все операции в одном uasync-потоке.
|
||||
* network/dest_ip/parse_subnet — host order; только is_local_subnet принимает network order.
|
||||
* TOPO_GROUP_NODE заимствован: удалить его маршруты до освобождения узла.
|
||||
* lookup возвращает элемент массива, действительный до следующего изменения таблицы. */
|
||||
#ifndef ROUTE_LIB_H
|
||||
#define ROUTE_LIB_H
|
||||
|
||||
@@ -32,7 +37,7 @@ typedef enum {
|
||||
* Структура представляет собой отдельную запись в таблице маршрутизации с детальной информацией о маршруте.
|
||||
*/
|
||||
struct ROUTE_ENTRY {
|
||||
uint32_t network; // Сетевой адрес (big-endian)
|
||||
uint32_t network; // Сетевой адрес в host order
|
||||
uint8_t prefix_length; // Длина префикса подсети
|
||||
struct TOPO_GROUP_NODE* v_node_info; // узел владелец этих маршрутов. null если - локальный маршрут.
|
||||
};
|
||||
@@ -78,7 +83,7 @@ void route_table_destroy(struct ROUTE_TABLE *table);
|
||||
* @brief Вставляет в таблицу маршрутизации все подсети для указанного узла
|
||||
* @param node узел, все маршруты которого нужно добавить
|
||||
*
|
||||
* @return true если вставка/обновление успешно
|
||||
* @return true если подсети добавлены; false при отсутствии подсетей, пересечении или ошибке выделения памяти
|
||||
*/
|
||||
bool route_insert(struct ROUTE_TABLE *table, struct TOPO_GROUP_NODE *node);
|
||||
|
||||
@@ -94,7 +99,7 @@ void route_delete(struct ROUTE_TABLE *table, struct TOPO_GROUP_NODE *node);
|
||||
* @brief Выполняет поиск маршрута для заданного IP-адреса
|
||||
*
|
||||
* @param table Указатель на таблицу маршрутизации
|
||||
* @param dest_ip Целевой IP-адрес
|
||||
* @param dest_ip Целевой IPv4-адрес в host order
|
||||
* @return найденный маршрут или NULL
|
||||
*/
|
||||
struct ROUTE_ENTRY* route_lookup(struct ROUTE_TABLE *table, uint32_t dest_ip);
|
||||
@@ -110,7 +115,7 @@ void route_table_print(const struct ROUTE_TABLE *table);
|
||||
* @brief Парсит строку подсети в сетевой адрес и длину префикса
|
||||
*
|
||||
* @param subnet_str Строка подсети (например, "192.168.1.0/24")
|
||||
* @param network Указатель для сохранения сетевого адреса
|
||||
* @param network Указатель для сохранения адреса в host order
|
||||
* @param prefix_length Указатель для сохранения длины префикса
|
||||
* @return 0 при успехе, -1 при ошибке
|
||||
*/
|
||||
|
||||
@@ -1,4 +1,7 @@
|
||||
// routing.h - Centralized routing module for utun
|
||||
/* routing — обмен IPv4-пакетами UTUN между локальным TUN и сервисом DATA ETCP-router.
|
||||
* create создаёт таблицу, bind регистрирует DATA после инициализации router; set_tun подключает очередь TUN.
|
||||
* route_pkt принимает [cmd:1][IPv4...] и забирает entry/dgram; все вызовы выполняются в uasync-потоке.
|
||||
* Групповые пути ведёт topo_group, пересылку через промежуточные узлы — etcp_router. */
|
||||
#ifndef ROUTING_H
|
||||
#define ROUTING_H
|
||||
|
||||
@@ -36,22 +39,20 @@ int routing_bind(struct UTUN_INSTANCE* instance);
|
||||
void routing_destroy(struct UTUN_INSTANCE* instance);
|
||||
|
||||
/**
|
||||
* @brief Register ETCP connection with routing
|
||||
* Called from pn_init() to register connection's normalizer output queue
|
||||
* @brief Исторический вызов из pn_init: сейчас только диагностический no-op, очереди не регистрирует
|
||||
* @param etcp ETCP connection
|
||||
*/
|
||||
void routing_add_conn(struct ETCP_CONN* etcp);
|
||||
|
||||
/**
|
||||
* @brief Unregister ETCP connection from routing
|
||||
* Called from pn_deinit() to unregister connection's normalizer output queue
|
||||
* @brief Исторический вызов из pn_deinit: сейчас только диагностический no-op
|
||||
* @param etcp ETCP connection
|
||||
*/
|
||||
void routing_del_conn(struct ETCP_CONN* etcp);
|
||||
|
||||
/**
|
||||
* @brief Set TUN interface for routing
|
||||
* Called from utun_instance_init() after tun_init()
|
||||
* Вызывается при подключении TUN к UTUN-сервису
|
||||
* @param instance UTUN instance with configured tun
|
||||
*/
|
||||
void routing_set_tun(struct UTUN_INSTANCE* instance);
|
||||
|
||||
@@ -1,3 +1,8 @@
|
||||
/* topo_node_sqlite — хранение подписанных снимков узлов, адресов, каналов и блоков мемберов в общей SQLite.
|
||||
* Модель/проверка подписей/registry — topo_node и member_sync; этот модуль реализует SQL-операции в uasync-потоке.
|
||||
* snapshot_put проверяет подпись и сохраняет только более свежий timestamp; node_load предпочитает snapshot.
|
||||
* db/groups заимствованы. Возвращённый TOPO_NODE без registry ref: передать registry либо уничтожить через topo_node_destroy.
|
||||
* Массивы out_ids/out_ch_ids/out_peers принадлежат вызывающему и освобождаются u_free. */
|
||||
#ifndef TOPO_NODE_SQLITE_H
|
||||
#define TOPO_NODE_SQLITE_H
|
||||
|
||||
@@ -101,8 +106,8 @@ void topo_node_sqlite_update_rtt(sqlite3* db, uint64_t node_id, uint16_t rtt);
|
||||
* @param groups нужен для выделения адресов из memory_pool
|
||||
* @return TOPO_NODE* или NULL если узел не найден/нет адресов
|
||||
*
|
||||
* Загружает pubkey, name из nodes, IPv4/UDP-адреса из node_addresses.
|
||||
* Вызывающий должен передать владение через topo_node_registry_acquire().
|
||||
* Сначала загружает и проверяет подписанный snapshot; при его отсутствии собирает сведения nodes/node_addresses.
|
||||
* Вызывающий передаёт владение через topo_node_registry_acquire() либо вызывает topo_node_destroy().
|
||||
*/
|
||||
struct TOPO_NODE* topo_node_sqlite_node_load(sqlite3* db, struct TOPO_GROUPS* groups, uint64_t node_id);
|
||||
|
||||
|
||||
Reference in new issue
Block a user