Fix duplicate wireless link error
This commit is contained in:
parent
cf4538b585
commit
679d2f7010
@ -752,6 +752,7 @@ namespace EduNetworkBuilder
|
||||
//We are making a link
|
||||
LinkEditor myEditor = new LinkEditor(ItemClickedOn, ReleasedOn);
|
||||
myEditor.ShowDialog();
|
||||
UpdateLinks();
|
||||
pbNetworkView.Invalidate(); //In case any changes have been made
|
||||
}
|
||||
else if (ItemClickedOn == null)
|
||||
|
@ -394,7 +394,7 @@ namespace EduNetworkBuilder
|
||||
if (tPacket.MyType == PacketType.arp_request && !nf.isLocal(tPacket.destIP))
|
||||
continue; //only send out arp requests on local networks
|
||||
nPacket = new Packet(tPacket);//Creates a new packet but sets isfresh=false
|
||||
if (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.GetIPString == NB.BroadcastIPString)
|
||||
if (tPacket.OutboundIP == null || (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.GetIPString == NB.BroadcastIPString))
|
||||
{
|
||||
if ((nf != null && nf.myIP.GetIPString != NB.ZeroIPString) || nPacket.MyType == PacketType.dhcp_request)
|
||||
{
|
||||
@ -442,7 +442,7 @@ namespace EduNetworkBuilder
|
||||
foreach (NetworkInterface nf in interfaces.ToList())
|
||||
{
|
||||
nPacket = new Packet(tPacket);//Creates a new packet but sets isfresh=false
|
||||
if (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.GetIPString == NB.BroadcastIPString)
|
||||
if (tPacket.OutboundIP != null && (nf.isLocal(tPacket.OutboundIP) || tPacket.OutboundIP.GetIPString == NB.BroadcastIPString))
|
||||
{
|
||||
if ((nf != null && nf.myIP != null && nf.myIP.GetIPString != NB.ZeroIPString) || nPacket.MyType == PacketType.dhcp_request)
|
||||
{
|
||||
@ -531,7 +531,7 @@ namespace EduNetworkBuilder
|
||||
//set it to be the ip of management interface
|
||||
nPacket.sourceIP = WhereFrom.HubManagementIP();
|
||||
}
|
||||
if (nPacket.destMAC == null || nPacket.destMAC == "")
|
||||
if (nPacket.destMAC == null || nPacket.destMAC == "" && tPacket.OutboundIP != null)
|
||||
{
|
||||
nPacket.destMAC = WhereFrom.LookupArpFromIP(tPacket.OutboundIP.GetIPString);
|
||||
}
|
||||
@ -565,13 +565,13 @@ namespace EduNetworkBuilder
|
||||
Network mynet;
|
||||
NetworkDevice nd;
|
||||
//We make sure the MAC matches.
|
||||
mynet = NB.GetNetwork();
|
||||
nd = mynet.GetDeviceFromID(myID);
|
||||
if (tPacket == null) return;
|
||||
tPacket.InboundNic = this; //track which nic we came in on.
|
||||
if (myNicType == NicType.port || myNicType == NicType.wport)
|
||||
if (myNicType == NicType.port || myNicType == NicType.wport || (nd.IsWirelessForwarder() && myNicType == NicType.wlan))
|
||||
{
|
||||
//Try tracking the arp if we can
|
||||
mynet = NB.GetNetwork();
|
||||
nd = mynet.GetDeviceFromID(myID);
|
||||
if (tPacket.TsourceIP == null) tPacket.TsourceIP = tPacket.sourceIP;
|
||||
nd.StoreArp(tPacket.sourceMAC, tPacket.TsourceIP.GetIP.ToIpString(), myID);
|
||||
//If it is a return DHCP packet. We should try to update the MAC
|
||||
|
@ -251,6 +251,7 @@ namespace EduNetworkBuilder
|
||||
if(nl != null)
|
||||
{
|
||||
myNet.RemoveComponent(nl);
|
||||
nl.Destroy();
|
||||
}
|
||||
nic.ConnectedLink = -1;
|
||||
}
|
||||
@ -647,7 +648,9 @@ namespace EduNetworkBuilder
|
||||
NICs[index].Edit();
|
||||
//If the nic was a wireless, make sure we copy the ssid and key to all other of identical type
|
||||
if (NICs[index].GetNicType == NicType.wport || NICs[index].GetNicType == NicType.wlan)
|
||||
{
|
||||
duplicateSSIDnKey(NICs[index].SSID, NICs[index].WirelessKey, NICs[index].GetNicType);
|
||||
}
|
||||
}
|
||||
public void DeleteNic(int index)
|
||||
{
|
||||
@ -1195,6 +1198,15 @@ namespace EduNetworkBuilder
|
||||
return null;
|
||||
}
|
||||
|
||||
public bool IsWirelessForwarder()
|
||||
{
|
||||
if (myType == NetworkComponentType.wrepeater) return true;
|
||||
if (myType == NetworkComponentType.wap) return true;
|
||||
if (myType == NetworkComponentType.wbridge) return true;
|
||||
if (myType == NetworkComponentType.wrouter) return true;
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void ProcessPacket(Packet tPacket)
|
||||
{
|
||||
//Psuedo code for processing a packet
|
||||
@ -1306,7 +1318,8 @@ namespace EduNetworkBuilder
|
||||
case NicType.wlan:
|
||||
//If the packet is a new packet and is not connecting to itself
|
||||
//or, if it is routing away.
|
||||
if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting()))
|
||||
if ((tPacket.isFresh && !ExactMatch ) || (NeedsRouting && DoesRouting()) ||
|
||||
IsWirelessForwarder())
|
||||
{
|
||||
//Pass it to the NIC to send out each nic+interface.
|
||||
//The nic checks to see if it works and then processes it
|
||||
@ -2160,7 +2173,8 @@ namespace EduNetworkBuilder
|
||||
if (myType == NetworkComponentType.net_switch) return true;
|
||||
if (myType == NetworkComponentType.wap) return true;
|
||||
if (myType == NetworkComponentType.wrouter) return true;
|
||||
if (myType == NetworkComponentType.wbridge) return true;
|
||||
if (myType == NetworkComponentType.wrepeater) return true;
|
||||
if (myType == NetworkComponentType.wrouter) return true;
|
||||
return false;
|
||||
}
|
||||
/// <summary>
|
||||
|
@ -47,7 +47,7 @@ namespace EduNetworkBuilder
|
||||
Client = sNic;
|
||||
IsWireless = true;
|
||||
}
|
||||
if(IsWireless && AccessPoint != null && Client != null)
|
||||
if(IsWireless && AccessPoint != null && Client != null && AccessPoint.SSID != null && AccessPoint.SSID != "")
|
||||
{
|
||||
bool donesomething=false;
|
||||
if(AccessPoint.SSID != Client.SSID)
|
||||
|
Loading…
Reference in New Issue
Block a user