From eddfb773c06e3f9a3e6eb2015058d0c2f9e22016 Mon Sep 17 00:00:00 2001 From: Tim Young Date: Sat, 26 Aug 2017 08:09:37 -0500 Subject: [PATCH] One item to break --- EduNetworkBuilder/Network.cs | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs index c737b59..17e6a15 100644 --- a/EduNetworkBuilder/Network.cs +++ b/EduNetworkBuilder/Network.cs @@ -1909,9 +1909,9 @@ namespace EduNetworkBuilder } } - bool BreakNetComponent(NetworkComponent What, HowToBreak How) + int BreakNetComponent(NetworkComponent What, HowToBreak How) { - bool didit = false; + int didit = 0; NetworkDevice tDevice = null; NetworkLink tLink = null; if (What is NetworkDevice) tDevice = (NetworkDevice)What; @@ -1920,7 +1920,7 @@ namespace EduNetworkBuilder { case HowToBreak.PowerOff: tDevice.PowerOff = true; - didit = true; + didit = 1; break; case HowToBreak.DeviceChangeGW: break; @@ -1928,7 +1928,7 @@ namespace EduNetworkBuilder break; case HowToBreak.EthernetBreak: tLink.theLinkType = LinkType.broken; - didit = true; + didit = 1; break; case HowToBreak.EthernetCorrupt: break; @@ -1953,16 +1953,30 @@ namespace EduNetworkBuilder return didit; } - bool BreakNetworkPath(TraversalClass ThePath, HowToBreak How) + int BreakNetworkPath(TraversalClass ThePath, HowToBreak How) { //find the device name it belongs to //try to break it. If it fails, try a different device. //Fail if we cannot do it + TraversalTechnology WhatNeeded = NB.TechnologyNeededToBreak(How); + int count = 0; while(count < 3) { - string host = ThePath.HostnameFromTechnology(); + string host = ThePath.HostnameFromTechnology(WhatNeeded); + if(host != "") + { + //We have a host, see if we can break it. + NetworkComponent NC = ItemFromName(host); + if(NC != null) + { + int answer = BreakNetComponent(NC, How); + if (answer>0) return answer; + } + } + count++; } + return 0; } }