From 4284233e6f6637ca7c921d95b776590abf0c2c0b Mon Sep 17 00:00:00 2001 From: evgeny Date: Sat, 17 Oct 2026 17:59:22 +0200 Subject: [PATCH] nat: keep unchanged public addresses distinct from unknown NAT --- src/routing_layer/topo_node_sqlite.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/routing_layer/topo_node_sqlite.c b/src/routing_layer/topo_node_sqlite.c index 35e17d4f..75c56858 100644 --- a/src/routing_layer/topo_node_sqlite.c +++ b/src/routing_layer/topo_node_sqlite.c @@ -68,7 +68,8 @@ static int addr_type_classify(int kind, int config_type, int global, const struc if (profile->mapping == ADDRESS_MAP_EIM) return ADDR_TYPE_NAT_EIM; if (profile->mapping == ADDRESS_MAP_DEPENDENT) return ADDR_TYPE_NAT_STRICT; /* Публичный адрес интерфейса известен без определения входящих и не становится NAT из-за UNKNOWN. */ - if (global && kind == TOPO_ADDR_INTERFACE && profile->mapping == ADDRESS_MAP_UNKNOWN) return ADDR_TYPE_NETIF; + if (global && kind == TOPO_ADDR_INTERFACE && (profile->mapping == ADDRESS_MAP_UNKNOWN || + (profile->mapping == ADDRESS_MAP_UNCHANGED && profile->inbound == ADDRESS_IN_UNKNOWN))) return ADDR_TYPE_NETIF; if (!global) return config_type == CFG_SERVER_TYPE_NAT ? ADDR_TYPE_NAT : ADDR_TYPE_NETIF; if (profile->mapping == ADDRESS_MAP_UNCHANGED && profile->inbound == ADDRESS_IN_OPEN) return ADDR_TYPE_DIRECT; if (profile->mapping == ADDRESS_MAP_UNCHANGED && profile->inbound == ADDRESS_IN_CONTACT) return ADDR_TYPE_CONTACT;