public ArpEntry(NetworkInterface intf, byte[] macAddress, UInt32 address, ArpFlags flags) { this._macAddress = macAddress; this._flags = flags; this._address = new IPAddress(address); this._interface = intf; }
/// <summary> /// Modifie une entrée ARP existante. /// </summary> /// <param name="entryToSet">Entrée à modifier.</param> /// <param name="IPInterface">Nouvelle interface.</param> /// <param name="PhysicalAddress">Nouvelle adresse physique (MAC).</param> /// <param name="Address">Nouvelle adresse IP.</param> /// <param name="Flags">Flag ARP.</param> /// <returns></returns> public int ChangeArpEntry(ref ArpEntry entryToSet, int IPInterface, byte[] PhysicalAddress, IPAddress Address, ArpFlags Flags) { int ret = -1; try { MIB_IPNETROW ipArp = entryToSet._ipArpNative; ipArp.dwIndex = IPInterface; ipArp.dwType = Flags; ipArp.dwAddr = (uint)BitConverter.ToInt32(Address.GetAddressBytes(), 0); ipArp.bPhysAddr = PhysicalAddress; ipArp.dwPhysAddrLen = PhysicalAddress.Length; //Appel api pour modifier l'entrée. ret = NativeMethods.SetIpNetEntry(ref ipArp); if (ret == 0) { entryToSet.Index = ipArp.dwIndex; entryToSet.Address = Address; entryToSet.Flags = Flags; entryToSet.MacAddress = PhysicalAddress; entryToSet.RelatedInterface = _adapters.GetAdapter(IPInterface); } } catch (Exception) { } return(ret); }