Files
RouterOS/RouterOSAssistant/Core/Models/LanDhcpConfig.swift
T
KayandClaude Sonnet 5 5c8b5fd9d2 M8: Mehrere LAN-Interfaces + Netzwerk-Isolation (Firewall-Regeln pro Netzwerk)
lanConfig wird zu lanConfigs: [LanDhcpConfig] (analog zum VLAN-Listen-
Muster) — mehrere physische Interfaces mit je eigenem DHCP-Server.
Neues isolated-Feld auf LanDhcpConfig/VlanEntry: FirewallConfig erzeugt
daraus paarweise Forward-Drop-Regeln zwischen jedem isolierten Netzwerk
und allen anderen konfigurierten Netzwerken (Pair-Dedup bei gegenseitiger
Isolation). Behebt nebenbei, dass VlanStepView bisher Isolation im
Hilfetext behauptete, ohne dass eine Regel das durchsetzte.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YYoWFMLHACvzzRC8u4iKF9
2026-09-13 19:57:15 +02:00

32 lines
1.3 KiB
Swift

import Foundation
struct LanDhcpConfig: Identifiable, Equatable {
var id = UUID()
var interfaceName: String = "bridge"
var networkAddress: String = "192.168.88.0/24"
var routerAddress: String = "192.168.88.1/24"
var poolRangeStart: String = "192.168.88.10"
var poolRangeEnd: String = "192.168.88.254"
var leaseTimeHours: Int = 24
var dnsServers: String = "192.168.88.1"
/// Blocks forward traffic to/from every other configured LAN/VLAN network — see
/// `FirewallConfig.NetworkSegment`. Internet access (WAN NAT) is unaffected.
var isolated: Bool = false
/// RouterOS commands for this LAN/DHCP setup. Standard, long-stable RouterOS CLI syntax —
/// not yet verified against a live device; the Review-step shows every command before
/// it runs so this can be caught before anything is applied.
func buildCommands() -> [RouterOSCommand] {
DhcpServerCommandBuilder.buildCommands(
interfaceName: interfaceName,
routerAddress: routerAddress,
networkAddress: networkAddress,
poolRangeStart: poolRangeStart,
poolRangeEnd: poolRangeEnd,
leaseTimeHours: leaseTimeHours,
dnsServers: dnsServers,
context: "auf \(interfaceName)"
)
}
}