fix
This commit is contained in:
parent
055dad7010
commit
68a54f7dd6
@ -610,12 +610,12 @@ actor SDLContextActor {
|
||||
if true || self.checkPolicy(ipPacket: ipPacket, ruleMap: ruleMap) {
|
||||
// 用来做debug
|
||||
if ipPacket.header.source == 168428037 {
|
||||
SDLLogger.log("data: \(Array(ipPacket.data)), len: \(ipPacket.data.count)", for: .debug)
|
||||
SDLLogger.log("[SDLContext] data: \(Array(ipPacket.data)), len: \(ipPacket.data.count)", for: .trace)
|
||||
}
|
||||
|
||||
let packet = NEPacket(data: ipPacket.data, protocolFamily: 2)
|
||||
self.provider.packetFlow.writePacketObjects([packet])
|
||||
SDLLogger.log("[SDLContext] identity: \(data.identityID), allow, data count: \(ipPacket.data.count)", for: .debug)
|
||||
SDLLogger.log("[SDLContext] identity: \(data.identityID), allow, data count: \(ipPacket.data.count)", for: .trace)
|
||||
}
|
||||
else {
|
||||
SDLLogger.log("[SDLContext] not found identity: \(data.identityID) ruleMap", for: .debug)
|
||||
@ -684,7 +684,9 @@ actor SDLContextActor {
|
||||
|
||||
let (packets, numbers) = await self.provider.packetFlow.readPackets()
|
||||
for (data, number) in zip(packets, numbers) where number == 2 {
|
||||
SDLLogger.log("[SDLContext] read Tun packet step 1, data count: \(data.count)", for: .trace)
|
||||
if let ipPacket = IPPacket(data) {
|
||||
SDLLogger.log("[SDLContext] read Tun packet step 2, data count: \(ipPacket.data.count)", for: .trace)
|
||||
await self.dealTunPacket(packet: ipPacket)
|
||||
}
|
||||
}
|
||||
@ -738,13 +740,14 @@ actor SDLContextActor {
|
||||
// 判断目标地址是否和当前的网络地址是否在同一个网段
|
||||
// 只有在同一个网段的ip数据才直接发送
|
||||
if SDLUtil.inSameNetwork(ip: dstIp, compareIp: networkAddr.ip, maskLen: networkAddr.maskLen) {
|
||||
SDLLogger.log("[SDLContext] read Tun packet step 3, data: \(Array(packet.data))", for: .trace)
|
||||
// 查找arp缓存中是否有目标mac地址
|
||||
if let dstMac = await self.arpServer.query(ip: dstIp) {
|
||||
SDLLogger.log("[SDLContext] dstIp: \(dstIp.asIpAddress()), dst_mac is: \(SDLUtil.formatMacAddress(mac: dstMac))")
|
||||
SDLLogger.log("[SDLContext] dstIp: \(dstIp.asIpAddress()), dst_mac is: \(SDLUtil.formatMacAddress(mac: dstMac))", for: .trace)
|
||||
await self.routeLayerPacket(dstMac: dstMac, type: .ipv4, data: packet.data)
|
||||
}
|
||||
else {
|
||||
SDLLogger.log("[SDLContext] dstIp: \(dstIp.asIpAddress()) arp query not found, broadcast")
|
||||
SDLLogger.log("[SDLContext] dstIp: \(dstIp.asIpAddress()) arp query not found, broadcast", for: .trace)
|
||||
// // 构造arp广播
|
||||
// let arpReqeust = ARPPacket.arpRequest(senderIP: networkAddr.ip, senderMAC: networkAddr.mac, targetIP: dstIp)
|
||||
// await self.routeLayerPacket(dstMac: ARPPacket.broadcastMac , type: .arp, data: arpReqeust.marshal())
|
||||
|
||||
@ -15,7 +15,7 @@ public class SDLLogger: @unchecked Sendable {
|
||||
case trace = "com.jihe.punchnet.trace"
|
||||
}
|
||||
|
||||
static var loggers: [String: SDLLogger] {
|
||||
private static var loggers: [String: SDLLogger] {
|
||||
var loggers: [String: SDLLogger] = [:]
|
||||
for sub in Subsystem.allCases {
|
||||
loggers[sub.rawValue] = .init(subsystem: sub)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user