コード例 #1
0
ファイル: ArpEntry.cs プロジェクト: gerzoid/RouteShow
        public ArpEntry(NetworkInterface intf, byte[] macAddress, UInt32 address, ArpFlags flags)
        {
            this._macAddress = macAddress;
            this._flags      = flags;
            this._address    = new IPAddress(address);

            this._interface = intf;
        }
コード例 #2
0
        /// <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);
        }