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); } }
internal static void AddPacket(IPPacket packet) { ensureQueueExists(); NetworkDevice nic = Config.FindInterface(packet.SourceIP); packet.SourceMAC = nic.MACAddress; queue.Add(new BufferEntry(nic, packet)); }
public BufferEntry(NetworkDevice nic, IPPacket packet) { this.NIC = nic; this.Packet = packet; if (Packet.DestinationIP.IsBroadcastAddress()) { this.Status = EntryStatus.DHCP_REQUEST; } else { this.Status = EntryStatus.ADDED; } }
protected UInt16 CalcOcCRC(UInt16 offset, UInt16 length) { return(IPPacket.CalcOcCRC(this.RawData, offset, length)); }
internal static void AddPacket(IPPacket packet, NetworkDevice device) { ensureQueueExists(); packet.SourceMAC = device.MACAddress; queue.Add(new BufferEntry(device, packet)); }