wports working as switches, wport not printing and not in toltips

This commit is contained in:
Tim Young 2015-08-09 16:33:00 -06:00
parent 0b974171f6
commit 33e9a61efd
5 changed files with 41 additions and 7 deletions

View File

@ -203,6 +203,8 @@ namespace EduNetworkBuilder
int dNicIndex = lbDstNic.SelectedIndex; int dNicIndex = lbDstNic.SelectedIndex;
NetworkCard dNic = Dst.NicFromName(lbDstNic.SelectedItem.ToString()); NetworkCard dNic = Dst.NicFromName(lbDstNic.SelectedItem.ToString());
LinkType LT = NB.ParseEnum<LinkType>(cbLinkType.SelectedItem.ToString()); LinkType LT = NB.ParseEnum<LinkType>(cbLinkType.SelectedItem.ToString());
if (sNic.GetNicType == NicType.wport || sNic.GetNicType == NicType.wlan)
LT = LinkType.wireless; //We cannot have broken wireless links the same way.
NetworkLink newLink = new NetworkLink(sNic.myID, dNic.myID, LT); NetworkLink newLink = new NetworkLink(sNic.myID, dNic.myID, LT);
Net.AddItem(newLink); Net.AddItem(newLink);
Close(); Close();

View File

@ -348,6 +348,7 @@ namespace EduNetworkBuilder
case NicType.none: case NicType.none:
break; //Do nothing break; //Do nothing
case NicType.eth: case NicType.eth:
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
foreach (NetworkInterface nf in interfaces.ToList()) foreach (NetworkInterface nf in interfaces.ToList())
{ {
@ -472,6 +473,7 @@ namespace EduNetworkBuilder
} }
break; break;
case NicType.port: case NicType.port:
case NicType.wport:
nPacket = new Packet(tPacket); nPacket = new Packet(tPacket);
if (HasBroadcastAddresses(tPacket.destIP)) if (HasBroadcastAddresses(tPacket.destIP))
{ {
@ -522,7 +524,7 @@ namespace EduNetworkBuilder
Network mynet; Network mynet;
NetworkDevice nd; NetworkDevice nd;
//We make sure the MAC matches. //We make sure the MAC matches.
if (myNicType == NicType.port) if (myNicType == NicType.port || myNicType == NicType.wport)
{ {
//Try tracking the arp if we can //Try tracking the arp if we can
mynet = NB.GetNetwork(); mynet = NB.GetNetwork();

View File

@ -386,6 +386,8 @@ namespace EduNetworkBuilder
//Add IP Addresses that are assigned //Add IP Addresses that are assigned
foreach (NetworkCard nic in NICs) foreach (NetworkCard nic in NICs)
{ {
if (nic.GetNicType == NicType.wport || nic.GetNicType == NicType.port)
continue;
foreach(string addr in nic.IPAddresses()) foreach(string addr in nic.IPAddresses())
{ {
answer += "\n" + addr; answer += "\n" + addr;
@ -755,7 +757,7 @@ namespace EduNetworkBuilder
foreach (NetworkCard nic in NICs) foreach (NetworkCard nic in NICs)
{ {
if(nic.GetNicType != NicType.lo && nic.GetNicType != NicType.port) if(nic.GetNicType != NicType.lo && nic.GetNicType != NicType.port && nic.GetNicType != NicType.wport)
{ {
string title = ""; string title = "";
if (nic.GetNicType == NicType.management_interface) if (nic.GetNicType == NicType.management_interface)
@ -888,6 +890,9 @@ namespace EduNetworkBuilder
if (myType == NetworkComponentType.net_hub) return true; if (myType == NetworkComponentType.net_hub) return true;
if (myType == NetworkComponentType.net_switch) return true; if (myType == NetworkComponentType.net_switch) return true;
if (myType == NetworkComponentType.wap) return true; if (myType == NetworkComponentType.wap) return true;
if (myType == NetworkComponentType.wbridge) return true;
if (myType == NetworkComponentType.wrepeater) return true;
if (myType == NetworkComponentType.wrouter) return true;
return false; return false;
} }
@ -1130,8 +1135,6 @@ namespace EduNetworkBuilder
} }
} }
} }
if (myType == NetworkComponentType.net_hub || myType == NetworkComponentType.wap)
dNic = null; //Hubs/WAPs never know the dnic. They still need the sNic, however
//Delivery //Delivery
//Loop through all nics (skip the interface) it came in on //Loop through all nics (skip the interface) it came in on
@ -1156,6 +1159,7 @@ namespace EduNetworkBuilder
case NicType.tun: case NicType.tun:
case NicType.vpn: case NicType.vpn:
case NicType.wan: case NicType.wan:
case NicType.wlan:
//If the packet is a new packet and is not connecting to itself //If the packet is a new packet and is not connecting to itself
//or, if it is routing away. //or, if it is routing away.
if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting())) if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting()))
@ -1172,14 +1176,29 @@ namespace EduNetworkBuilder
} }
break; break;
case NicType.port: case NicType.port:
if(!ExactMatch && !MacAddressMatch) case NicType.wport:
NetworkCard tdNic = dNic;
if (myType == NetworkComponentType.wrouter)
{
//On wRouters, the wPorts are hubs, but the ports are switches
if (dNic != null && dNic.GetNicType == NicType.wport && nic.GetNicType == NicType.wport)
tdNic = null;
}
else
{
if (nic.GetNicType == NicType.port && myType == NetworkComponentType.net_hub)
tdNic = null; //Hubs/WAPs never know the dnic. They still need the sNic, however
if (nic.GetNicType == NicType.wport)
tdNic = null; //Hubs/WAPs never know the dnic. They still need the sNic, however
}
if (!ExactMatch && !MacAddressMatch)
{ {
//If the packet does not terminate here, and we are not routing it to here... //If the packet does not terminate here, and we are not routing it to here...
//Pass it to the port. The port duplicates it and sends it out //Pass it to the port. The port duplicates it and sends it out
//Do not send it out the port it came in on (sNic) //Do not send it out the port it came in on (sNic)
//If we know the dNic, only send it out that //If we know the dNic, only send it out that
//But if we do not know a dnic, send it out all of them (except the sNic) //But if we do not know a dnic, send it out all of them (except the sNic)
if (sNic != nic && (dNic == null || (dNic != null && dNic.ConnectedLink == -1) || dNic == nic)) if (sNic != nic && (tdNic == null || (tdNic != null && tdNic.ConnectedLink == -1) || tdNic == nic))
{ {
if (nic.SendPacketOutNIC(tPacket)) if (nic.SendPacketOutNIC(tPacket))
{ {
@ -1944,7 +1963,9 @@ namespace EduNetworkBuilder
return; return;
} }
} }
if(nf == null && myType != NetworkComponentType.net_switch && myType != NetworkComponentType.net_hub) if(nf == null && myType != NetworkComponentType.net_switch && myType != NetworkComponentType.net_hub &&
myType != NetworkComponentType.wbridge && myType != NetworkComponentType.wrepeater &&
myType != NetworkComponentType.wrouter)
{ {
tPacket.AddMessage(DebugLevel.debug, hostname + " The device had no local IPs. Quietly dropped."); tPacket.AddMessage(DebugLevel.debug, hostname + " The device had no local IPs. Quietly dropped.");
tPacket.Tracking.Status = hostname + " Failed: no IPs local to the packet."; tPacket.Tracking.Status = hostname + " Failed: no IPs local to the packet.";
@ -1970,6 +1991,8 @@ namespace EduNetworkBuilder
if (myType == NetworkComponentType.net_hub) return true; if (myType == NetworkComponentType.net_hub) return true;
if (myType == NetworkComponentType.net_switch) return true; if (myType == NetworkComponentType.net_switch) return true;
if (myType == NetworkComponentType.wap) return true; if (myType == NetworkComponentType.wap) return true;
if (myType == NetworkComponentType.wrouter) return true;
if (myType == NetworkComponentType.wbridge) return true;
return false; return false;
} }
/// <summary> /// <summary>
@ -1980,6 +2003,7 @@ namespace EduNetworkBuilder
{ {
if (myType == NetworkComponentType.router) return true; if (myType == NetworkComponentType.router) return true;
if (myType == NetworkComponentType.firewall) return true; if (myType == NetworkComponentType.firewall) return true;
if (myType == NetworkComponentType.wrouter) return true;
return false; return false;
} }

View File

@ -139,6 +139,12 @@ namespace EduNetworkBuilder
Point sPoint = Src.GetCenter(); Point sPoint = Src.GetCenter();
Point dPoint = Dst.GetCenter(); Point dPoint = Dst.GetCenter();
Pen tPen = new Pen(Color.Black, 4); Pen tPen = new Pen(Color.Black, 4);
if(theLinkType == LinkType.wireless)
{
//tPen = new Pen(Color.DarkSlateGray);
tPen.DashCap = System.Drawing.Drawing2D.DashCap.Round;
tPen.DashPattern = new float[] { 8.0F, 2.0F};
}
Graphics.FromImage(BaseImage).DrawLine(tPen,sPoint,dPoint); Graphics.FromImage(BaseImage).DrawLine(tPen,sPoint,dPoint);
IsDirty = false; //we have printed, we are no longer dirty. IsDirty = false; //we have printed, we are no longer dirty.
} }