コード例 #1
0
        private void InvalidateUnreachable()
        {
            RouteTable.mutex.WaitOne();
            var routeList = RouteTable.AsNormalList();

            for (int i = 0; i < RouteTable.Count; i++)
            {
                var  entry          = RouteTable[i];
                bool gatewayValid   = false;
                var  ownIpConverted = ConvertFromIpAddressToInteger(OwnIP);
                foreach (var e in routeList)
                {
                    if (entry.Gateway == e.Ip && e.Cost <= MaxHopCount)
                    {
                        gatewayValid = true;
                    }
                    if (entry.Gateway == ownIpConverted)
                    {
                        gatewayValid = true;
                    }
                }
                if (!gatewayValid)
                {
                    entry.Cost = MaxHopCount + 1;
                }
            }
            RouteTable.mutex.ReleaseMutex();
        }