Esempio n. 1
0
 public IPv4PrefixMapSearchResult(int thread, uint address, IPv4Prefix prefix, int counter)
 {
     Thread  = thread;
     Address = address;
     Prefix  = prefix;
     Counter = counter;
 }
Esempio n. 2
0
        public void ParsePrefix()
        {
            var testPrefix = settings.Value.TestPrefix;
            var testCount  = settings.Value.TestCount;

            IPv4Prefix x = IPv4Prefix.Parse(testPrefix);

            Console.WriteLine($"Test: {IPv4.ConvertToBitString(x.IP)} {x.ToString()} [ParsePrefix prefix:{testPrefix}]");

            var sw = Stopwatch.StartNew();

            for (int i = 0; i < testCount; i++)
            {
                _ = IPv4.ParsePrefix(testPrefix);
            }
            Console.WriteLine($" - {sw.ElapsedMilliseconds} ms");
        }
Esempio n. 3
0
        public async Task <IPv4PrefixMap> RetrieveIPv4PrefixMap()
        {
            IPv4PrefixMap value;
            var           networkMapPath = settings.Value.NetworkMapPath;

            var sw = Stopwatch.StartNew();

            if (File.Exists(networkMapPath) && (DateTime.Now - File.GetLastWriteTime(networkMapPath)).TotalDays < 7)
            {
                value = await IPv4PrefixMap.ReadFile(networkMapPath);

                Console.WriteLine($" - Prefix map deserialization completed ({sw.ElapsedMilliseconds} ms)");
            }
            else
            {
                //TODO: Convert to PLINQ expression?
                var awsRangeTask   = Task.Run(() => services.GetRequiredService <IAwsRangeClient>().GetAwsIPRange());
                var azureRangeTask = Task.Run(() => services.GetRequiredService <IAzureRangeClient>().GetAzureIPRange());
                Task.WaitAll(new Task[] { awsRangeTask, azureRangeTask });
                Console.WriteLine($" - Downloading IP Ranges completed ({sw.ElapsedMilliseconds} ms)");
                sw.Restart();

                var awsPrefixes   = awsRangeTask.Result.IPv4Prefixes.Select(x => x.Prefix);
                var azurePrefixes = azureRangeTask.Result.Services.SelectMany(x => x.Value.AddressPrefixes.Select(IPv4Prefix.SetMaskFlag));
                var prefixes      = IPv4Prefix.Consolidate(awsPrefixes.Union(azurePrefixes)).ToList();
                value = new IPv4PrefixMap(prefixes);
                Console.WriteLine($" - Constructing prefix map completed ({sw.ElapsedMilliseconds} ms)");
                sw.Restart();

                await value.WriteFile(networkMapPath);

                Console.WriteLine($" - Prefix map serialization completed ({sw.ElapsedMilliseconds} ms)");
            }

            return(value);
        }