예제 #1
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bas">
        /// A <see cref="ByteArraySegment"/>
        /// </param>
        public GREPacket(ByteArraySegment bas, Packet ParentPacket)
        {
            // slice off the header portion
            this.header = new ByteArraySegment(bas);

            this.header.Length = GREFields.FlagsLength + GREFields.ProtocolLength;
            if (this.HasCheckSum)
            {
                this.header.Length += GREFields.ChecksumLength;
            }
            if (this.HasReserved)
            {
                this.header.Length += GREFields.ReservedLength;
            }
            if (this.HasKey)
            {
                this.header.Length += GREFields.KeyLength;
            }
            if (this.HasSequence)
            {
                this.header.Length += GREFields.SequenceLength;
            }

            // parse the encapsulated bytes
            this.payloadPacketOrData = EthernetPacket.ParseEncapsulatedBytes(this.header, this.Protocol);
            this.ParentPacket        = ParentPacket;
        }
예제 #2
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bas">A <see cref="ByteArraySegment" /></param>
        /// <param name="parentPacket">The parent packet.</param>
        public GREPacket(ByteArraySegment bas, Packet parentPacket)
        {
            // slice off the header portion
            // ReSharper disable once UseObjectOrCollectionInitializer
            Header        = new ByteArraySegment(bas);
            Header.Length = GREFields.FlagsLength + GREFields.ProtocolLength;
            if (HasCheckSum)
            {
                Header.Length += GREFields.ChecksumLength;
            }
            if (HasReserved)
            {
                Header.Length += GREFields.ReservedLength;
            }
            if (HasKey)
            {
                Header.Length += GREFields.KeyLength;
            }
            if (HasSequence)
            {
                Header.Length += GREFields.SequenceLength;
            }

            // parse the encapsulated bytes
            PayloadPacketOrData = new Lazy <PacketOrByteArraySegment>(() => EthernetPacket.ParseEncapsulatedBytes(Header, Protocol), LazyThreadSafetyMode.PublicationOnly);
            ParentPacket        = parentPacket;
        }
예제 #3
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="bas">
        ///     A <see cref="ByteArraySegment" />
        /// </param>
        public LinuxSLLPacket(ByteArraySegment bas)
        {
            this.header        = new ByteArraySegment(bas);
            this.header.Length = LinuxSLLFields.SLLHeaderLength;

            // parse the payload via an EthernetPacket method
            this.payloadPacketOrData = EthernetPacket.ParseEncapsulatedBytes(this.header, this.EthernetProtocolType);
        }
예제 #4
0
        /// <summary>
        ///     Constructor
        /// </summary>
        /// <param name="bas">
        ///     A <see cref="ByteArraySegment" />
        /// </param>
        public Ieee8021QPacket(ByteArraySegment bas)
        {
            // set the header field, header field values are retrieved from this byte array
            this.header        = new ByteArraySegment(bas);
            this.header.Length = Ieee8021QFields.HeaderLength;

            // parse the payload via an EthernetPacket method
            this.payloadPacketOrData = EthernetPacket.ParseEncapsulatedBytes(this.header, this.Type);
        }
예제 #5
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bas">
        /// A <see cref="ByteArraySegment" />
        /// </param>
        public LinuxSLLPacket(ByteArraySegment bas)
        {
            Header        = new ByteArraySegment(bas);
            Header.Length = LinuxSLLFields.SLLHeaderLength;

            // parse the payload via an EthernetPacket method
            PayloadPacketOrData = new Lazy <PacketOrByteArraySegment>(() => EthernetPacket.ParseEncapsulatedBytes(Header,
                                                                                                                  EthernetProtocolType));
        }
예제 #6
0
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bas">
        /// A <see cref="ByteArraySegment" />
        /// </param>
        public Ieee8021QPacket(ByteArraySegment bas)
        {
            // set the header field, header field values are retrieved from this byte array
            Header        = new ByteArraySegment(bas);
            Header.Length = Ieee8021QFields.HeaderLength;

            // parse the payload via an EthernetPacket method
            PayloadPacketOrData = new Lazy <PacketOrByteArraySegment>(() => EthernetPacket.ParseEncapsulatedBytes(Header,
                                                                                                                  Type), LazyThreadSafetyMode.PublicationOnly);
        }
        /// <summary>
        /// Constructor
        /// </summary>
        /// <param name="bas">
        /// A <see cref="ByteArraySegment"/>
        /// </param>
        public Ieee8021QPacket(ByteArraySegment bas)
        {
            // set the header field, header field values are retrieved from this byte array
            header = new ByteArraySegment(bas);
            RandomUtils.EnsurePacketLength(this, Ieee8021QFields.HeaderLength, header.Length);
            header.Length = Ieee8021QFields.HeaderLength;

            // parse the payload via an EthernetPacket method
            payloadPacketOrData = EthernetPacket.ParseEncapsulatedBytes(header,
                                                                        Type);
        }
예제 #8
0
 public LinuxSLLPacket(byte[] Bytes, int Offset, PosixTimeval Timeval) : base(Timeval)
 {
     base.header = new ByteArraySegment(Bytes, Offset, LinuxSLLFields.SLLHeaderLength);
     base.payloadPacketOrData = EthernetPacket.ParseEncapsulatedBytes(base.header, this.EthernetProtocolType, Timeval);
 }