Fixed issue where we need to go out same nic as we came in on (but different interface)
This commit is contained in:
parent
985e3d092d
commit
211fa6f2bb
@ -392,8 +392,13 @@ namespace EduNetworkBuilder
|
|||||||
case NicType.eth:
|
case NicType.eth:
|
||||||
case NicType.wlan:
|
case NicType.wlan:
|
||||||
//see if it the packet dest is local to this nic
|
//see if it the packet dest is local to this nic
|
||||||
|
if (WhereFrom.hostname == "router0")
|
||||||
|
Console.WriteLine("wearehere");
|
||||||
foreach (NetworkInterface nf in interfaces.ToList())
|
foreach (NetworkInterface nf in interfaces.ToList())
|
||||||
{
|
{
|
||||||
|
if (tPacket.InboundNic != null && tPacket.InboundNic == this &&
|
||||||
|
tPacket.InboundInterface != null && tPacket.InboundInterface == nf)
|
||||||
|
continue; //skip sending it out this interface if it came in this interface.
|
||||||
if (tPacket.MyType == PacketType.arp_request && !nf.isLocal(tPacket.destIP))
|
if (tPacket.MyType == PacketType.arp_request && !nf.isLocal(tPacket.destIP))
|
||||||
continue; //only send out arp requests on local networks
|
continue; //only send out arp requests on local networks
|
||||||
nPacket = new Packet(tPacket);//Creates a new packet but sets isfresh=false
|
nPacket = new Packet(tPacket);//Creates a new packet but sets isfresh=false
|
||||||
|
@ -1366,7 +1366,7 @@ namespace EduNetworkBuilder
|
|||||||
if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting()) ||
|
if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting()) ||
|
||||||
IsWirelessForwarder())
|
IsWirelessForwarder())
|
||||||
{
|
{
|
||||||
if (nic == tPacket.InboundNic) break; //never send it out the nic it came in on
|
// if (nic == tPacket.InboundNic) break; //this case is dealt with in nic.SendPacketOutNic
|
||||||
//Pass it to the NIC to send out each nic+interface.
|
//Pass it to the NIC to send out each nic+interface.
|
||||||
//The nic checks to see if it works and then processes it
|
//The nic checks to see if it works and then processes it
|
||||||
string tMAC = tPacket.destMAC;
|
string tMAC = tPacket.destMAC;
|
||||||
@ -2161,7 +2161,7 @@ namespace EduNetworkBuilder
|
|||||||
ProcessArrival(tPacket);
|
ProcessArrival(tPacket);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
NetworkInterface nf = nc.LocalInterface(tPacket.destIP, tPacket.Tracking);
|
NetworkInterface nf = nc.LocalInterface(tPacket.sourceIP, tPacket.Tracking);
|
||||||
if(nf == null)
|
if(nf == null)
|
||||||
{
|
{
|
||||||
nf = nc.LocalInterface(tPacket.TsourceIP, tPacket.Tracking);
|
nf = nc.LocalInterface(tPacket.TsourceIP, tPacket.Tracking);
|
||||||
|
@ -100,6 +100,7 @@ namespace EduNetworkBuilder
|
|||||||
/// <param name="tPacket"></param>
|
/// <param name="tPacket"></param>
|
||||||
public void ProcessOutboundPacket(Packet tPacket)
|
public void ProcessOutboundPacket(Packet tPacket)
|
||||||
{
|
{
|
||||||
|
tPacket.InboundInterface = null; //forget the interface we had come in on now that we are leaving.
|
||||||
if (tPacket.sourceIP == null || tPacket.sourceIP.GetIP.ToIpString() == NB.ZeroIPString)
|
if (tPacket.sourceIP == null || tPacket.sourceIP.GetIP.ToIpString() == NB.ZeroIPString)
|
||||||
{
|
{
|
||||||
//This happens if we are starting a new packet. We should also do this if we are masquerading.
|
//This happens if we are starting a new packet. We should also do this if we are masquerading.
|
||||||
@ -112,7 +113,9 @@ namespace EduNetworkBuilder
|
|||||||
bool isgood = false;
|
bool isgood = false;
|
||||||
if (tPacket.destIP != null && tPacket.destIP.GetIP == myIP.GetIP) isgood = true;
|
if (tPacket.destIP != null && tPacket.destIP.GetIP == myIP.GetIP) isgood = true;
|
||||||
if (tPacket.destIP != null && myIP.IsLocal(tPacket.destIP)) isgood = true;
|
if (tPacket.destIP != null && myIP.IsLocal(tPacket.destIP)) isgood = true;
|
||||||
if (myIP.NetworkAddress == myIP.GetIP) isgood = true;
|
if (myIP.NetworkAddress == myIP.GetIP) isgood = true;
|
||||||
|
|
||||||
|
tPacket.InboundInterface = this;
|
||||||
|
|
||||||
if(isgood)
|
if(isgood)
|
||||||
{
|
{
|
||||||
|
@ -56,6 +56,7 @@ namespace EduNetworkBuilder
|
|||||||
DateTime StartTime = DateTime.Now;
|
DateTime StartTime = DateTime.Now;
|
||||||
public NetworkCard OutboundNic = null;
|
public NetworkCard OutboundNic = null;
|
||||||
public NetworkCard InboundNic = null;
|
public NetworkCard InboundNic = null;
|
||||||
|
public NetworkInterface InboundInterface = null;
|
||||||
public NetworkInterface OutboundIF = null;
|
public NetworkInterface OutboundIF = null;
|
||||||
public IPAddress OutboundIP = new IPAddress(NB.ZeroIPString);
|
public IPAddress OutboundIP = new IPAddress(NB.ZeroIPString);
|
||||||
public string OutboundMAC = "";
|
public string OutboundMAC = "";
|
||||||
@ -326,6 +327,7 @@ namespace EduNetworkBuilder
|
|||||||
{
|
{
|
||||||
if (theLink == null) return;
|
if (theLink == null) return;
|
||||||
InboundNic = null;
|
InboundNic = null;
|
||||||
|
InboundInterface = null;
|
||||||
WhereAmI = theLink;
|
WhereAmI = theLink;
|
||||||
MyStatus = PacketStatus.moving;
|
MyStatus = PacketStatus.moving;
|
||||||
myLinkPercent = 0;
|
myLinkPercent = 0;
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
|
{\rtf1\ansi\ansicpg1252\deff0\nouicompat\deflang1033{\fonttbl{\f0\fnil\fcharset0 Calibri;}}
|
||||||
{\*\generator Riched20 10.0.10240}\viewkind4\uc1
|
{\*\generator Riched20 10.0.10240}\viewkind4\uc1
|
||||||
\pard\sa200\sl276\slmult1\b\f0\fs22\lang9 Version 1.0.23 \par
|
\pard\sa200\sl276\slmult1\b\f0\fs22\lang9 Version 1.0.23 \par
|
||||||
\b0 * Fixed issues with broadcast packets\b\par
|
\b0 * Fixed issues with broadcast packets\par
|
||||||
|
* Fixed a network loop issue\par
|
||||||
|
* Fixed issue with multiple interfaces and being able to go out a different interface than we came in on\b\par
|
||||||
Version 1.0.22 09/01/2015\b0\par
|
Version 1.0.22 09/01/2015\b0\par
|
||||||
* Added ssid and keys for wireless links\par
|
* Added ssid and keys for wireless links\par
|
||||||
* Wireless will auto-disconnect if link is too long\par
|
* Wireless will auto-disconnect if link is too long\par
|
||||||
|
Loading…
Reference in New Issue
Block a user