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