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 // FlowSession
// //
SDLLogger.shared.log("[SDLContext] flow_session: started", level: .debug)
if let flowSession = packet.flowSession() { 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: \(flowSession)", level: .debug)
} }
SDLLogger.shared.log("[SDLContext] flow_session: end", level: .debug)
// arpmac // arpmac
if let dstMac = self.arpServer.query(ip: dstIp) { if let dstMac = self.arpServer.query(ip: dstIp) {

View File

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