internal static void IPv4Handler(byte[] packetData) { IPPacket ip_packet = new IPPacket(packetData); //Sys.Console.WriteLine("Received IP Packet"); //Sys.Console.WriteLine(ip_packet.ToString()); 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: // IPv4_TCPHandler(packetData); // break; case 17: UDPPacket.UDPHandler(packetData); break; } } }
/// <summary> /// IPv4 handler. /// </summary> /// <param name="packetData">Packet data.</param> /// <exception cref="sys.ArgumentOutOfRangeException">Thrown on fatal error (contact support).</exception> /// <exception cref="sys.IO.IOException">Thrown on IO error.</exception> /// <exception cref="sys.ArgumentException">Thrown on fatal error (contact support).</exception> /// <exception cref="sys.OverflowException">Thrown if packetData array length is greater than Int32.MaxValue.</exception> internal static void IPv4Handler(byte[] packetData) { var ip_packet = new IPPacket(packetData); if (ip_packet.SourceIP == null) { Global.mDebugger.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)) { DHCPPacket.DHCPHandler(packetData); } }
internal static void IPv4Handler(byte[] packetData) { IPPacket ip_packet = new IPPacket(packetData); //[Received] " + ip_packet.ToString() if (ip_packet.SourceIP == null) { //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); } }