/// <summary> /// Initialize network range. /// </summary> /// <param name="networkAddr">Network address.</param> /// <param name="broadcastAddr">Broadcast address.</param> /// <param name="prefix">Prefix number is less than 32.</param> /// <param name="subnetBit">Borrowed bits.</param> /// <param name="ipClass">Class of IPv4 address.</param> public NetworkRange(IPv4Address networkAddr, IPv4Address broadcastAddr, int prefix, int subnetBit, IPv4Class ipClass) { NetworkIDAddress = networkAddr; Prefix = prefix; SubnetBit = subnetBit; Class = ipClass; }
public static string ToSubnetBitmap(string binary, int prefix, int subnetBit, IPv4Class ipClass) { StringBuilder subnetBitmap = new StringBuilder(binary); for (int i = 31; i > 0; i--) { if (i > prefix + subnetBit - 1) subnetBitmap[i] = 'H'; else if (i > prefix - 1) subnetBitmap[i] = 'S'; else if (i > 2 || (i == 2 && ipClass < IPv4Class.C) || (i == 1 && ipClass < IPv4Class.B)) subnetBitmap[i] = 'N'; } return AddDotSeparator(subnetBitmap.ToString()); }
/// <summary> /// Initialize subnet mask with IPv4 class. /// </summary> /// <param name="ipClass">IPv4 class.</param> public SubnetMask(IPv4Class ipClass = IPv4Class.A) { switch (ipClass) { case IPv4Class.A: Prefix = 8; break; case IPv4Class.B: Prefix = 16; break; case IPv4Class.C: Prefix = 24; break; default: Prefix = 32; break; } }
private static string ToFirstOctetRange(IPv4Class ipClass) { switch (ipClass) { case IPv4Class.A: return "1 - 127"; case IPv4Class.B: return "128 - 191"; case IPv4Class.C: return "192 - 223"; case IPv4Class.D: return "224 - 239"; case IPv4Class.E: return "240 - 255"; default: return null; } }
private static string ToClass(IPv4Class ipClass) { switch (ipClass) { case IPv4Class.A: return "A"; case IPv4Class.B: return "B"; case IPv4Class.C: return "C"; case IPv4Class.D: return "D"; case IPv4Class.E: return "E"; default: return null; } }
/// <summary> /// Convert IPv4Class to default prefix number. /// </summary> /// <param name="ipClass">IPv4 class.</param> /// <returns></returns> public static int ToPrefix(IPv4Class ipClass) { switch (ipClass) { case IPv4Class.A: return 8; case IPv4Class.B: return 16; case IPv4Class.C: return 24; case IPv4Class.D: return 32; case IPv4Class.E: return 32; default: return 0; } }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="addr">A string of IPv4 address. It looks like 192.168.0.0.</param> /// <param name="prefix">An integer number less than 32.</param> /// <param name="ipClass">Class of IPv4 address.</param> public IPv4Address(string addr, int prefix, IPv4Class ipClass) : base(addr) { _mask = new NetworkMask(prefix); _class = ipClass; }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="addr">A string of IPv4 address. It looks like 192.168.0.0.</param> /// <param name="prefix">An integer number less than 32.</param> public IPv4Address(string addr, int prefix) : base(addr) { _mask = new NetworkMask(prefix); _class = ToNetworkClass(_octet); }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="addr">A string of IPv4 address. It looks like 192.168.0.0.</param> /// <param name="subnetMask">A string of subnet mask of IPv4 address. It looks like 255.255.255.0.</param> /// <param name="ipClass">Class of IPv4 address.</param> public IPv4Address(string addr, string subnetMask, IPv4Class ipClass) : base(addr) { _mask = new NetworkMask(subnetMask); _class = ipClass; }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="addr">A string of IPv4 address. It looks like 192.168.0.0.</param> /// <param name="subnetMask">A string of subnet mask of IPv4 address. It looks like 255.255.255.0.</param> public IPv4Address(string addr, string subnetMask) : base(addr) { _mask = new NetworkMask(subnetMask); _class = ToNetworkClass(_octet); }
/// <summary> /// Sets address with decimal value of octets. /// </summary> /// <param name="octet1">The first octet.</param> /// <param name="octet2">The second octet.</param> /// <param name="octet3">The third octet.</param> /// <param name="octet4">The fourth octet.</param> public override void SetAddress(int octet1, int octet2, int octet3, int octet4) { base.SetAddress(octet1, octet2, octet3, octet4); _mask = new NetworkMask(_octet); _class = ToNetworkClass(_octet); }
/// <summary> /// Initialize IPv4 address with IPv4 class. /// </summary> /// <param name="ipClass">Class of IPv4 address.</param> public IPv4Address(IPv4Class ipClass) { _class = ipClass; switch (_class) { case IPv4Class.A: Octet = ToOctet(1, 0, 0, 0); _mask = new NetworkMask(8); break; case IPv4Class.B: Octet = ToOctet(128, 0, 0, 0); _mask = new NetworkMask(16); break; case IPv4Class.C: Octet = ToOctet(192, 0, 0, 0); _mask = new NetworkMask(24); break; case IPv4Class.D: Octet = ToOctet(224, 0, 0, 0); _mask = new NetworkMask(32); break; case IPv4Class.E: Octet = ToOctet(240, 0, 0, 0); _mask = new NetworkMask(32); break; default: break; } }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="addr">An array of octet of IPv4 address.</param> /// <param name="subnetMask">Subnet mask of IPv4 address.</param> /// <param name="ipClass">Class of IPv4 address.</param> public IPv4Address(Octet[] addr, SubnetMask subnetMask, IPv4Class ipClass) { Octet = addr; _mask = new NetworkMask(subnetMask); _class = ipClass; }
/// <summary> /// Initialize IPv4 address /// </summary> /// <param name="octet1">The first octet.</param> /// <param name="octet2">The second octet.</param> /// <param name="octet3">The third octet.</param> /// <param name="octet4">The fourth octet.</param> public IPv4Address(int octet1, int octet2, int octet3, int octet4) : base(octet1, octet2, octet3, octet4) { _mask = new NetworkMask(_octet); _class = ToNetworkClass(_octet); }