mutating func writeChannelOpenMessage()

in Sources/NIOSSH/SSHMessages.swift [1375:1413]


    mutating func writeChannelOpenMessage(_ message: SSHMessage.ChannelOpenMessage) -> Int {
        var writtenBytes = 0

        switch message.type {
        case .session:
            writtenBytes += self.writeSSHString("session".utf8)

        case .forwardedTCPIP:
            writtenBytes += self.writeSSHString("forwarded-tcpip".utf8)

        case .directTCPIP:
            writtenBytes += self.writeSSHString("direct-tcpip".utf8)
        }

        writtenBytes += self.writeInteger(message.senderChannel)
        writtenBytes += self.writeInteger(message.initialWindowSize)
        writtenBytes += self.writeInteger(message.maximumPacketSize)

        switch message.type {
        case .session:
            break

        case .forwardedTCPIP(let data):
            // We'll write gibberish if we can't get IP addresses out
            writtenBytes += self.writeSSHString(data.hostListening.utf8)
            writtenBytes += self.writeInteger(UInt32(data.portListening))
            writtenBytes += self.writeSSHString((data.originatorAddress.ipAddress ?? "<nio-error>").utf8)
            writtenBytes += self.writeInteger(UInt32(data.originatorAddress.port ?? -1))

        case .directTCPIP(let data):
            // We'll write gibberish if we can't get IP addresses out
            writtenBytes += self.writeSSHString(data.hostToConnectTo.utf8)
            writtenBytes += self.writeInteger(UInt32(data.portToConnectTo))
            writtenBytes += self.writeSSHString((data.originatorAddress.ipAddress ?? "<nio-error>").utf8)
            writtenBytes += self.writeInteger(UInt32(data.originatorAddress.port ?? -1))
        }

        return writtenBytes
    }