Exemplo n.º 1
0
        internal static void IPv4Handler(byte[] packetData)
        {
            IPPacket ip_packet = new IPPacket(packetData);

            Apps.System.Debugger.debugger.Send("[Received] " + ip_packet.ToString());
            if (ip_packet.SourceIP == null)
            {
                Apps.System.Debugger.debugger.Send("SourceIP null in IPv4Handler!");
            }
            ARPCache.Update(ip_packet.SourceIP, ip_packet.SourceMAC);

            if ((NetworkStack.AddressMap.ContainsKey(ip_packet.DestinationIP.Hash) == true) ||
                (ip_packet.DestinationIP.address[3] == 255))
            {
                switch (ip_packet.Protocol)
                {
                case 1:
                    ICMPPacket.ICMPHandler(packetData);
                    break;

                case 6:
                    TCPPacket.TCPHandler(packetData);
                    break;

                case 17:
                    UDPPacket.UDPHandler(packetData);
                    break;
                }
            }
            else if (NetworkStack.MACMap.ContainsKey(ip_packet.DestinationMAC.Hash))
            {
                DHCP.DHCPPacket.DHCPHandler(packetData);
            }
        }