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(); }