public static bool Contains(this IIpRange range, IPAddress address) { if (address.AddressFamily != range.Start.AddressFamily) { return(false); } var lowerBytes = range.Start.GetAddressBytes(); var upperBytes = range.End.GetAddressBytes(); var addressBytes = address.GetAddressBytes(); bool lowerBoundary = true, upperBoundary = true; for (var i = 0; i < lowerBytes.Length && (lowerBoundary || upperBoundary); i++) { if ((lowerBoundary && addressBytes[i] < lowerBytes[i]) || (upperBoundary && addressBytes[i] > upperBytes[i])) { return(false); } lowerBoundary &= (addressBytes[i] == lowerBytes[i]); upperBoundary &= (addressBytes[i] == upperBytes[i]); } return(true); }
public static DbIPRange FromOther(IIpRange range) { return(new DbIPRange(range.Start, range.End)); }