Exemplo n.º 1
0
        private void InterfaceChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
        {
            if (sender is Interface myInterface)
            {
                Routes.RemoveAll(record => record.Interface != null && record.Interface.Equals(myInterface));

                if (myInterface.IsActive)
                {
                    var route = new Route(Route.RouteType.Connected)
                    {
                        Interface      = myInterface,
                        NetworkAddress = myInterface.NetworkAddress,
                        NetworkMask    = myInterface.NetworkMask
                    };

                    Routes.Add(route);

                    if (route.NetworkAddress != null && route.Interface != null)
                    {
                        ArpTable[route.NetworkAddress] = new ArpRecord(route.NetworkAddress, myInterface.MacAddress, true);
                    }


                    RouterChange?.Invoke(this, null);
                }
            }
        }
Exemplo n.º 2
0
        private void PacketArrival(object sender, EthernetPacket eth)
        {
            var myInterface = (Interface)sender;

            var arp = eth.Extract <ArpPacket>();

            if (arp != null)
            {
                var protocol = new ArpProtocol(this, CurrentApp.Logging);
                protocol.Process(myInterface, arp);
                RouterChange?.Invoke(this, null);
                return;
            }

            if (!eth.DestinationHardwareAddress.Equals(myInterface.MacAddress) && !eth.DestinationHardwareAddress.Equals(PhysicalAddress.Parse("01-00-5E-00-00-09")))
            {
                return;
            }

            var ip = eth.Extract <IPPacket>();

            if (ip != null)
            {
                var protocol = new IpProtocol(this, CurrentApp.Logging);
                protocol.Process(myInterface, ip);
            }
        }
Exemplo n.º 3
0
        private void InterfaceChanged(object sender, PropertyChangedEventArgs propertyChangedEventArgs)
        {
            if (sender is Interface myInterface)
            {
                try
                {
                    Routes.Remove(Routes.Single(
                                      record => record.Interface != null && record.Interface.Equals(myInterface))
                                  );
                }
                catch (InvalidOperationException e)
                {
                }

                if (myInterface.IsActive)
                {
                    var route = new Route(Route.RouteType.Connected)
                    {
                        Interface      = myInterface,
                        NetworkAddress = myInterface.NetworkAddress.GetNetworkAddress(myInterface.NetworkMask),
                        NetworkMask    = myInterface.NetworkMask
                    };

                    Routes.Add(route);

                    if (myInterface.NetworkAddress != null)
                    {
                        ArpTable[myInterface.NetworkAddress] = new ArpRecord(myInterface.NetworkAddress, myInterface.MacAddress, true);
                    }

                    RouterChange?.Invoke(this, null);
                }
            }
        }
Exemplo n.º 4
0
 private void ClockTickEvent(object source, ElapsedEventArgs e)
 {
     RouterChange?.Invoke(this, null);
 }