conn: сопоставление сокетов по ролям (direct/nat/local) + hairpin; NTP-детект оффлайна

- sock_match: единая классификация сокетов (DIRECT/NAT/LOCAL) и адресов (PUB/PRIV/UNREACH)
- eim приравнен к direct; на приватный адрес — только с приватного интерфейса;
  оба EIM за одним NAT (одинаковый публичный IP) — только через LAN
- topo_node: LOCAL-сокеты рекламируются (INTERFACE), private скрыт,
  NAT-адрес не рекламируется для strict и при оффлайне
- ntp: флаг reachable по циклам + пере-анонс nodeinfo при смене доступности
- cm_direct_add_links / ncd_create_links / conn_match_candidate_sockets на sock_match
- test_sock_match: unit-тесты классификации и сопоставления
This commit is contained in:
evgeny committed 2026-09-13 16:48:00 +03:00
1 parent ff53c735dd
commit ddfffad1ed
13 files changed
+349 -107

No files matched your search

+1
View File
@@ -88,6 +88,7 @@ static int instance_init_common(struct UTUN_INSTANCE* instance, struct UASYNC* u
instance->running = 0;
instance->ua = ua;
instance->config = config;
instance->ntp.reachable = 1; /* оптимистично: до первого NTP-цикла считаем, что интернет есть */
// Set name from config
if (config->global.name[0] != '\0') {