Exemplo n.º 1
0
        public override byte[] GetBytes()
        {
            int len = Length;

            byte[] ret     = new byte[len];
            int    counter = 0;

            NetLib.WriteUInt16(ret, ref counter, SourcePort);
            NetLib.WriteUInt16(ret, ref counter, DestinationPort);
            NetLib.WriteUInt32(ret, ref counter, SequenceNumber);
            NetLib.WriteUInt32(ret, ref counter, AcknowledgementNumber);
            NetLib.WriteByte08(ret, ref counter, dataOffsetAndNS_Flag);
            NetLib.WriteByte08(ret, ref counter, flags);
            NetLib.WriteUInt16(ret, ref counter, WindowSize);
            NetLib.WriteUInt16(ret, ref counter, checksum);
            NetLib.WriteUInt16(ret, ref counter, urgentPointer);

            //options
            for (int i = 0; i < Options.Count; i++)
            {
                NetLib.WriteByteArray(ret, ref counter, Options[i].GetBytes());
            }
            counter = headerLength;
            NetLib.WriteByteArray(ret, ref counter, data);
            return(ret);
        }
Exemplo n.º 2
0
        public override byte[] GetBytes()
        {
            byte[] ret     = new byte[Length];
            int    counter = 0;

            NetLib.WriteByte08(ret, ref counter, Code);
            NetLib.WriteByte08(ret, ref counter, (byte)(Length - 2));
            NetLib.WriteUInt32(ret, ref counter, IPRebindingTimeT2);
            return(ret);
        }
Exemplo n.º 3
0
        public override byte[] GetBytes()
        {
            byte[] ret     = base.GetBytes();
            int    counter = base.Length;

            NetLib.WriteUInt32(ret, ref counter, ttl);
            NetLib.WriteUInt16(ret, ref counter, (UInt16)data.Length);
            NetLib.WriteByteArray(ret, ref counter, data);
            return(ret);
        }
Exemplo n.º 4
0
        public override byte[] GetBytes()
        {
            byte[] ret     = new byte[Length];
            int    counter = 0;

            NetLib.WriteByte08(ret, ref counter, Code);
            NetLib.WriteByte08(ret, ref counter, Length);
            NetLib.WriteUInt32(ret, ref counter, SenderTimeStamp);
            NetLib.WriteUInt32(ret, ref counter, EchoTimeStamp);
            return(ret);
        }
Exemplo n.º 5
0
        public byte[] GetBytes(UInt16 MaxLen)
        {
            //int len = 576; //Min size;
            //We will create a message of the min size and hop it fits.
            //byte[] ret = new byte[240]; //Fixed size section
            byte[] ret     = new byte[MaxLen];
            int    counter = 0;

            NetLib.WriteByte08(ret, ref counter, OP);
            NetLib.WriteByte08(ret, ref counter, HardwareType);
            NetLib.WriteByte08(ret, ref counter, HardwareAddressLength);
            NetLib.WriteByte08(ret, ref counter, Hops);

            NetLib.WriteUInt32(ret, ref counter, TransactionID);

            NetLib.WriteUInt16(ret, ref counter, Seconds);
            NetLib.WriteUInt16(ret, ref counter, Flags);

            NetLib.WriteByteArray(ret, ref counter, ClientIP);
            NetLib.WriteByteArray(ret, ref counter, YourIP);
            NetLib.WriteByteArray(ret, ref counter, ServerIP);
            NetLib.WriteByteArray(ret, ref counter, GatewayIP);

            NetLib.WriteByteArray(ret, ref counter, ClientHardwareAddress);
            //empty bytes
            NetLib.WriteByteArray(ret, ref counter, new byte[64]);
            NetLib.WriteByteArray(ret, ref counter, new byte[128]);

            NetLib.WriteUInt32(ret, ref counter, MagicCookie);

            //const UInt16 minOpLength = 64;
            //UInt16 OpLength = minOpLength;
            //byte[] retOp = new byte[minOpLength];
            //int opOffset = 0;
            for (int i = 0; i < Options.Count; i++)
            {
                NetLib.WriteByteArray(ret, ref counter, Options[i].GetBytes());
            }

            ////byte[] RetFinal = new byte[OpLength+240];
            //byte[] RetFinal = new byte[MaxLen];
            //Utils.memcpy(ref RetFinal, 0, ret, 0, 240);
            //Utils.memcpy(ref RetFinal, 240, retOp, 0, OpLength);
            //return RetFinal;
            return(ret);
        }