public static void RandomizeSwitchPortsVlan(SwitchEngine switchEngine) { int numOfUntaggedPorts = switchEngine.Count - 3; List <int> vlansNum = new List <int>(); var rand = new Random(); for (int i = 1; i < (numOfUntaggedPorts * 3); i += 3) { vlansNum.Add(rand.Next(i, i + 3) * 10); } var freePorts = new List <SwitchPort>(); switchEngine.ToList().ForEach(i => freePorts.Add(i)); freePorts.Shuffle(); var a = 0; foreach (var n in vlansNum) { freePorts[a].Untagged.Clear(); freePorts[a].Untagged.Add(n); a++; } var b = 0; foreach (var n in vlansNum) { freePorts[a].Untagged.Clear(); freePorts[a].Untagged.Add(n); a++; b++; if (b == 2) { break; } } freePorts[switchEngine.Count - 2].Untagged.Clear(); freePorts[switchEngine.Count - 2].Tagged.Clear(); foreach (var n in vlansNum) { freePorts[switchEngine.Count - 2].Tagged.Add(n); } b = 0; freePorts[switchEngine.Count - 1].Untagged.Clear(); freePorts[switchEngine.Count - 1].Untagged.Add(vlansNum[0]); foreach (var n in vlansNum) { if (vlansNum[0] != n) { freePorts[switchEngine.Count - 1].Tagged.Add(n); } b++; if (b == 2) { break; } } }
//private readonly InstanceSettings InstanceSettings; private void PopuplateEthernetHosts() { Random random = new Random(); var switchPorts = new List <SwitchPort>(); SwitchEngine.ToList().ForEach(se => switchPorts.Add(se)); int maxNumberOfHosts = 20; int hostCounter = 0; while (hostCounter < maxNumberOfHosts) { var nextSwitchPort = random.Next(0, Math.Max(switchPorts.Count, 1)); var switchPort = switchPorts[nextSwitchPort]; switchPorts.RemoveAt(nextSwitchPort); var vlans = switchPort.GetAvaiableVlans(); var numberOfHosts = maxNumberOfHosts / SwitchEngine.Count(); var numberOfHostUsed = 0; foreach (var vlan in vlans) { var numberOfHostsForVlan = numberOfHosts - numberOfHostUsed; if (vlan != vlans.Last()) { numberOfHostsForVlan = random.Next(1, numberOfHostsForVlan - 1); } numberOfHostUsed += numberOfHostsForVlan; for (int a = 0; a < numberOfHostsForVlan; a++) { var host = Convert.ToChar(65 + hostCounter); EthernetHosts.Add(new EthernetHost(host.ToString(), vlan, switchPort)); UsedMacAddresses.Add(host.ToString()); hostCounter++; } } if (switchPorts.Count == 0) { break; } } }