Exemplo n.º 1
0
        private IPPacket(HW.Network.MACAddress srcMAC, HW.Network.MACAddress destMAC, UInt16 dataLength, byte protocol,
                         IPv4Address source, IPv4Address dest)
            : base(destMAC, srcMAC, 0x0800, dataLength + 14 + 20)
        {
            mRawData[14]   = 0x45;
            mRawData[15]   = 0;
            ipLength       = (UInt16)(dataLength + 20);
            ipHeaderLength = 5;
            mRawData[16]   = (byte)((ipLength >> 8) & 0xFF);
            mRawData[17]   = (byte)((ipLength >> 0) & 0xFF);
            fragmentID     = TCPIPStack.NextIPFragmentID();
            mRawData[18]   = (byte)((fragmentID >> 8) & 0xFF);
            mRawData[19]   = (byte)((fragmentID >> 0) & 0xFF);
            mRawData[20]   = 0x00;
            mRawData[21]   = 0x00;
            mRawData[22]   = 0x80;
            mRawData[23]   = protocol;
            mRawData[24]   = 0x00;
            mRawData[25]   = 0x00;
            for (int b = 0; b < 4; b++)
            {
                mRawData[26 + b] = source.address[b];
                mRawData[30 + b] = dest.address[b];
            }
            ipCRC        = CalcIPCRC(20);
            mRawData[24] = (byte)((ipCRC >> 8) & 0xFF);
            mRawData[25] = (byte)((ipCRC >> 0) & 0xFF);

            initFields();
        }
Exemplo n.º 2
0
 protected override void initFields()
 {
     base.initFields();
     mSenderMAC = new HW.Network.MACAddress(mRawData, 22);
     mSenderIP  = new IPv4Address(mRawData, 28);
     mTargetMAC = new HW.Network.MACAddress(mRawData, 32);
     mTargetIP  = new IPv4Address(mRawData, 38);
 }
Exemplo n.º 3
0
 protected override void initFields()
 {
     base.initFields();
     mSenderMAC = new HW.Network.MACAddress(mRawData, 22);
     mSenderIP = new IPv4Address(mRawData, 28);
     mTargetMAC = new HW.Network.MACAddress(mRawData, 32);
     mTargetIP = new IPv4Address(mRawData, 38);
 }
Exemplo n.º 4
0
        protected EthernetPacket(HW.Network.MACAddress dest, HW.Network.MACAddress src, UInt16 type, int packet_size)
        {
            mRawData = new byte[packet_size];
            for (int i = 0; i < 6; i++)
            {
                mRawData[i]     = dest.bytes[i];
                mRawData[6 + i] = src.bytes[i];
            }

            mRawData[12] = (byte)(type >> 8);
            mRawData[13] = (byte)(type >> 0);
            initFields();
        }
Exemplo n.º 5
0
        protected ARPPacket(HW.Network.MACAddress dest, HW.Network.MACAddress src, UInt16 hwType, UInt16 protoType,
                            byte hwLen, byte protoLen, UInt16 operation, int packet_size)
            : base(dest, src, 0x0806, packet_size)
        {
            mRawData[14] = (byte)(hwType >> 8);
            mRawData[15] = (byte)(hwType >> 0);
            mRawData[16] = (byte)(protoType >> 8);
            mRawData[17] = (byte)(protoType >> 0);
            mRawData[18] = hwLen;
            mRawData[19] = protoLen;
            mRawData[20] = (byte)(operation >> 8);
            mRawData[21] = (byte)(operation >> 0);

            initFields();
        }
Exemplo n.º 6
0
        protected ARPPacket_EthernetIPv4(UInt16 operation, HW.Network.MACAddress senderMAC, IPv4Address senderIP,
                                         HW.Network.MACAddress targetMAC, IPv4Address targetIP, int packet_size)
            : base(targetMAC, senderMAC, 1, 0x0800, 6, 4, operation, packet_size)
        {
            for (int i = 0; i < 6; i++)
            {
                mRawData[22 + i] = senderMAC.bytes[i];
                mRawData[32 + i] = targetMAC.bytes[i];
            }
            for (int i = 0; i < 4; i++)
            {
                mRawData[28 + i] = senderIP.address[i];
                mRawData[38 + i] = targetIP.address[i];
            }

            initFields();
        }
Exemplo n.º 7
0
        public static void Update(IPv4Address ipAddress, HW.Network.MACAddress macAddress)
        {
            ensureCacheExists();
            UInt32 ip_hash = ipAddress.To32BitNumber();

            if (ip_hash == 0)
            {
                return;
            }

            if (cache.ContainsKey(ip_hash) == false)
            {
                cache.Add(ip_hash, macAddress);
            }
            else
            {
                cache[ip_hash] = macAddress;
            }
        }
Exemplo n.º 8
0
 protected virtual void initFields()
 {
     destMAC = new HW.Network.MACAddress(mRawData, 0);
     srcMAC = new HW.Network.MACAddress(mRawData, 6);
     aEtherType = (UInt16)((mRawData[12] << 8) | mRawData[13]);
 }
Exemplo n.º 9
0
 internal ARPRequest_EthernetIPv4(HW.Network.MACAddress ourMAC, IPv4Address ourIP, HW.Network.MACAddress targetMAC, IPv4Address targetIP)
     : base(1, ourMAC, ourIP, targetMAC, targetIP, 42)
 {
 }
Exemplo n.º 10
0
 protected virtual void initFields()
 {
     destMAC    = new HW.Network.MACAddress(mRawData, 0);
     srcMAC     = new HW.Network.MACAddress(mRawData, 6);
     aEtherType = (UInt16)((mRawData[12] << 8) | mRawData[13]);
 }