diff --git a/EduNetworkBuilder/NB.cs b/EduNetworkBuilder/NB.cs index 977d18b..50ab88c 100644 --- a/EduNetworkBuilder/NB.cs +++ b/EduNetworkBuilder/NB.cs @@ -91,7 +91,7 @@ namespace EduNetworkBuilder dump=256, pause=512} public enum TraversalTechnology { any, none, gateway, static_route, vlan, ethernet, wireless, firewall, vpn, vpn_encryption, vpn_decryption, ip_address, masquerade, forward, arrived, network_interface} - public enum HowToBreak { PowerOff, EthernetBreak, EthernetCorrupt, LockOutSwitch, + public enum HowToBreak { PowerOff, EthernetBreak, EthernetCorrupt, EthernetRemoveLink, LockOutSwitch, WirelessBreakSSID, WirelessBreakKey, DeviceChangeIP, DeviceChangeGW, StaticRouteClear, StaticRouteCorrupt, VLANChange, VPNChangeEndpoint, VPNChangeKey} @@ -1148,7 +1148,7 @@ namespace EduNetworkBuilder switch(What) { case TraversalTechnology.ethernet: - return new List() { HowToBreak.EthernetBreak, HowToBreak.EthernetCorrupt }; + return new List() { HowToBreak.EthernetBreak, HowToBreak.EthernetCorrupt, HowToBreak.EthernetRemoveLink }; case TraversalTechnology.forward: return new List() { HowToBreak.PowerOff, HowToBreak.LockOutSwitch }; case TraversalTechnology.gateway: @@ -1185,6 +1185,7 @@ namespace EduNetworkBuilder return TraversalTechnology.network_interface; case HowToBreak.EthernetBreak: case HowToBreak.EthernetCorrupt: + case HowToBreak.EthernetRemoveLink: return TraversalTechnology.ethernet; case HowToBreak.LockOutSwitch: return TraversalTechnology.forward; //we can only lock ourselves out of switchs and hubs diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs index 2fecad9..9cb2711 100644 --- a/EduNetworkBuilder/Network.cs +++ b/EduNetworkBuilder/Network.cs @@ -1963,8 +1963,19 @@ namespace EduNetworkBuilder break; case HowToBreak.EthernetBreak: //break the link itself - tLink.theLinkType = LinkType.broken; - didit = 1; + if (tLink.theLinkType == LinkType.normal) + { + tLink.theLinkType = LinkType.broken; + didit = 1; + } + break; + case HowToBreak.EthernetRemoveLink: + if (tLink.theLinkType == LinkType.normal) + { + tLink.Destroy(); + RemoveComponent(tLink); + didit = 1; + } break; case HowToBreak.EthernetCorrupt: //Add a flourescent light diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs index 7ce74e8..70b75fb 100644 --- a/EduNetworkBuilder/NetworkBuilder.cs +++ b/EduNetworkBuilder/NetworkBuilder.cs @@ -2170,11 +2170,9 @@ namespace EduNetworkBuilder TraversalCollection.Sort((a, b) => b.Count.CompareTo(a.Count)); - List BreakList = new List() { HowToBreak.PowerOff, HowToBreak.EthernetBreak, - HowToBreak.LockOutSwitch, HowToBreak.WirelessBreakKey, HowToBreak.WirelessBreakSSID, HowToBreak.VPNChangeKey, - HowToBreak.DeviceChangeIP, HowToBreak.DeviceChangeGW}; - //foreach (HowToBreak one in Enum.GetValues(typeof(HowToBreak))) - // BreakList.Add(one); + List BreakList = new List() { }; + foreach (HowToBreak one in Enum.GetValues(typeof(HowToBreak))) + BreakList.Add(one); count = 0; int HowHard = 0; int TraversalIndex = 0;