internal static PacketOrByteArraySegment ParseEncapsulatedBytes(ByteArraySegment payload, FlagsRadioTapField flagsField) { var payloadPacketOrData = new PacketOrByteArraySegment(); MacFrame frame = null; if (flagsField != null) { bool fcsPresent = ((flagsField.Flags & RadioTapFlags.FcsIncludedInFrame) == RadioTapFlags.FcsIncludedInFrame); if (fcsPresent) { frame = MacFrame.ParsePacketWithFcs(payload); } else { frame = MacFrame.ParsePacket(payload); } } else { frame = MacFrame.ParsePacket(payload); } if (frame == null) { payloadPacketOrData.TheByteArraySegment = payload; } else { payloadPacketOrData.ThePacket = frame; } return(payloadPacketOrData); }
public OsiPresentationPacket(ByteArraySegment bas, Packet parent) { ParentPacket = parent; UserData = new TLV(bas); FullyEncodedData = new TLV(UserData.Value.Bytes, UserData); PdvList = new TLV[2]; PdvList[0] = new TLV(FullyEncodedData.Value.Bytes, FullyEncodedData); PresentationContextIdentifier = (ContextIdentifier)(PdvList[0].Value.RawBytes[0]); PdvList[1] = new TLV(FullyEncodedData.Value.Bytes.EncapsulatedBytes(), FullyEncodedData); this.header = bas; this.header.Length = UserData.Bytes.Length - PdvList[1].Bytes.Length; var payload = PdvList[1].Value.Bytes; payloadPacketOrData = new PacketOrByteArraySegment(); switch (PresentationContextIdentifier) { case ContextIdentifier.Mms: payloadPacketOrData.ThePacket = new MmsPacket(payload, this); break; default: payloadPacketOrData.TheByteArraySegment = payload; break; } }
public OsiSessionPacket(byte[] rawData, Packet parent) { this.ParentPacket = parent; int offset = 0; header = new ByteArraySegment(rawData); PduType = (PduIdentifier)rawData[offset]; if (PduType == PduIdentifier.GiveToken) { offset += OsiSessionFileds.PiLength; Pdu = new OsiSessionPdu(); Spdu = new OsiSessionPdu(); Pdu.Length = (int)rawData[offset]; offset += OsiSessionFileds.PduLiLength; if (Pdu.Length > 0) { Pdu.PI = rawData[offset]; offset += 1; rawData.CopyTo(Pdu.Value, offset); } SpduType = (SpduIdentifier)rawData[offset]; if (SpduType == SpduIdentifier.DataTransfer) { offset += OsiSessionFileds.SpiLength; Spdu.Length = (int)rawData[offset]; offset += OsiSessionFileds.SpduLiLength; if (SpduLength > 0) { Spdu = new OsiSessionPdu(); Spdu.PI = rawData[offset]; offset += 1; rawData.CopyTo(Spdu.Value, offset); } header = new ByteArraySegment(rawData); header.Length = OsiSessionFileds.PiLength + OsiSessionFileds.PduLiLength + PduLength + OsiSessionFileds.SpduLiLength + OsiSessionFileds.SpiLength + SpduLength; var payload = header.EncapsulatedBytes(); payloadPacketOrData = new PacketOrByteArraySegment(); payloadPacketOrData.ThePacket = new OsiPresentationPacket(payload, this); parent.PayloadPacket = this; } } }
public CotpPacket(ByteArraySegment bas, Packet parent) { this.ParentPacket = parent; header = bas; header.Length = BigEndianBitConverter.Big.ToInt8(new ByteArraySegment(bas.Bytes, bas.Offset, 1).ActualBytes(), 0) + CotpFileds.LengthLength; byte num_eot = header.ActualBytes()[CotpFileds.LengthLength + CotpFileds.PduTypeLength]; this.Type = (TpduType)(BigEndianBitConverter.Big.ToInt8(header.ActualBytes(), 1)); switch (Type) { case TpduType.ConnectioinRequest: break; case TpduType.ConnectionConfirm: break; case TpduType.DataTransfer: TpduNumber = num_eot & TPDU_NUM_MASK; LastDataUnit = Convert.ToBoolean(num_eot >> LAST_DU_BIT); break; case TpduType.DisconnectionRequest: break; case TpduType.ExpectedDataTransfer: break; default: break; } var payload = header.EncapsulatedBytes(); payloadPacketOrData = new PacketOrByteArraySegment(); payloadPacketOrData.TheByteArraySegment = payload; }
/// <summary> /// Used by the Ieee80211PpiPacket constructor. /// </summary> /// <param name="header"> /// A <see cref="ByteArraySegment" /> /// </param> /// <param name="commonField"> /// The <see cref="PpiCommon" /> object in the PPI packet or null if not available /// </param> /// <returns> /// A <see cref="PacketOrByteArraySegment" /> /// </returns> internal static PacketOrByteArraySegment ParseEncapsulatedBytes(ByteArraySegment header, PpiCommon commonField) { // slice off the payload var payload = header.EncapsulatedBytes(); var payloadPacketOrData = new PacketOrByteArraySegment(); MacFrame frame = null; if (commonField != null) { var fcsPresent = ((commonField.Flags & PpiCommon.CommonFlags.FcsIncludedInFrame) == PpiCommon.CommonFlags.FcsIncludedInFrame); if (fcsPresent) { frame = MacFrame.ParsePacketWithFcs(payload); } else { frame = MacFrame.ParsePacket(payload); } } else { frame = MacFrame.ParsePacket(payload); } if (frame == null) { payloadPacketOrData.TheByteArraySegment = payload; } else { payloadPacketOrData.ThePacket = frame; } return(payloadPacketOrData); }
/// <summary> /// Used by the Ieee80211PpiPacket constructor. /// </summary> /// <param name="header"> /// A <see cref="ByteArraySegment"/> /// </param> /// <param name="commonField"> /// The <see cref="PpiCommon"/> object in the PPI packet or null if not available /// </param> /// <returns> /// A <see cref="PacketOrByteArraySegment"/> /// </returns> internal static PacketOrByteArraySegment ParseEncapsulatedBytes (ByteArraySegment header, PpiCommon commonField) { // slice off the payload var payload = header.EncapsulatedBytes (); var payloadPacketOrData = new PacketOrByteArraySegment (); MacFrame frame = null; if (commonField != null) { bool fcsPresent = ((commonField.Flags & PpiCommon.CommonFlags.FcsIncludedInFrame) == PpiCommon.CommonFlags.FcsIncludedInFrame); if (fcsPresent) { frame = MacFrame.ParsePacketWithFcs (payload); } else { frame = MacFrame.ParsePacket (payload); } } else { frame = MacFrame.ParsePacket (payload); } if (frame == null) { payloadPacketOrData.TheByteArraySegment = payload; } else { payloadPacketOrData.ThePacket = frame; } return payloadPacketOrData; }