public static ArpData Create(string deviceID, IPAddress ipAddress, MacAddress macAddress, SystemModule module) { var arp = new ArpData(deviceID, ipAddress, macAddress, module); arp._timer = new Timer { Interval = 1000 }; arp._timer.Elapsed += (s, e) => { arp._ttl--; if (arp._ttl == 0) { Log.Write("ArpData", "Timeout", string.Format("ip={0}, mac={1}", arp.IP.StandardFormat, arp.Mac.StandardFormat)); arp._timer.Stop(); module.KillArpData(arp); } }; return arp; }
internal void KillArpData(ArpData arpData) { lock (_arpTable) { Log.Write("SYSTEM", "ARP", "Timing out: " + arpData.IP); _arpTable.Remove(arpData.IP); } }