public void IPPrefixTest() { var testIPPrefix = new IPPrefix(IpPrefixType.Azure, "NA", "192.168.0.1/24"); Assert.AreEqual(testIPPrefix.ReadableIP, "192.168.0.1"); Assert.AreEqual(testIPPrefix.Mask, 24); }
public void BetweenSimpleTest() { var lowerBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.0.0/24"); var upperBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.2.0/24"); var result = Generator.GetPrefixesBetween(lowerBound, upperBound); Assert.AreEqual(result.ReadableIP, "192.168.1.0"); Assert.AreEqual(result.Mask, 24); }
internal static IPPrefix FindPrefix(IPPrefix p_inputPrefix) { var containingPrefix = new IPPrefix(); var webGen = new WebGenerator(); // Load the XML file into ranges //List<IPPrefix> ipPrefixes = Downloader.Download(); List <IPPrefix> ipPrefixes = webGen.CachedList; containingPrefix = Generator.GetContainingPrefix(p_inputPrefix, ipPrefixes); return(containingPrefix); }
static void Main(string[] args) { // Variable declaration List <IPPrefix> ipPrefixesInput = new List <IPPrefix>(); List <IPPrefix> ipPrefixesOutput = new List <IPPrefix>(); // Load the XML file into ranges ipPrefixesInput = Downloader.Download(); // add default private network prefixes //ipPrefixesInput.Add(new IPPrefix("0.0.0.0/8")); //ipPrefixesInput.Add(new IPPrefix("10.0.0.0/8")); //ipPrefixesInput.Add(new IPPrefix("172.16.0.0/12")); //ipPrefixesInput.Add(new IPPrefix("169.254.0.0/16")); //ipPrefixesInput.Add(new IPPrefix("192.168.0.0/16")); //ipPrefixesInput.Add(new IPPrefix("224.0.0.0/3")); //Generator.Dedupe(ipPrefixesInput); //ipPrefixesOutput ipPrefixesOutput = Generator.Summarize(ipPrefixesInput); var testPrefix = new IPPrefix("216.32.180.38/31"); var solutionPrefix = Generator.GetContainingPrefix(testPrefix, ipPrefixesOutput); // Order the ranges by increasing network ID //ipPrefixesOutput = Generator.Not(ipPrefixesInput); //foreach (IPPrefix l_currentPrefix in ipPrefixesOutput) //{ // Console.Write(String.Concat(l_currentPrefix.ReadableIP,"/",l_currentPrefix.Mask,"\n")); //} if (solutionPrefix != null) { string prefixLocation; if (solutionPrefix.Region != null) { prefixLocation = solutionPrefix.Region; } else { prefixLocation = solutionPrefix.O365Service; } Console.Write("Found " + testPrefix.ToString() + " in : \n" + solutionPrefix.ToString() + ";" + prefixLocation + "\n"); } else { Console.Write("Unable to find prefix " + testPrefix.ToString() + " in list.\n"); } Console.Write("Done!\n"); Console.ReadKey(); //Debugger.Break(); }
public void ValidateNoOverlap() { var copy = _downloadedContent.Select(item => (IPPrefix)item.Clone()).ToList(); Generator.Dedupe(copy); IPPrefix previousRange = null; foreach (var range in copy.OrderBy(t => t.FirstIP)) { if (previousRange != null) { Assert.IsTrue(previousRange.LastIP < range.FirstIP, range.O365Service + ": " + previousRange.LastIP + " > " + range.FirstIP); } previousRange = range; } }
public void BetweenTwoSubnetTest() { var lowerBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.0.0/24"); var upperBound = new IPPrefix(IpPrefixType.Azure, "na", "192.168.3.0/24"); var result = Generator.GetPrefixesBetween(lowerBound, upperBound); Assert.AreEqual(result.ReadableIP, "192.168.2.0"); Assert.AreEqual(result.Mask, 24); result = Generator.GetPrefixesBetween(lowerBound, result); Assert.AreEqual(result.ReadableIP, "192.168.1.0"); Assert.AreEqual(result.Mask, 24); Assert.AreEqual(result.ReadableMask, "255.255.255.0"); result = Generator.GetPrefixesBetween(lowerBound, result); Assert.IsNull(result); }
// GET api/<controller> public IEnumerable <string> Get([FromUri] string inputIP) { try { // try to resolve the IP address IPAddress[] ipAddList = Dns.GetHostAddresses(inputIP); // String to build output var resultstring = inputIP + " resolves to ..." + System.Environment.NewLine; // Look for each IP under the hostname... foreach (var ipAdd in ipAddList) { var inputPrefix = new IPPrefix(ipAdd.ToString() + "/32"); var outputPrefix = FindPrefixHelper.FindPrefix(inputPrefix); if (outputPrefix != null) { string prefixLocation = string.Empty; // Check if it's part of an Azure region or O365 service if (outputPrefix.Region != null) { prefixLocation = " in region " + outputPrefix.Region; } else { prefixLocation = " in Office 365 service " + outputPrefix.O365Service; } //Build the string result resultstring += (inputPrefix.ToString() + " is part of " + outputPrefix.ToString() + prefixLocation + System.Environment.NewLine); } else { resultstring += (inputPrefix.ToString() + " but isn't part of our prefix lists." + System.Environment.NewLine); } } return(new string[] { resultstring }); } catch (Exception ex) { return(new string[] { "Invalid IP address or hostname : " + ex.Message }); } }
public void ValidateNoGapsTest() { var copy = _downloadedContent.Select(item => (IPPrefix)item.Clone()).ToList(); Generator.Dedupe(copy); var results = Generator.Not(copy); results.AddRange(copy); IPPrefix previousRange = null; foreach (var range in results.OrderBy(t => t.FirstIP)) { if (previousRange != null) { Assert.AreEqual(previousRange.LastIP + 1, range.FirstIP); } previousRange = range; } }