diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs index 5c6ef82..5851961 100644 --- a/EduNetworkBuilder/NetworkDevice.cs +++ b/EduNetworkBuilder/NetworkDevice.cs @@ -36,6 +36,7 @@ namespace EduNetworkBuilder protected Color MorphColor = Color.Empty; public List FirewallRules = new List(); public bool PowerOff = false; + private List tracertmessages = new List(); public NetworkDevice(NetworkComponentType what, string tHostname, Point tLocation, NicType firstNic = NicType.eth) { @@ -1294,6 +1295,7 @@ namespace EduNetworkBuilder Packet TracertPacket = new Packet(this, Destination, Destination.GetIPString, PacketType.tracert_request, -1, 1); Network myNet = NB.GetNetwork(); myNet.addPacket(TracertPacket); + tracertmessages.Clear(); //Start with a fresh bunch of messages } public void AskArpFromHere(IPAddress Destination, PacketMessage Tracker=null) @@ -1851,9 +1853,6 @@ namespace EduNetworkBuilder ResponseToPacket response = HowToRespondToPacket(tPacket); if (response == ResponseToPacket.none || response == ResponseToPacket.masq) return; //We do not do anything with it here. //The reply got here. This packet is done - tPacket.AddMessage(DebugLevel.info, NB.Translate("ND_ProcessArrival_TracertReply") + " " + tPacket.sourceIP.GetIPString); - tPacket.Tracking.Status = NB.LeftPad(hostname) + " " + string.Format(NB.Translate("ND_ProcessArrival_TracertReply") + " " + tPacket.sourceIP.GetIPString); - tPacket.MyStatus = PacketStatus.finished_ok; IPAddress origStart = new IPAddress(tPacket.payloadData); int ttl = tPacket.OrigTTL + 1; @@ -1861,6 +1860,8 @@ namespace EduNetworkBuilder //Console.WriteLine("Tracert: " + tPacket.OrigTTL + " " + tPacket.sourceIP.GetIPString); //Console.WriteLine("Tracert: -- " + tPacket.sourceIP.GetIPString + " " + origStart.GetIPString); //If we had not landed on the actual dest... + tracertmessages.Add(NB.Translate("ND_ProcessArrival_TracertReply") + " " + tPacket.sourceIP.GetIPString); + if (tPacket.sourceIP.GetIPString != origStart.GetIPString && ttl < 10) { Packet trPacket = new Packet(this, origStart, origStart.GetIPString, PacketType.tracert_request, -1, ttl); @@ -1870,7 +1871,17 @@ namespace EduNetworkBuilder if (tPacket.sourceIP.GetIPString == origStart.GetIPString) { myNet.NotePacketArrived(tPacket.MyType, this, tPacket.destIP, tPacket.sourceIP, tPacket.packetID); + foreach(string message in tracertmessages) + { + tPacket.Tracking.AddMessage(DebugLevel.info, this, message); + Console.WriteLine(message); + } + tracertmessages.Clear(); } + tPacket.AddMessage(DebugLevel.info, NB.Translate("ND_ProcessArrival_TracertReply") + " " + tPacket.sourceIP.GetIPString); + tPacket.Tracking.Status = NB.LeftPad(hostname) + " " + string.Format(NB.Translate("ND_ProcessArrival_TracertReply") + " " + tPacket.sourceIP.GetIPString); + tPacket.MyStatus = PacketStatus.finished_ok; + return; } if (tPacket.MyType == PacketType.arp_request)