fix ipPacket

This commit is contained in:
anlicheng 2026-03-10 21:51:23 +08:00
parent 58d8408157
commit 9747629017
2 changed files with 6 additions and 18 deletions

View File

@ -647,12 +647,10 @@ actor SDLContextActor {
// FlowSession
//
SDLLogger.shared.log("[SDLContext] flow_session: started", level: .debug)
if let flowSession = packet.flowSession() {
//self.flowSessionManager.updateSession(flowSession)
self.flowSessionManager.updateSession(flowSession)
SDLLogger.shared.log("[SDLContext] flow_session: \(flowSession)", level: .debug)
}
SDLLogger.shared.log("[SDLContext] flow_session: end", level: .debug)
// arpmac
if let dstMac = self.arpServer.query(ip: dstIp) {

View File

@ -43,7 +43,7 @@ struct IPHeader {
struct IPPacket {
let header: IPHeader
let data: Data
let transportPacket: TransportPacket?
let transportPacket: TransportPacket
enum TransportPacket {
case tcp(TCPPacket)
@ -80,14 +80,10 @@ struct IPPacket {
)
self.data = data
let offset = Int(headerLen)
self.transportPacket = Self.parseTransportPacket(proto: data[9], offset: offset, data: data)
SDLLogger.shared.log("[SDLContext] ipPacket proto \(data[9]), offset: \(offset), ip_data: \(data), data: \(self.transportPacket)", level: .debug)
self.transportPacket = Self.parseTransportPacket(proto: data[9], offset: Int(headerLen), data: data)
}
private static func parseTransportPacket(proto: UInt8, offset: Int, data: Data) -> TransportPacket? {
private static func parseTransportPacket(proto: UInt8, offset: Int, data: Data) -> TransportPacket {
guard let proto = TransportProtocol(rawValue: proto) else {
return .unsupported(proto)
}
@ -155,7 +151,6 @@ struct TCPHeader {
struct TCPPacket {
let header: TCPHeader
let payload: Data
init?(_ data: Data, offset: Int) {
guard data.count >= offset + 20 else {
@ -195,8 +190,8 @@ struct TCPPacket {
}
self.header = header
self.payload = data[offset + headerLen..<data.count]
}
}
// MARK: - UDP Packet
@ -206,7 +201,6 @@ struct UDPPacket {
let dstPort: UInt16
let length: UInt16
let checksum: UInt16
let payload: Data
init?(_ data: Data, offset: Int) {
guard data.count >= offset + 8 else {
@ -217,8 +211,6 @@ struct UDPPacket {
self.dstPort = UInt16(bytes: (data[offset + 2], data[offset + 3]))
self.length = UInt16(bytes: (data[offset + 4], data[offset + 5]))
self.checksum = UInt16(bytes: (data[offset + 6], data[offset + 7]))
self.payload = data[offset + 8..<data.count]
}
}
@ -228,7 +220,6 @@ struct ICMPPacket {
let type: UInt8
let code: UInt8
let checksum: UInt16
let payload: Data
init?(_ data: Data, offset: Int) {
guard data.count >= offset + 4 else {
@ -238,7 +229,6 @@ struct ICMPPacket {
self.type = data[offset]
self.code = data[offset + 1]
self.checksum = UInt16(bytes: (data[offset + 2], data[offset + 3]))
self.payload = data[offset + 4..<data.count]
}
}