diff --git a/Tun/Punchnet/Arp/ArpServer.swift b/Tun/Punchnet/Arp/ArpResolver.swift similarity index 98% rename from Tun/Punchnet/Arp/ArpServer.swift rename to Tun/Punchnet/Arp/ArpResolver.swift index f0221be..196698b 100644 --- a/Tun/Punchnet/Arp/ArpServer.swift +++ b/Tun/Punchnet/Arp/ArpResolver.swift @@ -1,5 +1,5 @@ // -// ArpServer.swift +// ArpResolver.swift // sdlan // 1. 通过ip地址查找mac地址 // 2. 要限制单位时间内,同一个ip的查询 @@ -8,7 +8,7 @@ import Foundation import Darwin -actor ArpServer { +actor ArpResolver { // 增加缓存时间逻辑 struct ArpEntry { var mac: Data diff --git a/Tun/Punchnet/Context/SDLContextActor.swift b/Tun/Punchnet/Context/SDLContextActor.swift index 6cf2788..86a762f 100644 --- a/Tun/Punchnet/Context/SDLContextActor.swift +++ b/Tun/Punchnet/Context/SDLContextActor.swift @@ -79,7 +79,7 @@ actor SDLContextActor { private var ipv6AssistClient: SDLIPV6AssistClient? private let sessionManager: SessionManager - nonisolated private let arpServer: ArpServer + nonisolated private let arpResolver: ArpResolver // 内部socket通讯 // 改为基于 App Group + Darwin Notification 的通知 @@ -100,7 +100,7 @@ actor SDLContextActor { let puncherActor = SDLPuncherActor() let proberActor = SDLNATProberActor(addressArray: config.stunProbeSocketAddressArray) let sessionManager = SessionManager() - let arpServer = ArpServer() + let arpResolver = ArpResolver() let flowTracer = SDLFlowTracer() let policyService = PolicyService(identityId: config.identityId) let superServiceProxy = SDLSuperServiceProxy() @@ -110,7 +110,7 @@ actor SDLContextActor { config: config, dataCipher: nil, sessionManager: sessionManager, - arpServer: arpServer, + arpResolver: arpResolver, puncherActor: puncherActor, policyService: policyService, superServiceProxy: superServiceProxy, @@ -123,7 +123,7 @@ actor SDLContextActor { dataCipher: nil, policyService: policyService, packetOutboundActor: packetOutboundActor, - arpServer: arpServer, + arpResolver: arpResolver, superServiceProxy: superServiceProxy, flowTracer: flowTracer ) @@ -136,7 +136,7 @@ actor SDLContextActor { self.proberActor = proberActor self.sessionManager = sessionManager - self.arpServer = arpServer + self.arpResolver = arpResolver self.flowTracer = flowTracer // 权限控制 @@ -152,7 +152,7 @@ actor SDLContextActor { // 启动arp的定时清理任务 await self.puncherActor.start() - await self.arpServer.start() + await self.arpResolver.start() let dnsService = SDLDNSService(serverHost: self.config.serverHost, publicDnsServers: self.publicDnsServers) { [weak self] event in await self?.handleDNSEvent(event) @@ -180,7 +180,7 @@ actor SDLContextActor { // 处理context的停止问题 public func stop() async { await self.puncherActor.stop() - await self.arpServer.stop() + await self.arpResolver.stop() await self.sessionManager.clear() await self.stunRequestWorker?.stop() @@ -298,7 +298,7 @@ extension SDLContextActor { await self.policyService.applyPolicyResponse(policyResponse) case .arpResponse(let arpResponse): SDLLogger.log("[SDLContext] get arp response: \(arpResponse)") - await self.arpServer.handleArpResponse(arpResponse: arpResponse) + await self.arpResolver.handleArpResponse(arpResponse: arpResponse) } } diff --git a/Tun/Punchnet/Inbound/PacketInboundActor.swift b/Tun/Punchnet/Inbound/PacketInboundActor.swift index eb7a215..702a5c1 100644 --- a/Tun/Punchnet/Inbound/PacketInboundActor.swift +++ b/Tun/Punchnet/Inbound/PacketInboundActor.swift @@ -12,7 +12,7 @@ actor PacketInboundActor { private let provider: NEPacketTunnelProvider private let policyService: PolicyService private let packetOutboundActor: PacketOutboundActor - private let arpServer: ArpServer + private let arpResolver: ArpResolver private let superServiceProxy: SDLSuperServiceProxy private let flowTracer: SDLFlowTracer @@ -25,7 +25,7 @@ actor PacketInboundActor { dataCipher: CCDataCipher?, policyService: PolicyService, packetOutboundActor: PacketOutboundActor, - arpServer: ArpServer, + arpResolver: ArpResolver, superServiceProxy: SDLSuperServiceProxy, flowTracer: SDLFlowTracer) { self.provider = provider @@ -34,7 +34,7 @@ actor PacketInboundActor { self.dataCipher = dataCipher self.policyService = policyService self.packetOutboundActor = packetOutboundActor - self.arpServer = arpServer + self.arpResolver = arpResolver self.superServiceProxy = superServiceProxy self.flowTracer = flowTracer } @@ -64,7 +64,7 @@ actor PacketInboundActor { await self.packetOutboundActor.routeLayerPacket(dstMac: dstMac, type: .arp, data: responseData) case .appendARP(let ip, let mac): SDLLogger.log("[PacketInboundActor] get arp response packet") - await self.arpServer.append(ip: ip, mac: mac) + await self.arpResolver.append(ip: ip, mac: mac) case .writeToTun(let packetData, let identityID): let packet = NEPacket(data: packetData, protocolFamily: 2) self.provider.packetFlow.writePacketObjects([packet]) diff --git a/Tun/Punchnet/Outbound/PacketOutboundActor.swift b/Tun/Punchnet/Outbound/PacketOutboundActor.swift index bab0920..7c8eb72 100644 --- a/Tun/Punchnet/Outbound/PacketOutboundActor.swift +++ b/Tun/Punchnet/Outbound/PacketOutboundActor.swift @@ -14,7 +14,7 @@ actor PacketOutboundActor { private let provider: NEPacketTunnelProvider private let sessionManager: SessionManager - private let arpServer: ArpServer + private let arpResolver: ArpResolver private let puncherActor: SDLPuncherActor private let policyService: PolicyService private let superServiceProxy: SDLSuperServiceProxy @@ -34,7 +34,7 @@ actor PacketOutboundActor { config: SDLConfiguration, dataCipher: CCDataCipher?, sessionManager: SessionManager, - arpServer: ArpServer, + arpResolver: ArpResolver, puncherActor: SDLPuncherActor, policyService: PolicyService, superServiceProxy: SDLSuperServiceProxy, @@ -47,7 +47,7 @@ actor PacketOutboundActor { self.stunSocketAddress = config.stunSocketAddress self.dataCipher = dataCipher self.sessionManager = sessionManager - self.arpServer = arpServer + self.arpResolver = arpResolver self.puncherActor = puncherActor self.policyService = policyService self.superServiceProxy = superServiceProxy @@ -195,12 +195,12 @@ actor PacketOutboundActor { SDLLogger.log("[PacketOutboundActor] use exit_node: \(SDLUtil.int32ToIp(ip))", for: .trace) } - if let dstMac = self.arpServer.snapshot().lookup(ip) { + if let dstMac = self.arpResolver.snapshot().lookup(ip) { SDLLogger.log("[PacketOutboundActor] dstIp: \(SDLUtil.int32ToIp(ip)), dst_mac is: \(SDLUtil.formatMacAddress(mac: dstMac))", for: .trace) await self.routeLayerPacket(dstMac: dstMac, type: type, data: data) } else { SDLLogger.log("[PacketOutboundActor] dstIp: \(SDLUtil.int32ToIp(ip)) arp query not found, broadcast", for: .trace) - if let arpRequest = try? await self.arpServer.makeArpRequest(targetIp: ip) { + if let arpRequest = try? await self.arpResolver.makeArpRequest(targetIp: ip) { await self.superServiceProxy.send(type: .arpRequest, data: arpRequest) } }