public IPv4SubnetRange(string cidrNotation) { var networkAddress = IPAddress.Parse(cidrNotation.Split('\\', '/')[0].Trim()); int cidr = int.Parse(cidrNotation.Split('\\', '/')[1].Trim()); var subnetMask = IPv4TypeConverter.ConvertCidrToSubnetMask(cidr); CalculateAndSetValues(networkAddress, subnetMask); }
private void CalculateAndSetValues(IPAddress networkAddress, IPAddress subnetMask) { _networkAddress = networkAddress; _subnetMask = subnetMask; _cidr = IPv4TypeConverter.ConvertSubnetMaskToCidr(subnetMask); var networkAddressInt = networkAddress.ToLong(); var subnetMaskInt = subnetMask.ToLong(); // bxor 1s, inverts only the last 24 bits as opposed to ~ which inverts all the bits in an Int64. var invertedSubnetMaskInt = subnetMaskInt ^ IPAddress.Broadcast.ToLong(); var broadcastAddressInt = networkAddressInt + invertedSubnetMaskInt; BroadcastAddress = IPv4TypeConverter.ConvertNumberToIPv4(broadcastAddressInt); StartRange = IPv4TypeConverter.ConvertNumberToIPv4(networkAddressInt + 1); EndRange = IPv4TypeConverter.ConvertNumberToIPv4(broadcastAddressInt - 1); RangeSize = broadcastAddressInt - networkAddressInt; }
public IPv4SubnetRange(IPAddress networkAddress, int cidr) { var subnetMask = IPv4TypeConverter.ConvertCidrToSubnetMask(cidr); CalculateAndSetValues(networkAddress, subnetMask); }