Exemple #1
0
 private bool CompareOnSuperset(IPBinary ip1, IPBinary ip2)
 {
     for (var i = 0; i < ip2.Mask; i++)
     {
         if (ip1.Prefix[i] != ip2.Prefix[i])
         {
             return(false);
         }
     }
     return(true);
 }
Exemple #2
0
        public CIDRComparatorResult CompareCidr(string a, string b)
        {
            var result = CIDRComparatorResult.None;

            var ipA = new IPBinary(a);
            var ipB = new IPBinary(b);

            if (ipA.Prefix == null || ipB.Prefix == null)
            {
                return(result);
            }

            result = CIDRComparatorResult.Disjoint;

            if (ipA.Mask == ipB.Mask)
            {
                if (CompareOnEquals(ipA, ipB))
                {
                    result = CIDRComparatorResult.Equals;
                }
            }
            else if (ipA.Mask > ipB.Mask)
            {
                if (CompareOnSubset(ipA, ipB))
                {
                    result = CIDRComparatorResult.Subset;
                }
            }
            else if (ipA.Mask < ipB.Mask)
            {
                if (CompareOnSuperset(ipA, ipB))
                {
                    result = CIDRComparatorResult.Superset;
                }
            }

            return(result);
        }