diff --git a/src/routing_layer/address_profile.h b/src/routing_layer/address_profile.h index 00539c85..db9a74ee 100644 --- a/src/routing_layer/address_profile.h +++ b/src/routing_layer/address_profile.h @@ -24,7 +24,7 @@ enum address_profile_source { ADDRESS_SOURCE_NONE, ADDRESS_SOURCE_ETCP, ADDRESS_ struct address_profile { uint8_t mapping; uint8_t inbound; - uint8_t source; /* ETCP — этот endpoint; STUN — резервная оценка его IP/netif. */ + uint8_t source; /* Источник фактов; native-детектор публикует только измерение этого endpoint (ETCP). */ }; static inline const char *address_mapping_name(uint8_t value) { diff --git a/src/routing_layer/nat_detection.h b/src/routing_layer/nat_detection.h index c4d68872..0368c918 100644 --- a/src/routing_layer/nat_detection.h +++ b/src/routing_layer/nat_detection.h @@ -43,7 +43,7 @@ void nat_detection_topology_changed(struct NAT_DETECTION *detector); void nat_detection_cancel_group(struct NAT_DETECTION *detector, uint64_t group_id); /* Короткий приоритет начального измерения перед фоновыми UDP-пробами достижимости; задержка в timebase. */ uint64_t nat_detection_probe_delay(struct NAT_DETECTION *detector); -/* Холодные измерения сериализуются по node_id; делегированные пробы более раннего owner пропускаются. */ +/* Фоновый UDP-ответ к незнакомому IP может откладываться; односторонние NAT-пробы принимаются независимо. */ int nat_detection_ping_allowed(struct NAT_DETECTION *detector, struct ETCP_SOCKET *socket, const uint8_t peer_key[32], const struct sockaddr_storage *source, uint8_t flags, const uint8_t *tag, size_t length); diff --git a/tests/stream_netns/README.md b/tests/stream_netns/README.md index b1244e24..0c2d3d67 100644 --- a/tests/stream_netns/README.md +++ b/tests/stream_netns/README.md @@ -32,8 +32,9 @@ python3 tests/stream_netns/run.py --stun-only --output /tmp/stun-interface-netns По очереди проверяются n03 (cone), n14 (restricted) и n05 (dependent mapping). Два рабочих порта одного IP/netif используют одну STUN-пробу. Сначала у владельца нет ETCP-пиров, затем появляется один наблюдатель, затем независимый помощник. -Проверяются source=STUN -> source=ETCP, приоритет рабочего измерения и отсутствие -тестового внешнего порта в рекламе рабочего сокета. JOIN/стриминг в этом режиме не запускаются. +Проверяются source=NONE до измерения рабочего порта и source=ETCP после него; +STUN остаётся отдельной диагностикой. Тестовый внешний порт не попадает в рекламу +рабочего сокета. JOIN/стриминг в этом режиме не запускаются. Случайные тестовые порты получают тот же класс NAT; правила для рабочего 32000 сохраняются. Для испытания случайных портов активен один клиент каждого выбранного NAT-шлюза. Расширенная классификация restricted/dependent включает реальные таймауты CHANGE,