fix ipPacket
This commit is contained in:
parent
58d8408157
commit
9747629017
@ -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)
|
||||
|
||||
// 查找arp缓存中是否有目标mac地址
|
||||
if let dstMac = self.arpServer.query(ip: dstIp) {
|
||||
|
||||
@ -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 {
|
||||
@ -193,10 +188,10 @@ struct TCPPacket {
|
||||
guard data.count >= offset + headerLen else {
|
||||
return nil
|
||||
}
|
||||
|
||||
|
||||
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]
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user