diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs index c8852c3..fe30f6d 100644 --- a/EduNetworkBuilder/NetworkDevice.cs +++ b/EduNetworkBuilder/NetworkDevice.cs @@ -3290,7 +3290,12 @@ namespace EduNetworkBuilder //Console.WriteLine(" Tracert bounce: " + tPacket.OrigTTL + " " + hostname + " " + tPacket.payloadData); //Finish setting up the new packet - sending it back - nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString); + // respond from requested address, not outgoing address: important for routers. + if (HasIPAddress(tPacket.destIP)) + nPacket.sourceIP = tPacket.destIP; + else + nPacket.sourceIP = new NB_IPAddress(NB.ZeroIPString); + nPacket.TsourceIP = new NB_IPAddress(NB.ZeroIPString); myNet.addPacket(nPacket); //Console.WriteLine(" Tracert bounce pkt:" + nPacket.OrigTTL + nPacket.payloadData);