- Added missing structure members to ETCP_CONN (ack_packets_count, last_rx_ack_id, rtt_history, rtt_history_idx, total_packets_sent)
- Added missing bandwidth member to ETCP_LINK structure
- Fixed include path for ll_queue.h header
- Added math library linking (-lm) to build system
- Added etcp_loadbalancer.c to build sources
- Fixed forward declarations and function calls in ETCP modules
- Updated test dependencies to include loadbalancer object files
All simple compilation errors resolved, project builds successfully and tests pass (except TUN permission test which is expected in container).
Добавлены комплексные DEBUG сообщения в критические точки проекта:
- **ETCP протокол** (etcp.c): ошибки инициализации криптоконтекста, выделения памяти для очередей, коротких пакетов, сбоев шифрования
- **ETCP соединения** (etcp_connections.c): ошибки установки публичных ключей, расшифровки пакетов, шифрования при отправке
- **TUN интерфейс** (tun_if.c): ошибки создания устройства, настройки IP/MTU, чтения/записи
- **Конфигурация** (config_parser.c): ошибки выделения памяти для структур конфигурации, парсинга IP-адресов
- **Маршрутизация** (routing.c): ошибки выделения памяти для таблиц, отсутствие маршрутов
Все DEBUG сообщения используют существующую систему категорий (CRYPTO, MEMORY, CONFIG, ROUTING, TUN, CONNECTION, ETCP) и предоставляют детальную информацию для диагностики проблем.
Проблема: test_etcp_two_instances.c создает два экземпляра (сервер и клиент),
и оба пытаются привязаться к одному и тому же адресу 127.0.0.1:9001.
Реальная ошибка: bind: Address already in use
Причина: В ETCP архитектуре каждый экземпляр создает серверные сокеты на основе
конфигурации. В тесте оба процесса на одной машине, поэтому возникает конфликт портов.
Что сделано:
1. Добавлен вызов bind() в etcp_socket_add (был пропущен критический вызов)
2. Добавлена отладка для отслеживания жизненного цикла сокетов
3. Создан debug_socket_test.sh для мониторинга портов в реальном времени
4. Удалены лишние вызовы init_connections для устранения дублирования
Результат: Теперь видно, что сервер действительно слушает на 127.0.0.1:9001,
но клиент не может привязаться к тому же порту. Необходимо использовать
разные порты для сервера и клиента в тестовой среде.