fix(NetworkConfigManager): update IP conflict checking logic to differentiate between gateway and interface IPs, ensuring accurate conflict notifications during gateway creation
Publish Fast Tabler Docker image / build-and-push-fast (push) Has been cancelled

This commit is contained in:
2026-01-25 21:23:03 +07:00
parent 2ee43d0538
commit e0163fa968
+9 -5
View File
@@ -660,7 +660,9 @@ function NetworkConfigManager() {
} }
const newGateways = []; const newGateways = [];
const usedIps = new Set(config.gateways.map(g => g.ip)); // Для проверки конфликтов используем только IP из существующих gateways
// Рекурсивные gateways могут использовать те же IP, что и интерфейсы - это нормально
const usedGatewayIps = new Set(config.gateways.map(g => g.ip).filter(Boolean));
// Создаем маппинг между ID из шаблона и реальными ID после создания // Создаем маппинг между ID из шаблона и реальными ID после создания
const templateIdToRealId = new Map(); const templateIdToRealId = new Map();
@@ -691,9 +693,10 @@ function NetworkConfigManager() {
ip = ip.trim(); ip = ip.trim();
// Если IP уже используется, пропускаем // Проверяем конфликты только с другими gateways
if (usedIps.has(ip)) { // Для рекурсивных gateways разрешено использовать IP, которые уже используются в интерфейсах
notify.warning(`IP ${ip} уже используется, пропущен`); if (usedGatewayIps.has(ip)) {
notify.warning(`IP ${ip} уже используется в другом gateway, пропущен`);
return; return;
} }
@@ -719,7 +722,8 @@ function NetworkConfigManager() {
}; };
newGateways.push(newGateway); newGateways.push(newGateway);
usedIps.add(ip); // Добавляем IP в список использованных для проверки конфликтов внутри этой же операции создания
usedGatewayIps.add(ip);
}); });
if (newGateways.length === 0) { if (newGateways.length === 0) {