diff --git a/Tun/Punchnet/SDLMessage.pb.swift b/Tun/Punchnet/SDLMessage.pb.swift index cf6bda9..9815000 100644 --- a/Tun/Punchnet/SDLMessage.pb.swift +++ b/Tun/Punchnet/SDLMessage.pb.swift @@ -51,12 +51,32 @@ struct SDLV6Info: @unchecked Sendable { init() {} } -struct SDLEmpty: Sendable { +struct SDLWelcome: Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 + var version: UInt32 = 0 + + /// 服务器允许的最大双向流 + var maxBidiStreams: UInt32 = 0 + + /// 服务器允许的最大包 + var maxPacketSize: UInt32 = 0 + + /// 心跳包的间隔 + var heartbeatSec: UInt32 = 0 + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// quic 通讯消息 +struct SDLEmpty: Sendable { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. var unknownFields = SwiftProtobuf.UnknownStorage() @@ -69,9 +89,6 @@ struct SDLRegisterSuper: @unchecked Sendable { // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - /// 所有需要建立请求和响应对应关系的,都是通过4字节的pktId来对应 - var pktID: UInt32 = 0 - var clientID: String = String() /// 网络地址信息已经有https请求分配了 @@ -97,17 +114,15 @@ struct SDLRegisterSuper: @unchecked Sendable { init() {} } +/// 客户端的升级逻辑,在https的接口里面去完成 +/// 部分逻辑会脱离quic去通讯,增加session_token校验 struct SDLRegisterSuperAck: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 - var aesKey: Data = Data() - /// 验证通过后,返回session_token; 后续通讯的合法行需哟啊通过session_token来保证 - /// 在SDLQueryInfo,SDLStunRequest, SDLData, SDLArpRequest等需要服务器端介入的地方都增加了session_token的验证(端和端之间的SDLData不需要校验) var sessionToken: Data = Data() var unknownFields = SwiftProtobuf.UnknownStorage() @@ -115,14 +130,11 @@ struct SDLRegisterSuperAck: @unchecked Sendable { init() {} } -/// 注册失败时候的消息体 struct SDLRegisterSuperNak: Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 - var errorCode: UInt32 = 0 var errorMessage: String = String() @@ -132,22 +144,13 @@ struct SDLRegisterSuperNak: Sendable { init() {} } -/// 网络地址查询 struct SDLQueryInfo: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 - - var networkID: UInt32 = 0 - - var srcMac: Data = Data() - var dstMac: Data = Data() - var sessionToken: Data = Data() - var unknownFields = SwiftProtobuf.UnknownStorage() init() {} @@ -158,10 +161,6 @@ struct SDLPeerInfo: @unchecked Sendable { // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 - - var networkID: UInt32 = 0 - var dstMac: Data = Data() var v4Info: SDLV4Info { @@ -190,16 +189,67 @@ struct SDLPeerInfo: @unchecked Sendable { fileprivate var _v6Info: SDLV6Info? = nil } -struct SDLEmptyPeerInfo: @unchecked Sendable { +/// ARP查询相关 +/// 真实的arp请求是通过广播的形式获取到的,但是针对于macos这种tun的实现;是能够分析出arp请求包的; +/// 对于当前网络来说,服务端是知道mac对应的ip地址的,因此没有必要广播;直接通过服务器端返回 +struct SDLArpRequest: Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var pktID: UInt32 = 0 + var targetIp: UInt32 = 0 - var networkID: UInt32 = 0 + var unknownFields = SwiftProtobuf.UnknownStorage() - var dstMac: Data = Data() + init() {} +} + +struct SDLArpResponse: @unchecked Sendable { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var targetIp: UInt32 = 0 + + var targetMac: Data = Data() + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// 权限请求查询相关 +struct SDLPolicyRequest: Sendable { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var srcIdentityID: UInt32 = 0 + + var dstIdentityID: UInt32 = 0 + + var version: UInt32 = 0 + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + +/// 基于quic通讯,rules部分已经没有了长度限制 +struct SDLPolicyResponse: @unchecked Sendable { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var srcIdentityID: UInt32 = 0 + + var dstIdentityID: UInt32 = 0 + + /// 版本号,客户端需要比较版本号确定是否覆盖; 请求端自己去管理版本号,服务端只是原样回写 + var version: UInt32 = 0 + + /// 4+1+2 的稀疏序列化规则 + var rules: Data = Data() var unknownFields = SwiftProtobuf.UnknownStorage() @@ -211,8 +261,6 @@ struct SDLNatChangedEvent: @unchecked Sendable { // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var networkID: UInt32 = 0 - var mac: Data = Data() var ip: UInt32 = 0 @@ -222,43 +270,11 @@ struct SDLNatChangedEvent: @unchecked Sendable { init() {} } -/// 被清理掉的Endpoints -/// 协议改成udp后,服务端只能通过定时器来集中清理掉线的端(通过心跳机制SDLStunRequest) -struct SDLDropMacsEvent: @unchecked Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var networkID: UInt32 = 0 - - var macs: [Data] = [] - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - -/// 通知端上必须重新校验 -/// 服务器端认为端已经掉线了,但是这个时候还在向服务端发送消息;服务端要求端上重新校验(SDLRegisterSuper) -struct SDLRefreshAuthEvent: Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var networkID: UInt32 = 0 - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - struct SDLSendRegisterEvent: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var networkID: UInt32 = 0 - var dstMac: Data = Data() var natIp: UInt32 = 0 @@ -288,8 +304,6 @@ struct SDLNetworkShutdownEvent: Sendable { // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. - var networkID: UInt32 = 0 - var message: String = String() var unknownFields = SwiftProtobuf.UnknownStorage() @@ -297,12 +311,14 @@ struct SDLNetworkShutdownEvent: Sendable { init() {} } -/// UDP通讯消息 +/// client和stun之间的心跳包,客户端需要和super的udp之间的存活逻辑 struct SDLStunRequest: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. + var cookie: UInt32 = 0 + var clientID: String = String() var networkID: UInt32 = 0 @@ -322,8 +338,6 @@ struct SDLStunRequest: @unchecked Sendable { /// Clears the value of `v6Info`. Subsequent reads from it will return its default value. mutating func clearV6Info() {self._v6Info = nil} - var sessionToken: Data = Data() - var unknownFields = SwiftProtobuf.UnknownStorage() init() {} @@ -331,6 +345,18 @@ struct SDLStunRequest: @unchecked Sendable { fileprivate var _v6Info: SDLV6Info? = nil } +struct SDLStunReply: Sendable { + // SwiftProtobuf.Message conformance is added in an extension below. See the + // `Message` and `Message+*Additions` files in the SwiftProtobuf library for + // methods supported on all messages. + + var cookie: UInt32 = 0 + + var unknownFields = SwiftProtobuf.UnknownStorage() + + init() {} +} + struct SDLData: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -359,38 +385,6 @@ struct SDLData: @unchecked Sendable { init() {} } -struct SDLRegister: @unchecked Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var networkID: UInt32 = 0 - - var srcMac: Data = Data() - - var dstMac: Data = Data() - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - -struct SDLRegisterAck: @unchecked Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var networkID: UInt32 = 0 - - var srcMac: Data = Data() - - var dstMac: Data = Data() - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - struct SDLStunProbe: Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for @@ -427,87 +421,32 @@ struct SDLStunProbeReply: Sendable { init() {} } -/// ARP查询相关 -/// 真实的arp请求是通过广播的形式获取到的,但是针对于macos这种tun的实现;是能够分析出arp请求包的;对于当前网络来说,服务端是知道mac对应的ip地址的,因此没有必要广播;直接通过服务器端返回 -struct SDLArpRequest: @unchecked Sendable { +struct SDLRegister: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. var networkID: UInt32 = 0 - var targetIp: UInt32 = 0 + var srcMac: Data = Data() - var sessionToken: Data = Data() + var dstMac: Data = Data() var unknownFields = SwiftProtobuf.UnknownStorage() init() {} } -struct SDLArpResponse: @unchecked Sendable { +struct SDLRegisterAck: @unchecked Sendable { // SwiftProtobuf.Message conformance is added in an extension below. See the // `Message` and `Message+*Additions` files in the SwiftProtobuf library for // methods supported on all messages. var networkID: UInt32 = 0 - var targetIp: UInt32 = 0 + var srcMac: Data = Data() - var targetMac: Data = Data() - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - -/// 权限请求查询相关 -struct SDLPolicyRequest: @unchecked Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var clientID: String = String() - - var networkID: UInt32 = 0 - - var mac: Data = Data() - - var srcIdentityID: UInt32 = 0 - - var dstIdentityID: UInt32 = 0 - - var version: UInt32 = 0 - - var sessionToken: Data = Data() - - var unknownFields = SwiftProtobuf.UnknownStorage() - - init() {} -} - -struct SDLPolicyResponse: @unchecked Sendable { - // SwiftProtobuf.Message conformance is added in an extension below. See the - // `Message` and `Message+*Additions` files in the SwiftProtobuf library for - // methods supported on all messages. - - var networkID: UInt32 = 0 - - var srcIdentityID: UInt32 = 0 - - var dstIdentityID: UInt32 = 0 - - /// 版本号,客户端需要比较版本号确定是否覆盖 - var version: UInt32 = 0 - - /// 总包数 - var totalNum: UInt32 = 0 - - /// 当前分片 - var index: UInt32 = 0 - - /// 4+1+2 的稀疏序列化规则 - var rules: Data = Data() + var dstMac: Data = Data() var unknownFields = SwiftProtobuf.UnknownStorage() @@ -598,10 +537,13 @@ extension SDLV6Info: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementation } } -extension SDLEmpty: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLEmpty" +extension SDLWelcome: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLWelcome" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), + 1: .same(proto: "version"), + 2: .standard(proto: "max_bidi_streams"), + 3: .standard(proto: "max_packet_size"), + 4: .standard(proto: "heartbeat_sec"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -610,21 +552,55 @@ extension SDLEmpty: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationB // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.version) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.maxBidiStreams) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.maxPacketSize) }() + case 4: try { try decoder.decodeSingularUInt32Field(value: &self.heartbeatSec) }() default: break } } } func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) + if self.version != 0 { + try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 1) + } + if self.maxBidiStreams != 0 { + try visitor.visitSingularUInt32Field(value: self.maxBidiStreams, fieldNumber: 2) + } + if self.maxPacketSize != 0 { + try visitor.visitSingularUInt32Field(value: self.maxPacketSize, fieldNumber: 3) + } + if self.heartbeatSec != 0 { + try visitor.visitSingularUInt32Field(value: self.heartbeatSec, fieldNumber: 4) } try unknownFields.traverse(visitor: &visitor) } + static func ==(lhs: SDLWelcome, rhs: SDLWelcome) -> Bool { + if lhs.version != rhs.version {return false} + if lhs.maxBidiStreams != rhs.maxBidiStreams {return false} + if lhs.maxPacketSize != rhs.maxPacketSize {return false} + if lhs.heartbeatSec != rhs.heartbeatSec {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLEmpty: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLEmpty" + static let _protobuf_nameMap = SwiftProtobuf._NameMap() + + mutating func decodeMessage(decoder: inout D) throws { + // Load everything into unknown fields + while try decoder.nextFieldNumber() != nil {} + } + + func traverse(visitor: inout V) throws { + try unknownFields.traverse(visitor: &visitor) + } + static func ==(lhs: SDLEmpty, rhs: SDLEmpty) -> Bool { - if lhs.pktID != rhs.pktID {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -633,15 +609,14 @@ extension SDLEmpty: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationB extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLRegisterSuper" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "client_id"), - 3: .standard(proto: "network_id"), - 4: .same(proto: "mac"), - 5: .same(proto: "ip"), - 6: .standard(proto: "mask_len"), - 7: .same(proto: "hostname"), - 8: .standard(proto: "pub_key"), - 9: .standard(proto: "access_token"), + 1: .standard(proto: "client_id"), + 2: .standard(proto: "network_id"), + 3: .same(proto: "mac"), + 4: .same(proto: "ip"), + 5: .standard(proto: "mask_len"), + 6: .same(proto: "hostname"), + 7: .standard(proto: "pub_key"), + 8: .standard(proto: "access_token"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -650,53 +625,48 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularStringField(value: &self.clientID) }() - case 3: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 4: try { try decoder.decodeSingularBytesField(value: &self.mac) }() - case 5: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() - case 6: try { try decoder.decodeSingularUInt32Field(value: &self.maskLen) }() - case 7: try { try decoder.decodeSingularStringField(value: &self.hostname) }() - case 8: try { try decoder.decodeSingularStringField(value: &self.pubKey) }() - case 9: try { try decoder.decodeSingularStringField(value: &self.accessToken) }() + case 1: try { try decoder.decodeSingularStringField(value: &self.clientID) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self.mac) }() + case 4: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() + case 5: try { try decoder.decodeSingularUInt32Field(value: &self.maskLen) }() + case 6: try { try decoder.decodeSingularStringField(value: &self.hostname) }() + case 7: try { try decoder.decodeSingularStringField(value: &self.pubKey) }() + case 8: try { try decoder.decodeSingularStringField(value: &self.accessToken) }() default: break } } } func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } if !self.clientID.isEmpty { - try visitor.visitSingularStringField(value: self.clientID, fieldNumber: 2) + try visitor.visitSingularStringField(value: self.clientID, fieldNumber: 1) } if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 3) + try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) } if !self.mac.isEmpty { - try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 4) + try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 3) } if self.ip != 0 { - try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 5) + try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 4) } if self.maskLen != 0 { - try visitor.visitSingularUInt32Field(value: self.maskLen, fieldNumber: 6) + try visitor.visitSingularUInt32Field(value: self.maskLen, fieldNumber: 5) } if !self.hostname.isEmpty { - try visitor.visitSingularStringField(value: self.hostname, fieldNumber: 7) + try visitor.visitSingularStringField(value: self.hostname, fieldNumber: 6) } if !self.pubKey.isEmpty { - try visitor.visitSingularStringField(value: self.pubKey, fieldNumber: 8) + try visitor.visitSingularStringField(value: self.pubKey, fieldNumber: 7) } if !self.accessToken.isEmpty { - try visitor.visitSingularStringField(value: self.accessToken, fieldNumber: 9) + try visitor.visitSingularStringField(value: self.accessToken, fieldNumber: 8) } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLRegisterSuper, rhs: SDLRegisterSuper) -> Bool { - if lhs.pktID != rhs.pktID {return false} if lhs.clientID != rhs.clientID {return false} if lhs.networkID != rhs.networkID {return false} if lhs.mac != rhs.mac {return false} @@ -713,9 +683,8 @@ extension SDLRegisterSuper: SwiftProtobuf.Message, SwiftProtobuf._MessageImpleme extension SDLRegisterSuperAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLRegisterSuperAck" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "aes_key"), - 3: .standard(proto: "session_token"), + 1: .standard(proto: "aes_key"), + 2: .standard(proto: "session_token"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -724,29 +693,24 @@ extension SDLRegisterSuperAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImpl // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularBytesField(value: &self.aesKey) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() + case 1: try { try decoder.decodeSingularBytesField(value: &self.aesKey) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() default: break } } } func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } if !self.aesKey.isEmpty { - try visitor.visitSingularBytesField(value: self.aesKey, fieldNumber: 2) + try visitor.visitSingularBytesField(value: self.aesKey, fieldNumber: 1) } if !self.sessionToken.isEmpty { - try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 3) + try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 2) } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLRegisterSuperAck, rhs: SDLRegisterSuperAck) -> Bool { - if lhs.pktID != rhs.pktID {return false} if lhs.aesKey != rhs.aesKey {return false} if lhs.sessionToken != rhs.sessionToken {return false} if lhs.unknownFields != rhs.unknownFields {return false} @@ -757,9 +721,8 @@ extension SDLRegisterSuperAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImpl extension SDLRegisterSuperNak: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLRegisterSuperNak" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "error_code"), - 3: .standard(proto: "error_message"), + 1: .standard(proto: "error_code"), + 2: .standard(proto: "error_message"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -768,29 +731,24 @@ extension SDLRegisterSuperNak: SwiftProtobuf.Message, SwiftProtobuf._MessageImpl // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.errorCode) }() - case 3: try { try decoder.decodeSingularStringField(value: &self.errorMessage) }() + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.errorCode) }() + case 2: try { try decoder.decodeSingularStringField(value: &self.errorMessage) }() default: break } } } func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } if self.errorCode != 0 { - try visitor.visitSingularUInt32Field(value: self.errorCode, fieldNumber: 2) + try visitor.visitSingularUInt32Field(value: self.errorCode, fieldNumber: 1) } if !self.errorMessage.isEmpty { - try visitor.visitSingularStringField(value: self.errorMessage, fieldNumber: 3) + try visitor.visitSingularStringField(value: self.errorMessage, fieldNumber: 2) } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLRegisterSuperNak, rhs: SDLRegisterSuperNak) -> Bool { - if lhs.pktID != rhs.pktID {return false} if lhs.errorCode != rhs.errorCode {return false} if lhs.errorMessage != rhs.errorMessage {return false} if lhs.unknownFields != rhs.unknownFields {return false} @@ -801,11 +759,7 @@ extension SDLRegisterSuperNak: SwiftProtobuf.Message, SwiftProtobuf._MessageImpl extension SDLQueryInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLQueryInfo" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "network_id"), - 3: .standard(proto: "src_mac"), - 4: .standard(proto: "dst_mac"), - 5: .standard(proto: "session_token"), + 1: .standard(proto: "dst_mac"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -814,41 +768,21 @@ extension SDLQueryInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementat // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.srcMac) }() - case 4: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - case 5: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() + case 1: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() default: break } } } func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) - } - if !self.srcMac.isEmpty { - try visitor.visitSingularBytesField(value: self.srcMac, fieldNumber: 3) - } if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 4) - } - if !self.sessionToken.isEmpty { - try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 5) + try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 1) } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLQueryInfo, rhs: SDLQueryInfo) -> Bool { - if lhs.pktID != rhs.pktID {return false} - if lhs.networkID != rhs.networkID {return false} - if lhs.srcMac != rhs.srcMac {return false} if lhs.dstMac != rhs.dstMac {return false} - if lhs.sessionToken != rhs.sessionToken {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -857,10 +791,260 @@ extension SDLQueryInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementat extension SDLPeerInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLPeerInfo" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "network_id"), - 3: .standard(proto: "dst_mac"), - 4: .standard(proto: "v4_info"), + 1: .standard(proto: "dst_mac"), + 2: .standard(proto: "v4_info"), + 3: .standard(proto: "v6_info"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() + case 2: try { try decoder.decodeSingularMessageField(value: &self._v4Info) }() + case 3: try { try decoder.decodeSingularMessageField(value: &self._v6Info) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every if/case branch local when no optimizations + // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and + // https://github.com/apple/swift-protobuf/issues/1182 + if !self.dstMac.isEmpty { + try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 1) + } + try { if let v = self._v4Info { + try visitor.visitSingularMessageField(value: v, fieldNumber: 2) + } }() + try { if let v = self._v6Info { + try visitor.visitSingularMessageField(value: v, fieldNumber: 3) + } }() + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLPeerInfo, rhs: SDLPeerInfo) -> Bool { + if lhs.dstMac != rhs.dstMac {return false} + if lhs._v4Info != rhs._v4Info {return false} + if lhs._v6Info != rhs._v6Info {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLArpRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLArpRequest" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "target_ip"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.targetIp) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.targetIp != 0 { + try visitor.visitSingularUInt32Field(value: self.targetIp, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLArpRequest, rhs: SDLArpRequest) -> Bool { + if lhs.targetIp != rhs.targetIp {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLArpResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLArpResponse" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "target_ip"), + 2: .standard(proto: "target_mac"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.targetIp) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self.targetMac) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.targetIp != 0 { + try visitor.visitSingularUInt32Field(value: self.targetIp, fieldNumber: 1) + } + if !self.targetMac.isEmpty { + try visitor.visitSingularBytesField(value: self.targetMac, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLArpResponse, rhs: SDLArpResponse) -> Bool { + if lhs.targetIp != rhs.targetIp {return false} + if lhs.targetMac != rhs.targetMac {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLPolicyRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLPolicyRequest" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "src_identity_id"), + 2: .standard(proto: "dst_identity_id"), + 3: .same(proto: "version"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.srcIdentityID) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.dstIdentityID) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.version) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.srcIdentityID != 0 { + try visitor.visitSingularUInt32Field(value: self.srcIdentityID, fieldNumber: 1) + } + if self.dstIdentityID != 0 { + try visitor.visitSingularUInt32Field(value: self.dstIdentityID, fieldNumber: 2) + } + if self.version != 0 { + try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 3) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLPolicyRequest, rhs: SDLPolicyRequest) -> Bool { + if lhs.srcIdentityID != rhs.srcIdentityID {return false} + if lhs.dstIdentityID != rhs.dstIdentityID {return false} + if lhs.version != rhs.version {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLPolicyResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLPolicyResponse" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "src_identity_id"), + 2: .standard(proto: "dst_identity_id"), + 3: .same(proto: "version"), + 4: .same(proto: "rules"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.srcIdentityID) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.dstIdentityID) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.version) }() + case 4: try { try decoder.decodeSingularBytesField(value: &self.rules) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.srcIdentityID != 0 { + try visitor.visitSingularUInt32Field(value: self.srcIdentityID, fieldNumber: 1) + } + if self.dstIdentityID != 0 { + try visitor.visitSingularUInt32Field(value: self.dstIdentityID, fieldNumber: 2) + } + if self.version != 0 { + try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 3) + } + if !self.rules.isEmpty { + try visitor.visitSingularBytesField(value: self.rules, fieldNumber: 4) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLPolicyResponse, rhs: SDLPolicyResponse) -> Bool { + if lhs.srcIdentityID != rhs.srcIdentityID {return false} + if lhs.dstIdentityID != rhs.dstIdentityID {return false} + if lhs.version != rhs.version {return false} + if lhs.rules != rhs.rules {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLNatChangedEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLNatChangedEvent" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "mac"), + 2: .same(proto: "ip"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularBytesField(value: &self.mac) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if !self.mac.isEmpty { + try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 1) + } + if self.ip != 0 { + try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 2) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLNatChangedEvent, rhs: SDLNatChangedEvent) -> Bool { + if lhs.mac != rhs.mac {return false} + if lhs.ip != rhs.ip {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLSendRegisterEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLSendRegisterEvent" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .standard(proto: "dst_mac"), + 2: .standard(proto: "nat_ip"), + 3: .standard(proto: "nat_port"), + 4: .standard(proto: "nat_type"), 5: .standard(proto: "v6_info"), ] @@ -870,10 +1054,10 @@ extension SDLPeerInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - case 4: try { try decoder.decodeSingularMessageField(value: &self._v4Info) }() + case 1: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() + case 2: try { try decoder.decodeSingularUInt32Field(value: &self.natIp) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.natPort) }() + case 4: try { try decoder.decodeSingularUInt32Field(value: &self.natType) }() case 5: try { try decoder.decodeSingularMessageField(value: &self._v6Info) }() default: break } @@ -885,249 +1069,25 @@ extension SDLPeerInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementati // allocates stack space for every if/case branch local when no optimizations // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and // https://github.com/apple/swift-protobuf/issues/1182 - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) - } if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) + try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 1) + } + if self.natIp != 0 { + try visitor.visitSingularUInt32Field(value: self.natIp, fieldNumber: 2) + } + if self.natPort != 0 { + try visitor.visitSingularUInt32Field(value: self.natPort, fieldNumber: 3) + } + if self.natType != 0 { + try visitor.visitSingularUInt32Field(value: self.natType, fieldNumber: 4) } - try { if let v = self._v4Info { - try visitor.visitSingularMessageField(value: v, fieldNumber: 4) - } }() try { if let v = self._v6Info { try visitor.visitSingularMessageField(value: v, fieldNumber: 5) } }() try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SDLPeerInfo, rhs: SDLPeerInfo) -> Bool { - if lhs.pktID != rhs.pktID {return false} - if lhs.networkID != rhs.networkID {return false} - if lhs.dstMac != rhs.dstMac {return false} - if lhs._v4Info != rhs._v4Info {return false} - if lhs._v6Info != rhs._v6Info {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLEmptyPeerInfo: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLEmptyPeerInfo" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "pkt_id"), - 2: .standard(proto: "network_id"), - 3: .standard(proto: "dst_mac"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.pktID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.pktID != 0 { - try visitor.visitSingularUInt32Field(value: self.pktID, fieldNumber: 1) - } - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) - } - if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLEmptyPeerInfo, rhs: SDLEmptyPeerInfo) -> Bool { - if lhs.pktID != rhs.pktID {return false} - if lhs.networkID != rhs.networkID {return false} - if lhs.dstMac != rhs.dstMac {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLNatChangedEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLNatChangedEvent" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .same(proto: "mac"), - 3: .same(proto: "ip"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularBytesField(value: &self.mac) }() - case 3: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if !self.mac.isEmpty { - try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 2) - } - if self.ip != 0 { - try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLNatChangedEvent, rhs: SDLNatChangedEvent) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.mac != rhs.mac {return false} - if lhs.ip != rhs.ip {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLDropMacsEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLDropMacsEvent" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .same(proto: "macs"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeRepeatedBytesField(value: &self.macs) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if !self.macs.isEmpty { - try visitor.visitRepeatedBytesField(value: self.macs, fieldNumber: 2) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLDropMacsEvent, rhs: SDLDropMacsEvent) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.macs != rhs.macs {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLRefreshAuthEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLRefreshAuthEvent" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLRefreshAuthEvent, rhs: SDLRefreshAuthEvent) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLSendRegisterEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLSendRegisterEvent" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .standard(proto: "dst_mac"), - 3: .standard(proto: "nat_ip"), - 4: .standard(proto: "nat_port"), - 5: .standard(proto: "nat_type"), - 6: .standard(proto: "v6_info"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - case 3: try { try decoder.decodeSingularUInt32Field(value: &self.natIp) }() - case 4: try { try decoder.decodeSingularUInt32Field(value: &self.natPort) }() - case 5: try { try decoder.decodeSingularUInt32Field(value: &self.natType) }() - case 6: try { try decoder.decodeSingularMessageField(value: &self._v6Info) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every if/case branch local when no optimizations - // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and - // https://github.com/apple/swift-protobuf/issues/1182 - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 2) - } - if self.natIp != 0 { - try visitor.visitSingularUInt32Field(value: self.natIp, fieldNumber: 3) - } - if self.natPort != 0 { - try visitor.visitSingularUInt32Field(value: self.natPort, fieldNumber: 4) - } - if self.natType != 0 { - try visitor.visitSingularUInt32Field(value: self.natType, fieldNumber: 5) - } - try { if let v = self._v6Info { - try visitor.visitSingularMessageField(value: v, fieldNumber: 6) - } }() - try unknownFields.traverse(visitor: &visitor) - } - static func ==(lhs: SDLSendRegisterEvent, rhs: SDLSendRegisterEvent) -> Bool { - if lhs.networkID != rhs.networkID {return false} if lhs.dstMac != rhs.dstMac {return false} if lhs.natIp != rhs.natIp {return false} if lhs.natPort != rhs.natPort {return false} @@ -1141,8 +1101,7 @@ extension SDLSendRegisterEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImp extension SDLNetworkShutdownEvent: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLNetworkShutdownEvent" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .same(proto: "message"), + 1: .same(proto: "message"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -1151,25 +1110,20 @@ extension SDLNetworkShutdownEvent: SwiftProtobuf.Message, SwiftProtobuf._Message // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularStringField(value: &self.message) }() + case 1: try { try decoder.decodeSingularStringField(value: &self.message) }() default: break } } } func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } if !self.message.isEmpty { - try visitor.visitSingularStringField(value: self.message, fieldNumber: 2) + try visitor.visitSingularStringField(value: self.message, fieldNumber: 1) } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLNetworkShutdownEvent, rhs: SDLNetworkShutdownEvent) -> Bool { - if lhs.networkID != rhs.networkID {return false} if lhs.message != rhs.message {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true @@ -1179,13 +1133,13 @@ extension SDLNetworkShutdownEvent: SwiftProtobuf.Message, SwiftProtobuf._Message extension SDLStunRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLStunRequest" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "client_id"), - 2: .standard(proto: "network_id"), - 3: .same(proto: "mac"), - 4: .same(proto: "ip"), - 5: .standard(proto: "nat_type"), - 6: .standard(proto: "v6_info"), - 7: .standard(proto: "session_token"), + 1: .same(proto: "cookie"), + 2: .standard(proto: "client_id"), + 3: .standard(proto: "network_id"), + 4: .same(proto: "mac"), + 5: .same(proto: "ip"), + 6: .standard(proto: "nat_type"), + 7: .standard(proto: "v6_info"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -1194,13 +1148,13 @@ extension SDLStunRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplement // allocates stack space for every case branch when no optimizations are // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { - case 1: try { try decoder.decodeSingularStringField(value: &self.clientID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.mac) }() - case 4: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() - case 5: try { try decoder.decodeSingularUInt32Field(value: &self.natType) }() - case 6: try { try decoder.decodeSingularMessageField(value: &self._v6Info) }() - case 7: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.cookie) }() + case 2: try { try decoder.decodeSingularStringField(value: &self.clientID) }() + case 3: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() + case 4: try { try decoder.decodeSingularBytesField(value: &self.mac) }() + case 5: try { try decoder.decodeSingularUInt32Field(value: &self.ip) }() + case 6: try { try decoder.decodeSingularUInt32Field(value: &self.natType) }() + case 7: try { try decoder.decodeSingularMessageField(value: &self._v6Info) }() default: break } } @@ -1211,38 +1165,70 @@ extension SDLStunRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplement // allocates stack space for every if/case branch local when no optimizations // are enabled. https://github.com/apple/swift-protobuf/issues/1034 and // https://github.com/apple/swift-protobuf/issues/1182 + if self.cookie != 0 { + try visitor.visitSingularUInt32Field(value: self.cookie, fieldNumber: 1) + } if !self.clientID.isEmpty { - try visitor.visitSingularStringField(value: self.clientID, fieldNumber: 1) + try visitor.visitSingularStringField(value: self.clientID, fieldNumber: 2) } if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) + try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 3) } if !self.mac.isEmpty { - try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 3) + try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 4) } if self.ip != 0 { - try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 4) + try visitor.visitSingularUInt32Field(value: self.ip, fieldNumber: 5) } if self.natType != 0 { - try visitor.visitSingularUInt32Field(value: self.natType, fieldNumber: 5) + try visitor.visitSingularUInt32Field(value: self.natType, fieldNumber: 6) } try { if let v = self._v6Info { - try visitor.visitSingularMessageField(value: v, fieldNumber: 6) + try visitor.visitSingularMessageField(value: v, fieldNumber: 7) } }() - if !self.sessionToken.isEmpty { - try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 7) - } try unknownFields.traverse(visitor: &visitor) } static func ==(lhs: SDLStunRequest, rhs: SDLStunRequest) -> Bool { + if lhs.cookie != rhs.cookie {return false} if lhs.clientID != rhs.clientID {return false} if lhs.networkID != rhs.networkID {return false} if lhs.mac != rhs.mac {return false} if lhs.ip != rhs.ip {return false} if lhs.natType != rhs.natType {return false} if lhs._v6Info != rhs._v6Info {return false} - if lhs.sessionToken != rhs.sessionToken {return false} + if lhs.unknownFields != rhs.unknownFields {return false} + return true + } +} + +extension SDLStunReply: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLStunReply" + static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ + 1: .same(proto: "cookie"), + ] + + mutating func decodeMessage(decoder: inout D) throws { + while let fieldNumber = try decoder.nextFieldNumber() { + // The use of inline closures is to circumvent an issue where the compiler + // allocates stack space for every case branch when no optimizations are + // enabled. https://github.com/apple/swift-protobuf/issues/1034 + switch fieldNumber { + case 1: try { try decoder.decodeSingularUInt32Field(value: &self.cookie) }() + default: break + } + } + } + + func traverse(visitor: inout V) throws { + if self.cookie != 0 { + try visitor.visitSingularUInt32Field(value: self.cookie, fieldNumber: 1) + } + try unknownFields.traverse(visitor: &visitor) + } + + static func ==(lhs: SDLStunReply, rhs: SDLStunReply) -> Bool { + if lhs.cookie != rhs.cookie {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } @@ -1322,94 +1308,6 @@ extension SDLData: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBa } } -extension SDLRegister: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLRegister" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .standard(proto: "src_mac"), - 3: .standard(proto: "dst_mac"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularBytesField(value: &self.srcMac) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if !self.srcMac.isEmpty { - try visitor.visitSingularBytesField(value: self.srcMac, fieldNumber: 2) - } - if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLRegister, rhs: SDLRegister) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.srcMac != rhs.srcMac {return false} - if lhs.dstMac != rhs.dstMac {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLRegisterAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLRegisterAck" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .standard(proto: "src_mac"), - 3: .standard(proto: "dst_mac"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularBytesField(value: &self.srcMac) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if !self.srcMac.isEmpty { - try visitor.visitSingularBytesField(value: self.srcMac, fieldNumber: 2) - } - if !self.dstMac.isEmpty { - try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLRegisterAck, rhs: SDLRegisterAck) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.srcMac != rhs.srcMac {return false} - if lhs.dstMac != rhs.dstMac {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - extension SDLStunProbe: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { static let protoMessageName: String = "SDLStunProbe" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ @@ -1504,12 +1402,12 @@ extension SDLStunProbeReply: SwiftProtobuf.Message, SwiftProtobuf._MessageImplem } } -extension SDLArpRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLArpRequest" +extension SDLRegister: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLRegister" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ 1: .standard(proto: "network_id"), - 2: .standard(proto: "target_ip"), - 3: .standard(proto: "session_token"), + 2: .standard(proto: "src_mac"), + 3: .standard(proto: "dst_mac"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -1519,8 +1417,8 @@ extension SDLArpRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementa // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.targetIp) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self.srcMac) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() default: break } } @@ -1530,30 +1428,30 @@ extension SDLArpRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementa if self.networkID != 0 { try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) } - if self.targetIp != 0 { - try visitor.visitSingularUInt32Field(value: self.targetIp, fieldNumber: 2) + if !self.srcMac.isEmpty { + try visitor.visitSingularBytesField(value: self.srcMac, fieldNumber: 2) } - if !self.sessionToken.isEmpty { - try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 3) + if !self.dstMac.isEmpty { + try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) } try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SDLArpRequest, rhs: SDLArpRequest) -> Bool { + static func ==(lhs: SDLRegister, rhs: SDLRegister) -> Bool { if lhs.networkID != rhs.networkID {return false} - if lhs.targetIp != rhs.targetIp {return false} - if lhs.sessionToken != rhs.sessionToken {return false} + if lhs.srcMac != rhs.srcMac {return false} + if lhs.dstMac != rhs.dstMac {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } } -extension SDLArpResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLArpResponse" +extension SDLRegisterAck: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { + static let protoMessageName: String = "SDLRegisterAck" static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ 1: .standard(proto: "network_id"), - 2: .standard(proto: "target_ip"), - 3: .standard(proto: "target_mac"), + 2: .standard(proto: "src_mac"), + 3: .standard(proto: "dst_mac"), ] mutating func decodeMessage(decoder: inout D) throws { @@ -1563,8 +1461,8 @@ extension SDLArpResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplement // enabled. https://github.com/apple/swift-protobuf/issues/1034 switch fieldNumber { case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.targetIp) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.targetMac) }() + case 2: try { try decoder.decodeSingularBytesField(value: &self.srcMac) }() + case 3: try { try decoder.decodeSingularBytesField(value: &self.dstMac) }() default: break } } @@ -1574,155 +1472,19 @@ extension SDLArpResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplement if self.networkID != 0 { try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) } - if self.targetIp != 0 { - try visitor.visitSingularUInt32Field(value: self.targetIp, fieldNumber: 2) + if !self.srcMac.isEmpty { + try visitor.visitSingularBytesField(value: self.srcMac, fieldNumber: 2) } - if !self.targetMac.isEmpty { - try visitor.visitSingularBytesField(value: self.targetMac, fieldNumber: 3) + if !self.dstMac.isEmpty { + try visitor.visitSingularBytesField(value: self.dstMac, fieldNumber: 3) } try unknownFields.traverse(visitor: &visitor) } - static func ==(lhs: SDLArpResponse, rhs: SDLArpResponse) -> Bool { + static func ==(lhs: SDLRegisterAck, rhs: SDLRegisterAck) -> Bool { if lhs.networkID != rhs.networkID {return false} - if lhs.targetIp != rhs.targetIp {return false} - if lhs.targetMac != rhs.targetMac {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLPolicyRequest: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLPolicyRequest" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "client_id"), - 2: .standard(proto: "network_id"), - 3: .same(proto: "mac"), - 4: .standard(proto: "src_identity_id"), - 5: .standard(proto: "dst_identity_id"), - 6: .same(proto: "version"), - 7: .standard(proto: "session_token"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularStringField(value: &self.clientID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 3: try { try decoder.decodeSingularBytesField(value: &self.mac) }() - case 4: try { try decoder.decodeSingularUInt32Field(value: &self.srcIdentityID) }() - case 5: try { try decoder.decodeSingularUInt32Field(value: &self.dstIdentityID) }() - case 6: try { try decoder.decodeSingularUInt32Field(value: &self.version) }() - case 7: try { try decoder.decodeSingularBytesField(value: &self.sessionToken) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if !self.clientID.isEmpty { - try visitor.visitSingularStringField(value: self.clientID, fieldNumber: 1) - } - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 2) - } - if !self.mac.isEmpty { - try visitor.visitSingularBytesField(value: self.mac, fieldNumber: 3) - } - if self.srcIdentityID != 0 { - try visitor.visitSingularUInt32Field(value: self.srcIdentityID, fieldNumber: 4) - } - if self.dstIdentityID != 0 { - try visitor.visitSingularUInt32Field(value: self.dstIdentityID, fieldNumber: 5) - } - if self.version != 0 { - try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 6) - } - if !self.sessionToken.isEmpty { - try visitor.visitSingularBytesField(value: self.sessionToken, fieldNumber: 7) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLPolicyRequest, rhs: SDLPolicyRequest) -> Bool { - if lhs.clientID != rhs.clientID {return false} - if lhs.networkID != rhs.networkID {return false} - if lhs.mac != rhs.mac {return false} - if lhs.srcIdentityID != rhs.srcIdentityID {return false} - if lhs.dstIdentityID != rhs.dstIdentityID {return false} - if lhs.version != rhs.version {return false} - if lhs.sessionToken != rhs.sessionToken {return false} - if lhs.unknownFields != rhs.unknownFields {return false} - return true - } -} - -extension SDLPolicyResponse: SwiftProtobuf.Message, SwiftProtobuf._MessageImplementationBase, SwiftProtobuf._ProtoNameProviding { - static let protoMessageName: String = "SDLPolicyResponse" - static let _protobuf_nameMap: SwiftProtobuf._NameMap = [ - 1: .standard(proto: "network_id"), - 2: .standard(proto: "src_identity_id"), - 3: .standard(proto: "dst_identity_id"), - 4: .same(proto: "version"), - 5: .standard(proto: "total_num"), - 6: .same(proto: "index"), - 7: .same(proto: "rules"), - ] - - mutating func decodeMessage(decoder: inout D) throws { - while let fieldNumber = try decoder.nextFieldNumber() { - // The use of inline closures is to circumvent an issue where the compiler - // allocates stack space for every case branch when no optimizations are - // enabled. https://github.com/apple/swift-protobuf/issues/1034 - switch fieldNumber { - case 1: try { try decoder.decodeSingularUInt32Field(value: &self.networkID) }() - case 2: try { try decoder.decodeSingularUInt32Field(value: &self.srcIdentityID) }() - case 3: try { try decoder.decodeSingularUInt32Field(value: &self.dstIdentityID) }() - case 4: try { try decoder.decodeSingularUInt32Field(value: &self.version) }() - case 5: try { try decoder.decodeSingularUInt32Field(value: &self.totalNum) }() - case 6: try { try decoder.decodeSingularUInt32Field(value: &self.index) }() - case 7: try { try decoder.decodeSingularBytesField(value: &self.rules) }() - default: break - } - } - } - - func traverse(visitor: inout V) throws { - if self.networkID != 0 { - try visitor.visitSingularUInt32Field(value: self.networkID, fieldNumber: 1) - } - if self.srcIdentityID != 0 { - try visitor.visitSingularUInt32Field(value: self.srcIdentityID, fieldNumber: 2) - } - if self.dstIdentityID != 0 { - try visitor.visitSingularUInt32Field(value: self.dstIdentityID, fieldNumber: 3) - } - if self.version != 0 { - try visitor.visitSingularUInt32Field(value: self.version, fieldNumber: 4) - } - if self.totalNum != 0 { - try visitor.visitSingularUInt32Field(value: self.totalNum, fieldNumber: 5) - } - if self.index != 0 { - try visitor.visitSingularUInt32Field(value: self.index, fieldNumber: 6) - } - if !self.rules.isEmpty { - try visitor.visitSingularBytesField(value: self.rules, fieldNumber: 7) - } - try unknownFields.traverse(visitor: &visitor) - } - - static func ==(lhs: SDLPolicyResponse, rhs: SDLPolicyResponse) -> Bool { - if lhs.networkID != rhs.networkID {return false} - if lhs.srcIdentityID != rhs.srcIdentityID {return false} - if lhs.dstIdentityID != rhs.dstIdentityID {return false} - if lhs.version != rhs.version {return false} - if lhs.totalNum != rhs.totalNum {return false} - if lhs.index != rhs.index {return false} - if lhs.rules != rhs.rules {return false} + if lhs.srcMac != rhs.srcMac {return false} + if lhs.dstMac != rhs.dstMac {return false} if lhs.unknownFields != rhs.unknownFields {return false} return true } diff --git a/Tun/Punchnet/SDLMessage.swift b/Tun/Punchnet/SDLMessage.swift index 6d924c8..f284f1d 100644 --- a/Tun/Punchnet/SDLMessage.swift +++ b/Tun/Punchnet/SDLMessage.swift @@ -93,10 +93,13 @@ extension SDLStunProbeReply { // --MARK: 进来的消息, 这里需要采用代数类型来表示 enum SDLHoleMessage { case data(SDLData) - case signal(SDLHoleSignal) } -enum SDLHoleSignal { +enum SDLQUICInboundMessage { + // 欢迎消息 + case welcome(SDLWelcome) + + // 注册相关 case registerSuperAck(SDLRegisterSuperAck) case registerSuperNak(SDLRegisterSuperNak) @@ -105,25 +108,21 @@ enum SDLHoleSignal { case stunProbeReply(SDLStunProbeReply) - case register(SDLRegister) - case registerAck(SDLRegisterAck) + //case register(SDLRegister) + //case registerAck(SDLRegisterAck) case policyReponse(SDLPolicyResponse) } // 命令类型 enum SDLEventType: UInt8 { - case dropMacs = 0x02 case natChanged = 0x03 case sendRegister = 0x04 - case refreshAuth = 0x05 case networkShutdown = 0xFF } enum SDLEvent { - case dropMacs(SDLDropMacsEvent) case natChanged(SDLNatChangedEvent) case sendRegister(SDLSendRegisterEvent) - case refreshAuth(SDLRefreshAuthEvent) case networkShutdown(SDLNetworkShutdownEvent) } diff --git a/Tun/Punchnet/SDLQuicClient.swift b/Tun/Punchnet/SDLQuicClient.swift new file mode 100644 index 0000000..5ba7bdd --- /dev/null +++ b/Tun/Punchnet/SDLQuicClient.swift @@ -0,0 +1,193 @@ +// +// SDLQuicClient.swift +// Tun +// +// Created by 安礼成 on 2026/2/13. +// + +import Foundation +import NIOCore +import Network + +actor SDLQUICClient { + private let transport: SDLQUICTransport + nonisolated private let alloctor = ByteBufferAllocator() + + init(host: String, port: UInt16) { + self.transport = SDLQUICTransport(host: host, port: port) + } + + func start() async -> SDLQUICTransport.Event { + return await withCheckedContinuation { cont in + transport.start { event in + cont.resume(returning: event) + } + } + } + + func receiveStream(maxLen: Int) -> AsyncCompactMapSequence, SDLQUICInboundMessage> { + return transport.receiveMessageStream(maxLen: maxLen).compactMap { data in + var buf = self.alloctor.buffer(bytes: data) + return try? Self.decode(buffer: &buf) + } + } + + func send(data: Data) { + transport.send(data) + } + + // --MARK: 编解码器 + private static func decode(buffer: inout ByteBuffer) throws -> SDLQUICInboundMessage? { + guard let type = buffer.readInteger(as: UInt8.self), + let packetType = SDLPacketType(rawValue: type) else { + return nil + } + + switch packetType { + case .registerSuperAck: + guard let bytes = buffer.readBytes(length: buffer.readableBytes), + let registerSuperAck = try? SDLRegisterSuperAck(serializedBytes: bytes) else { + return nil + } + return .registerSuperAck(registerSuperAck) + case .registerSuperNak: + guard let bytes = buffer.readBytes(length: buffer.readableBytes), + let registerSuperNak = try? SDLRegisterSuperNak(serializedBytes: bytes) else { + return nil + } + return .registerSuperNak(registerSuperNak) + case .peerInfo: + guard let bytes = buffer.readBytes(length: buffer.readableBytes), + let peerInfo = try? SDLPeerInfo(serializedBytes: bytes) else { + return nil + } + return .peerInfo(peerInfo) + case .policyResponse: + guard let bytes = buffer.readBytes(length: buffer.readableBytes), + let policyResponse = try? SDLPolicyResponse(serializedBytes: bytes) else { + return nil + } + return .policyReponse(policyResponse) + case .event: + guard let eventVal = buffer.readInteger(as: UInt8.self), + let event = SDLEventType(rawValue: eventVal), + let bytes = buffer.readBytes(length: buffer.readableBytes) else { + SDLLogger.shared.log("[SDLUDPHole] decode error 15") + return nil + } + + switch event { + case .natChanged: + guard let natChangedEvent = try? SDLNatChangedEvent(serializedBytes: bytes) else { + SDLLogger.shared.log("[SDLUDPHole] decode error 16") + return nil + } + return .event(.natChanged(natChangedEvent)) + case .sendRegister: + guard let sendRegisterEvent = try? SDLSendRegisterEvent(serializedBytes: bytes) else { + SDLLogger.shared.log("[SDLUDPHole] decode error 17") + return nil + } + return .event(.sendRegister(sendRegisterEvent)) + case .networkShutdown: + guard let networkShutdownEvent = try? SDLNetworkShutdownEvent(serializedBytes: bytes) else { + SDLLogger.shared.log("[SDLUDPHole] decode error 18") + return nil + } + return .event(.networkShutdown(networkShutdownEvent)) + } + default: + SDLLogger.shared.log("SDLUDPHole decode miss type: \(type)") + + return nil + } + } +} + +final class SDLQUICTransport { + enum Event { + case ready + case failed(Error) + case cancelled + } + + private let connection: NWConnection + + init(host: String, port: UInt16) { + let params = NWParameters(quic: .init()) + self.connection = NWConnection(host: .init(host), port: .init(rawValue: port)!, using: params) + } + + func start(onEvent: @escaping (Event) -> Void) { + connection.stateUpdateHandler = { state in + switch state { + case .ready: onEvent(.ready) + case .failed(let e): onEvent(.failed(e)) + case .cancelled: onEvent(.cancelled) + default: break + } + } + connection.start(queue: .global()) + } + + func receiveMessageStream(maxLen: Int) -> AsyncStream { + let connection = self.connection + + return AsyncStream { continuation in + var buffer = Data() + + func tryParse() { + while true { + // 至少要有长度 + guard buffer.count >= 2 else { + return + } + + let len0 = UInt16(bigEndian: buffer.withUnsafeBytes { $0.load(as: UInt16.self) }) + let len = Int(len0) + + // 数据不够一个完整包 + guard buffer.count >= 2 + len else { + return + } + + // 取 body + let body = buffer.subdata(in: 2 ..< 2 + len) + continuation.yield(body) + + // 移除已消费 + buffer.removeSubrange(0 ..< 2 + len) + } + } + + func loopReceive() { + connection.receive(minimumIncompleteLength: 1, maximumLength: maxLen) { data, _, _, error in + if let data, !data.isEmpty { + buffer.append(data) + tryParse() + } + if error == nil { + loopReceive() + } else { + continuation.finish() + } + } + } + + loopReceive() + } + } + + func send(_ data: Data) { + var len = UInt16(data.count).bigEndian + var packet = Data(Data(bytes: &len, count: 2)) + packet.append(data) + + connection.send(content: packet, completion: .contentProcessed { _ in }) + } + + func stop() { + connection.cancel() + } + +}