Fix Windows build: add sa_family_t typedef, replace arpa/inet.h, fix ll_queue warnings

- Add sa_family_t typedef for Windows in platform_compat.h
- Add forward declaration of struct ll_queue in ll_queue.h to fix warnings
- Replace arpa/inet.h includes with platform_compat.h in:
  tun_linux.c, etcp_connections.c, route_lib.c, route_bgp.c,
  utun_instance.c, routing.c, utun.c, packet_dump.h, config_parser.c
- All 22 tests pass on Linux
This commit is contained in:
Evgeny committed 2026-02-15 03:06:02 +03:00
1 parent 9b1d43996e
commit c83fdeeaad
57 files changed
+9070 -9

No files matched your search

+1 -1
View File
@@ -7,7 +7,7 @@
#include <strings.h>
#include "../lib/debug_config.h"
#include <ctype.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include <errno.h>
#include <netdb.h>
#include <ifaddrs.h>
+1 -1
View File
@@ -1,6 +1,6 @@
#include "etcp_connections.h"
#include "../lib/socket_compat.h"
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include <net/if.h>
#include <unistd.h>
#include <string.h>
+1 -1
View File
@@ -1,7 +1,7 @@
#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include <netinet/in.h>
// Packet dump function for debugging
+1 -1
View File
@@ -10,7 +10,7 @@
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include "route_bgp.h"
#include "route_lib.h"
+41
View File
@@ -0,0 +1,41 @@
подсистема роутинга
utun - это сеть узлов. у каждого узла есть собственные локальные подсети.
глобальная задача: создать у каждого узла полную таблицу маршрутизации.
Узлы преимущественно создают связь напрямую друг с другом. Но если это не получается отправляют трафик транзитом через доступные узлы.
Иногда бывает что через транзитные узлы метрики лучше чем напрямую. Используем приоритетно узлы с лучшей метриков, при нехватке bandwidth используем разные каналы (агрегируем).
Динамически обновлем метрики каналов чтобы при отказе быстро переключаться на другие и не фризить обмен из-за отказов.
и узлы обмениваются таблицой маршрутов между собой так чтобы у каждого была актуальная таблица подсетей всех узлов.
маршрутами меняются клиенты, подключения которых которые взяты из конфига. и сервера принявшие подключения если клиент инициировал обмен маршрутами.
инициируется подключение, клиент отправляет свою таблицу. когда сервер принимает таблицу - сервер помечает что по этому маршруту надо обмениваться маршрутами, далее;
- добавляет узел в список рассылки обновлений маршрутов
- отправляет свою таблицу
- добавляет в свою таблицу отсутствующие маршруты
- если что-то добавил:
- рассылает измененные маршруты по списку рассылки
- список рассылки - это linked-list очередей (также на базе ll_queue - каждый элемент = подписчик). один маршрут = одна отправленная кодограмма
при подключении узла или изменении таблицы: узел шлёт свою таблицу
формат кодограммы: [0x01 - routing module] [subcmd] [data]
subcmd:
1 [route] - отправка маршрута
2, без данных - больше данных нет
если сервер получил кодограмму маршрута - он помечает флаг в etcp что с узлом надо обмениваться маршрутами (etcp_conn->routing_exchange_active=2) и добавляет в очередь рассылки маршрутов
=========================================
механизм инкрементальной синхронизации (реализация - потом, пока мысли)
1. вычисляем хеш каждой записи в роутинг таблице. используем ip+mask+node_uid
2. потом из этих хешей создаем хеш таблицу (старшие n бит номер ячейки). далее вычисляются хеши каждой ячейки.
на первом этапе n=16, на втором - n=16*16 на третьем n=16*16*16.
отправляем хеши удаленному узлу в формате: [n, 1 байт] ([индекс хеша 2 байта - используется n старших бит][хеш - 8 байт])
удаленный узел считает свои хеши и сравнивает. где не совпало смотрит сколько записей.
если записей не много - передает эти записи.
если записей много - добавляет 4 бита к хеш таблице и строит субтаблицу для
+1 -1
View File
@@ -9,7 +9,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include <time.h>
#define INITIAL_ROUTE_CAPACITY 100
+1 -1
View File
@@ -10,7 +10,7 @@
#include "../lib/debug_config.h"
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#define IPv4_VERSION 4
#define IPv6_VERSION 6
+1 -1
View File
@@ -14,7 +14,7 @@
#include <sys/stat.h>
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
#include <linux/if.h>
#include <linux/if_tun.h>
#include <errno.h>
+1 -1
View File
@@ -19,7 +19,7 @@
#include <signal.h>
#include <getopt.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"
/*
Архитектура:
+1 -1
View File
@@ -15,7 +15,7 @@
#include <string.h>
#include <errno.h>
#include <unistd.h>
#include <arpa/inet.h>
#include "../lib/platform_compat.h"