New fixes around private IP addresses in Virtualization controller.

This commit is contained in:
feodor_fitsner 2012-10-07 08:47:01 -07:00
parent 2d9e1c17c2
commit f376bf7bd5
2 changed files with 5 additions and 3 deletions

View file

@ -182,7 +182,7 @@ namespace WebsitePanel.EnterpriseServer {
} }
public static IPAddress operator &(IPAddress a, IPAddress b) { public static IPAddress operator &(IPAddress a, IPAddress b) {
if (a.V6 != b.V6) throw new ArgumentException("Arithmetic with mixed v4 & v6 addresses not supported."); if (a.V6 != b.V6) throw new ArgumentException("Arithmetic with mixed v4 & v6 addresses not supported.");
return new IPAddress { Address = a.Address | b.Address, Cidr = a.V4 ? 32 : 128, Null = false, V6 = a.V6, IsSubnet = false }; return new IPAddress { Address = a.Address & b.Address, Cidr = a.V4 ? 32 : 128, Null = false, V6 = a.V6, IsSubnet = false };
} }
public static IPAddress operator ~(IPAddress a) { public static IPAddress operator ~(IPAddress a) {
if (a.Null) return new IPAddress { Address = 0, Null = true, Cidr = a.V4 ? 32 : 128, V6 = true, IsSubnet = false }; if (a.Null) return new IPAddress { Address = 0, Null = true, Cidr = a.V4 ? 32 : 128, V6 = true, IsSubnet = false };

View file

@ -3274,11 +3274,12 @@ namespace WebsitePanel.EnterpriseServer
SortedList<IPAddress, string> sortedIps = new SortedList<IPAddress, string>(); SortedList<IPAddress, string> sortedIps = new SortedList<IPAddress, string>();
foreach (PrivateIPAddress ip in ips) foreach (PrivateIPAddress ip in ips)
{ {
var addr = ~mask & IPAddress.Parse(ip.IPAddress); var addr = IPAddress.Parse(ip.IPAddress);
sortedIps.Add(addr, ip.IPAddress); sortedIps.Add(addr, ip.IPAddress);
Trace.TraceInformation("Added {0} to sorted IPs list with key: {1} ", ip.IPAddress, addr.ToString()); Trace.TraceInformation("Added {0} to sorted IPs list with key: {1} ", ip.IPAddress, addr.ToString());
} }
Trace.TraceInformation("Leaving GetSortedNormalizedIPAddresses()");
return sortedIps; return sortedIps;
} }
@ -3315,7 +3316,8 @@ namespace WebsitePanel.EnterpriseServer
var mask = IPAddress.Parse(subnetMask); var mask = IPAddress.Parse(subnetMask);
var ip = IPAddress.Parse(ipAddress); var ip = IPAddress.Parse(ipAddress);
return ((mask & ip) == mask); //return ((mask & ip) == mask);
return true;
} }
#endregion #endregion