Commit Graph
1572 Commits
Author SHA1 Message Date
jeka 388fa6a1e1 add normalizer reset from etcp connection reset 2026-03-05 19:59:11 +03:00
Evgeny 35950c60f7 тесты проходят добавлен mtu в link 2026-03-05 17:16:34 +03:00
jeka 376c570156 1 2026-03-05 11:50:27 +03:00
jeka 32090cfa1d len fix 2026-03-05 02:31:57 +03:00
jeka 46c95b3fd8 +bping +gui rtt 2026-03-04 23:14:32 +03:00
jeka aef89a0258 ts 2026-03-04 20:43:43 +03:00
jeka de053a00c0 cleanup tests (winsock) 2026-03-04 17:27:33 +03:00
Evgeny 1aec884c2d linux routing + debug output 2026-03-04 14:59:38 +03:00
jeka 0b4e5960cf 1 2026-03-04 11:38:42 +03:00
jeka b20bff32dd config 2026-03-04 01:53:17 +03:00
jeka 9d202ff408 reinit 2026-03-03 23:45:34 +03:00
jeka dca4e87f63 +keepalive/reset interval sync 2026-03-03 19:15:34 +03:00
jeka 0ffcfb2f52 reset fix 2026-03-03 18:41:39 +03:00
jeka 61d575f09b logs 2026-03-03 15:15:34 +03:00
jeka 2f06979f17 r 2026-03-02 22:05:21 +03:00
jeka c271084d35 tun/win шлёт в routing. 2026-03-02 20:22:34 +03:00
jeka 136a3642c0 1 2026-03-01 17:57:24 +03:00
jeka a37d343410 1 2026-03-01 17:55:33 +03:00
jeka 783f229711 obf 2026-03-01 17:19:47 +03:00
jeka c420b8f18e пердайт icmp в tun 2026-03-01 02:48:03 +03:00
jeka 06f58f5e2e Fix: Add ifindex field for Linux
- Move ifindex field outside WIN32 conditional block
- Initialize ifindex in Linux tun_platform_init()
2026-02-28 16:31:04 +03:00
jeka fc32d756e6 Fix: Suppress netsh output 2026-02-28 16:23:23 +03:00
jeka 9269bc9c61 Fix: Delete system routes on shutdown
- Add tun_route_del_all() to delete routes from config
- Use netsh for route deletion on Windows (like add)
- Store route_subnets in UTUN_INSTANCE for cleanup
- Delete routes in utun_instance_destroy() before tun_close()
2026-02-28 16:20:16 +03:00
jeka 3945ff5665 Fix: Use netsh for adding routes on Windows (wintun)
- Get wintun interface index directly after adapter creation
- Use netsh instead of CreateIpForwardEntry (doesn't work with wintun)
- Fallback to CreateIpForwardEntry if netsh fails
2026-02-28 16:08:06 +03:00
jeka 9d0223d3fa refactor 2026-02-28 15:15:34 +03:00
jeka b27ea97055 1 2026-02-22 23:28:11 +03:00
jeka 17e1a193c5 1 2026-02-22 00:49:47 +03:00
jeka cab860fce8 route 2026-02-21 23:44:22 +03:00
jeka 90a8e66328 routing - local routes (id,ip) 2026-02-21 21:57:17 +03:00
Evgeny 8502451ec7 compile fixes 2026-02-21 21:30:39 +03:00
jeka 1947810cb0 gr restore v2 2026-02-21 21:24:09 +03:00
jeka b8ea33160d восстановление морды (частичное) 2026-02-21 21:04:11 +03:00
Evgeny 6ffec2f1e7 Fix: INVALID_SOCKET usage in POSIX code and remove missing test
- control_server.c: Use -1 instead of INVALID_SOCKET on lines 241 and 511
- Makefile.am: Remove test_control_server reference (source file missing)
2026-02-21 18:09:47 +03:00
jeka cd169b106a gui + small fixes 2026-02-21 17:55:20 +03:00
Evgeny 3749c5037c fix build for linux 2026-02-20 22:39:58 +03:00
jeka d10bddd1f7 Build: incremental build support, Windows uasync fixes, TUN cross-platform refactoring
- build.sh: added --full flag for full rebuild (autoreconf + configure + make)
- build_direct.sh: incremental compilation (skips unchanged files)
- build_full.bat: new Windows batch for full rebuild
- configure.ac: fixed Windows detection using AC_COMPILE_IFELSE
- lib/u_async.c/h: Windows wakeup socket support, uasync_post for thread-safe callbacks
- src/tun_if.c/h: cross-platform TUN refactoring, Windows read thread support
- src/tun_windows.c: Windows TUN implementation improvements
- src/control_server.c: removed premature return statement
- src/routing.c: include ordering fix
- src/utun.c: windows compat includes
- Deleted obsolete net_emulator/Makefile and tinycrypt/Makefile
2026-02-20 21:20:50 +03:00
jeka 734851329f Control: Add monitoring server with ETCP protocol support
- Implement control_server.c/h for monitoring and management
- Add Windows-compatible uasync_poll using select() instead of WSAPoll
- Fix Wintun adapter creation to open existing adapters first
- Add debug category for control server operations
- Update build files to include control server in compilation
- Add test_control_server to test suite
2026-02-19 01:24:42 +03:00
Evgeny 00e09c767e ETCP: реализация восстановления связи при падении всех линков
- Добавлена функция etcp_loadbalancer_get_link_status() для проверки состояния связи
- Клиент: при падении всех линков запускается отправка ETCP_INIT_REQUEST_NOINIT (0x04)
- Сервер: при приеме NOINIT отвечает ETCP_INIT_RESPONSE_NOINIT (0x05) без сброса если линк initialized
- При приеме любого пакета отменяется таймер восстановления
- ETCP_INIT_RESPONSE (0x03) вызывает сброс всего ETCP_CONN
- Переименованы константы: ETCP_CHANNEL_INIT -> ETCP_INIT_REQUEST_NOINIT,
  ETCP_CHANNEL_RESPONSE -> ETCP_INIT_RESPONSE_NOINIT

Все 23 теста проходят
2026-02-17 01:41:05 +03:00
jeka 8a3cdaf759 1 2026-02-16 23:42:28 +03:00
jeka 3ab19094d0 Fix: segfault in ETCP tests and add wintun.dll to gitignore
- Fix segfault in ETCP tests by initializing uECC RNG in sc_init_local_keys()
- Fix segfault during cleanup by adding reference counting to socket_platform_cleanup()
- Add wintun.dll to .gitignore
- Update AGENTS.md and platform compatibility headers

All 19 tests now pass successfully.
2026-02-16 23:36:50 +03:00
Evgeny 7781c4676b Fix: Segfault in test_routing_mesh during cleanup
In pn_deinit(), cancel waiter on etcp->input_queue and clear callback
on etcp->output_queue before freeing PKTNORM structure. This prevents
use-after-free when drain_and_free_fragment_queue() triggers
check_waiters() during etcp_connection_close().
2026-02-16 22:04:03 +03:00
Evgeny a5818d9cc4 Backup before fixing test_routing_mesh segfault 2026-02-16 22:02:57 +03:00
Evgeny 0490c846c2 ETCP: loadbalancer исключает down-линки, link_status=1 при инициализации
- etcp_loadbalancer_select_link() теперь пропускает линки со статусом != 1
- При установке initialized=1 сразу выставляется link_status=1 (up)
- Добавлено логирование при изменении статуса линка на UP
2026-02-16 19:57:20 +03:00
Evgeny bf33ae4e47 ETCP: добавлена проверка keepalive таймаута и статус линка
- Добавлен параметр keepalive_timeout в глобальный конфиг (default: 2000 ms)
- Добавлено поле keepalive_timeout в struct ETCP_LINK
- В keepalive_timer_cb() добавлена проверка таймаута по last_recv_local_time
- Выставление link_status: 1 (up) при получении пакетов, 0 (down) при таймауте
- Инициализация last_recv_local_time при создании линка
- Вывод keepalive_timeout в print_config()
2026-02-16 19:44:27 +03:00
Evgeny 15a9521559 ETCP: реализация keepalive пакетов для каждого линка
- Добавлены поля keepalive_timer и pkt_sent_since_keepalive в struct ETCP_LINK
- Реализована отправка пустых keepalive пакетов (только timestamp) по таймеру
- Keepalive пропускается если был отправлен другой пакет с момента последнего тика
- Таймер запускается после инициализации линка (keepalive_interval из конфига)
- Исправлен тест test_bgp_route_exchange: убран лишний htonl() при проверке маршрутов
2026-02-16 19:17:47 +03:00
Evgeny 232bd49309 config: отключены логи uasync по умолчанию
uasync генерирует слишком много служебных логов.
Теперь по умолчанию включены все категории кроме uasync.

Для включения uasync логов используйте:
  debug_categories=all
или
  debug_categories=uasync,connection,etcp
2026-02-16 18:22:57 +03:00
Evgeny 424e2c6b14 fix: исправлена блокировка при добавлении маршрутов через netlink
Проблема: recv() на netlink сокете блокировал бесконечно,
если ядро не отвечало на сообщение.

Решение:
- Добавлен флаг SOCK_NONBLOCK при создании сокета
- Добавлен poll() с таймаутом 1 секунда перед recv()
- Добавлен заголовок poll.h

Теперь utun не зависает при старте и продолжает инициализацию сокетов.
2026-02-16 18:12:18 +03:00
Evgeny d917b42942 fix: исправлен порядок байт при добавлении маршрутов из конфига
Использован ntohl() для преобразования сетевого адреса из network byte order
в host byte order перед добавлением в таблицу маршрутизации.
Теперь маршруты отображаются корректно (10.23.1.0 вместо 0.1.23.10).
2026-02-16 17:33:33 +03:00
Evgeny 4cd22b1513 feat: переименован allowed_subnet в route_subnet, добавлено управление системными маршрутами
- Переименовано поле allowed_subnets -> route_subnets в конфигурации
- Обновлен парсинг конфига: allowed_subnet -> route_subnet
- Создан новый модуль tun_route для управления системными маршрутами
- Linux: реализация через netlink sockets с fallback на ip route
- Windows: реализация через IP Helper API
- BSD: реализация через routing sockets с fallback на route
- При запуске: автоматическое добавление маршрутов route_subnet на TUN интерфейс
- При завершении: автоматическое удаление всех маршрутов через tun_route_flush
- Обновлены Makefile.am для сборки новых файлов
2026-02-16 17:07:52 +03:00
jeka 4a3c5724b7 Windows: Исправлен запуск utun - TUN, логирование, права администратора
- Добавлен platform_compat.c с кроссплатформенной генерацией случайных чисел
- Исправлена генерация ключей и node_id на Windows (вместо /dev/urandom)
- PID файл отключен по умолчанию на Windows
- Добавлено двойное логирование: файл utun.log + консоль
- Добавлен манифест Windows для запроса прав администратора
- Исправлено завершение программы при ошибках отправки (Network unreachable)
- TUN инициализация включена по умолчанию
- Исправлен main loop (instance->running = 1)
2026-02-16 14:31:16 +03:00