/// <summary> /// Generate a packet with SMUX header /// </summary> /// <param name="packet">SNI packet</param> /// <returns>Encapsulated SNI packet</returns> private SNIPacket GetSMUXEncapsulatedPacket(SNIPacket packet) { uint xSequenceNumber = _sequenceNumber; Span <byte> header = stackalloc byte[SNISMUXHeader.HEADER_LENGTH]; GetSMUXHeaderBytes(packet.Length, SNISMUXFlags.SMUX_DATA, header); SNIPacket smuxPacket = new SNIPacket(SNISMUXHeader.HEADER_LENGTH + packet.Length); smuxPacket.AppendData(header); smuxPacket.AppendPacket(packet); packet.Dispose(); return(smuxPacket); }
/// <summary> /// Generate a packet with SMUX header /// </summary> /// <param name="packet">SNI packet</param> /// <returns>Encapsulated SNI packet</returns> private SNIPacket GetSMUXEncapsulatedPacket(SNIPacket packet) { uint xSequenceNumber = _sequenceNumber; byte[] headerBytes = null; GetSMUXHeaderBytes(packet.Length, (byte)SNISMUXFlags.SMUX_DATA, ref headerBytes); SNIPacket smuxPacket = new SNIPacket(16 + packet.Length); smuxPacket.Description = string.Format("({0}) SMUX packet {1}", packet.Description == null ? "" : packet.Description, xSequenceNumber); smuxPacket.AppendData(headerBytes, 16); smuxPacket.AppendPacket(packet); return(smuxPacket); }