public EthernetFrame RandomEthernetFrame(SwitchEngine switchEngine) { Random rand = new Random(); var ethernetHostsShuffeld = new List <EthernetHost>(EthernetHosts.ToArray <EthernetHost>()); ethernetHostsShuffeld.Shuffle(); var sourceHost = ethernetHostsShuffeld[0]; var possibleDestHosts = EthernetHosts.Where(e => e.vlan == sourceHost.vlan && e != sourceHost).ToList(); possibleDestHosts.Shuffle(); var destHost = possibleDestHosts[0]; //sourceHost.vlan int?vlan = null; if (sourceHost.AttachedToPort.IsVlanTagged(sourceHost.vlan)) { vlan = sourceHost.vlan; } return(new EthernetFrame(sourceHost, destHost.MAC, vlan, ContentsToUse[rand.Next(ContentsToUse.Count())])); }
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; } } }
public MainWindow(InstanceSettings settings) { InitializeComponent(); switchEngine = new SwitchEngine(6); if (settings.UseVLAN) { GameEngine.RandomizeSwitchPortsVlan(switchEngine); } gameEngine = new GameEngine(switchEngine); switchEngine[0].AttachToGrid(mainGrid, 10, 10, settings.UseVLAN); switchEngine[1].AttachToGrid(mainGrid, 10, 180, settings.UseVLAN); switchEngine[2].AttachToGrid(mainGrid, 10, 350, settings.UseVLAN); switchEngine[3].AttachToGrid(mainGrid, 600, 10, settings.UseVLAN); switchEngine[4].AttachToGrid(mainGrid, 600, 180, settings.UseVLAN); switchEngine[5].AttachToGrid(mainGrid, 600, 350, settings.UseVLAN); this.Title += $" {Assembly.GetEntryAssembly().GetName().Version}"; }
public GameEngine(SwitchEngine switchEngine /*, InstanceSettings instanceSettings*/) { SwitchEngine = switchEngine; //InstanceSettings = instanceSettings; this.PopuplateEthernetHosts(); }