diff --git a/EduNetworkBuilder/Network.cs b/EduNetworkBuilder/Network.cs index 0008115..84f1719 100644 --- a/EduNetworkBuilder/Network.cs +++ b/EduNetworkBuilder/Network.cs @@ -59,6 +59,7 @@ namespace EduNetworkBuilder private int NumberOfSecondsForTimeout = 10; private List<Rectangle> PacketRectangles = new List<Rectangle>(); public BindingList<VLANName> VlanNames = new BindingList<VLANName>() { new VLANName(1, "Default") }; + public TraversalClass LastTraversal = null; private bool previously_had_packets = false; //used on "tick" to determine if we are starting from scratch @@ -1202,6 +1203,13 @@ namespace EduNetworkBuilder else if (myPackets[loop].ready_to_delete) { myPackets[loop].PrepareToDelete(); + if(myPackets[loop].MyStatus == PacketStatus.finished_ok) + { + if (myPackets[loop].TraversalInformation != null) + { + LastTraversal = myPackets[loop].TraversalInformation; + } + } myPackets.RemoveAt(loop); } } @@ -1870,15 +1878,18 @@ namespace EduNetworkBuilder return HomeworkSolvedStatus.NeverChecked; //for now. We want to change this later. Just so we keep re-testing } - public void NonVisualPingOneHost(string source, string dest) + public TraversalClass NonVisualPingOneHost(string source, string dest) { + LastTraversal = null; NB.RegisterInvisibleNetwork(this); NetworkDevice src = GetDeviceFromName(source); - if (src == null) return; + if (src == null) return null; IPAddress destination = DNSLookup(src, dest); src.PingFromHere(destination); NonVisualProcessPacketsOnce(); + if (LastTraversal != null) LastTraversal.DumpPath(); NB.UnregisterInvisibleNetwork(); + return LastTraversal; } public void NonVisualDoDHCPOnAll() diff --git a/EduNetworkBuilder/NetworkBuilder.cs b/EduNetworkBuilder/NetworkBuilder.cs index e7f8712..0f1ff86 100644 --- a/EduNetworkBuilder/NetworkBuilder.cs +++ b/EduNetworkBuilder/NetworkBuilder.cs @@ -2149,6 +2149,8 @@ namespace EduNetworkBuilder { //we will prompt for stuff. For now, just use the firewalls network LoadSolvedResource( SolvedNetworkNames.firewalls.ToString()); + myNetwork.NonVisualDoDHCPOnAll(); + myNetwork.NonVisualPingOneHost("pc1", "pc2"); } #endregion Random Map Stuff } diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs index 882317f..c7a7f43 100644 --- a/EduNetworkBuilder/NetworkDevice.cs +++ b/EduNetworkBuilder/NetworkDevice.cs @@ -1692,6 +1692,8 @@ namespace EduNetworkBuilder tPacket.MyStatus = PacketStatus.finished_ok; //It stops here nPacket = tPacket.payloadPacket; + if (nPacket.TraversalInformation != null && tPacket.TraversalInformation != null) + nPacket.TraversalInformation.AddPath(tPacket.TraversalInformation); NetworkCard nc = LocalNic(nPacket.TsourceIP, true); nPacket.TsourceIP = null; if (nc != null) diff --git a/EduNetworkBuilder/TraversalClass.cs b/EduNetworkBuilder/TraversalClass.cs index a712502..a3158a2 100644 --- a/EduNetworkBuilder/TraversalClass.cs +++ b/EduNetworkBuilder/TraversalClass.cs @@ -44,7 +44,10 @@ namespace EduNetworkBuilder { PathTaken.Add(new TraversalRecord(Host, WithWhat)); } - + public void AddPath(TraversalClass OtherTraversal) + { + PathTaken.AddRange(OtherTraversal.PathTaken); + } /// <summary> /// This is just a debug function to print off the whole path as we find it. /// </summary>