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
|
//We are making a link
|
||||||
LinkEditor myEditor = new LinkEditor(ItemClickedOn, ReleasedOn);
|
LinkEditor myEditor = new LinkEditor(ItemClickedOn, ReleasedOn);
|
||||||
myEditor.ShowDialog();
|
myEditor.ShowDialog();
|
||||||
|
UpdateLinks();
|
||||||
pbNetworkView.Invalidate(); //In case any changes have been made
|
pbNetworkView.Invalidate(); //In case any changes have been made
|
||||||
}
|
}
|
||||||
else if (ItemClickedOn == null)
|
else if (ItemClickedOn == null)
|
||||||
|
@ -394,7 +394,7 @@ namespace EduNetworkBuilder
|
|||||||
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
|
||||||
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)
|
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())
|
foreach (NetworkInterface nf in interfaces.ToList())
|
||||||
{
|
{
|
||||||
nPacket = new Packet(tPacket);//Creates a new packet but sets isfresh=false
|
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)
|
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
|
//set it to be the ip of management interface
|
||||||
nPacket.sourceIP = WhereFrom.HubManagementIP();
|
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);
|
nPacket.destMAC = WhereFrom.LookupArpFromIP(tPacket.OutboundIP.GetIPString);
|
||||||
}
|
}
|
||||||
@ -565,13 +565,13 @@ namespace EduNetworkBuilder
|
|||||||
Network mynet;
|
Network mynet;
|
||||||
NetworkDevice nd;
|
NetworkDevice nd;
|
||||||
//We make sure the MAC matches.
|
//We make sure the MAC matches.
|
||||||
|
mynet = NB.GetNetwork();
|
||||||
|
nd = mynet.GetDeviceFromID(myID);
|
||||||
if (tPacket == null) return;
|
if (tPacket == null) return;
|
||||||
tPacket.InboundNic = this; //track which nic we came in on.
|
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
|
//Try tracking the arp if we can
|
||||||
mynet = NB.GetNetwork();
|
|
||||||
nd = mynet.GetDeviceFromID(myID);
|
|
||||||
if (tPacket.TsourceIP == null) tPacket.TsourceIP = tPacket.sourceIP;
|
if (tPacket.TsourceIP == null) tPacket.TsourceIP = tPacket.sourceIP;
|
||||||
nd.StoreArp(tPacket.sourceMAC, tPacket.TsourceIP.GetIP.ToIpString(), myID);
|
nd.StoreArp(tPacket.sourceMAC, tPacket.TsourceIP.GetIP.ToIpString(), myID);
|
||||||
//If it is a return DHCP packet. We should try to update the MAC
|
//If it is a return DHCP packet. We should try to update the MAC
|
||||||
|
@ -251,6 +251,7 @@ namespace EduNetworkBuilder
|
|||||||
if(nl != null)
|
if(nl != null)
|
||||||
{
|
{
|
||||||
myNet.RemoveComponent(nl);
|
myNet.RemoveComponent(nl);
|
||||||
|
nl.Destroy();
|
||||||
}
|
}
|
||||||
nic.ConnectedLink = -1;
|
nic.ConnectedLink = -1;
|
||||||
}
|
}
|
||||||
@ -647,7 +648,9 @@ namespace EduNetworkBuilder
|
|||||||
NICs[index].Edit();
|
NICs[index].Edit();
|
||||||
//If the nic was a wireless, make sure we copy the ssid and key to all other of identical type
|
//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)
|
if (NICs[index].GetNicType == NicType.wport || NICs[index].GetNicType == NicType.wlan)
|
||||||
|
{
|
||||||
duplicateSSIDnKey(NICs[index].SSID, NICs[index].WirelessKey, NICs[index].GetNicType);
|
duplicateSSIDnKey(NICs[index].SSID, NICs[index].WirelessKey, NICs[index].GetNicType);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
public void DeleteNic(int index)
|
public void DeleteNic(int index)
|
||||||
{
|
{
|
||||||
@ -1195,6 +1198,15 @@ namespace EduNetworkBuilder
|
|||||||
return null;
|
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)
|
public override void ProcessPacket(Packet tPacket)
|
||||||
{
|
{
|
||||||
//Psuedo code for processing a packet
|
//Psuedo code for processing a packet
|
||||||
@ -1306,7 +1318,8 @@ namespace EduNetworkBuilder
|
|||||||
case NicType.wlan:
|
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()) ||
|
||||||
|
IsWirelessForwarder())
|
||||||
{
|
{
|
||||||
//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
|
||||||
@ -2160,7 +2173,8 @@ namespace EduNetworkBuilder
|
|||||||
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.wrouter) return true;
|
||||||
if (myType == NetworkComponentType.wbridge) return true;
|
if (myType == NetworkComponentType.wrepeater) return true;
|
||||||
|
if (myType == NetworkComponentType.wrouter) return true;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -47,7 +47,7 @@ namespace EduNetworkBuilder
|
|||||||
Client = sNic;
|
Client = sNic;
|
||||||
IsWireless = true;
|
IsWireless = true;
|
||||||
}
|
}
|
||||||
if(IsWireless && AccessPoint != null && Client != null)
|
if(IsWireless && AccessPoint != null && Client != null && AccessPoint.SSID != null && AccessPoint.SSID != "")
|
||||||
{
|
{
|
||||||
bool donesomething=false;
|
bool donesomething=false;
|
||||||
if(AccessPoint.SSID != Client.SSID)
|
if(AccessPoint.SSID != Client.SSID)
|
||||||
|
Loading…
Reference in New Issue
Block a user