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(); }
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(); }
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(); }
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(); }
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; } }
internal ARPRequest_EthernetIPv4(HW.Network.MACAddress ourMAC, IPv4Address ourIP, HW.Network.MACAddress targetMAC, IPv4Address targetIP) : base(1, ourMAC, ourIP, targetMAC, targetIP, 42) { }
public BufferEntry(HW.Network.NetworkDevice nic, IPPacket packet) { this.NIC = nic; this.Packet = packet; this.Status = EntryStatus.ADDED; }
/// <summary> /// Configure the IP address setup for a given network card /// </summary> /// <param name="nic">Network Device to configure</param> /// <param name="config">Configuration</param> public static void ConfigIP(HW.Network.NetworkDevice nic, IPv4Config config) { addressMap.Add(config.IPAddress.To32BitNumber(), nic); ipConfigs.Add(config); nic.DataReceived += HandlePacket; }