Get DHCP server on wRouter to work.

This commit is contained in:
Tim Young 2015-08-09 20:27:07 -06:00
parent 4b0b06fb65
commit 8b54d92b1e
2 changed files with 25 additions and 3 deletions

View File

@ -199,6 +199,14 @@ namespace EduNetworkBuilder
CanAddNics = false; CanAddNics = false;
setNicsCanUseDHCP(true); setNicsCanUseDHCP(true);
} }
if (myType == NetworkComponentType.wrouter)
{
CanServeDHCP = true;
CanUseDHCP = true;
MustUseDHCP = false;
CanAddNics = false;
setNicsCanUseDHCP(true);
}
} }
private void setNicsCanUseDHCP(bool CanUse) private void setNicsCanUseDHCP(bool CanUse)
@ -1014,6 +1022,7 @@ namespace EduNetworkBuilder
public ResponseToPacket HowToRespondToPacket(Packet tPacket) public ResponseToPacket HowToRespondToPacket(Packet tPacket)
{ {
bool typesMatch=false; bool typesMatch=false;
if (tPacket.sourceIP == null) return ResponseToPacket.reject;
foreach(IPConnectionEntry ipc in IPConnections) foreach(IPConnectionEntry ipc in IPConnections)
{ {
if(ipc.destIP.GetIP == tPacket.sourceIP.GetIP || HasBroadcastAddress(ipc.destIP)) if(ipc.destIP.GetIP == tPacket.sourceIP.GetIP || HasBroadcastAddress(ipc.destIP))
@ -1472,7 +1481,13 @@ namespace EduNetworkBuilder
nPacket.MyStatus = PacketStatus.processing; nPacket.MyStatus = PacketStatus.processing;
tPacket.AddMessage(DebugLevel.info, "Success! The DHCP request reached a DHCP Server."); tPacket.AddMessage(DebugLevel.info, "Success! The DHCP request reached a DHCP Server.");
tPacket.Tracking.Status = hostname + ":\tDHCP Request found Server: " + nPacket.sourceIP.GetIPString; string IP = "";
if (nPacket.sourceIP != null) IP = nPacket.sourceIP.GetIPString;
if(IP == "" && nPacket.WhereAmI != null) {
IPAddress tIP = HubManagementIP();
if (tIP != null) IP = tIP.GetIPString;
}
tPacket.Tracking.Status = hostname + ":\tDHCP Request found Server: " + IP;
tPacket.MyStatus = PacketStatus.finished_ok; tPacket.MyStatus = PacketStatus.finished_ok;
return; return;
} }
@ -1499,7 +1514,10 @@ namespace EduNetworkBuilder
else else
{ {
tPacket.AddMessage(DebugLevel.info, "ERROR! A packet returned to a machine that we were not expecting it from."); tPacket.AddMessage(DebugLevel.info, "ERROR! A packet returned to a machine that we were not expecting it from.");
tPacket.Tracking.Status = hostname + ":\tDHCP Request failed: Arrived at a machine that was not expecting it and was rejected." + tPacket.sourceIP.GetIP.ToIpString() + " -> " + tPacket.destIP.GetIP.ToIpString(); string sIP = "?.?.?.?";
if (tPacket.sourceIP != null)
sIP = tPacket.sourceIP.GetIP.ToIpString();
tPacket.Tracking.Status = hostname + ":\tDHCP Request failed: Arrived at a machine that was not expecting it and was rejected." + sIP + " -> " + tPacket.destIP.GetIP.ToIpString();
tPacket.MyStatus = PacketStatus.finished_failed; tPacket.MyStatus = PacketStatus.finished_failed;
} }
return; return;
@ -2183,7 +2201,8 @@ namespace EduNetworkBuilder
} }
public IPAddress DHCPRangeMatchingInterface(IPAddress InterfaceIP) public IPAddress DHCPRangeMatchingInterface(IPAddress InterfaceIP)
{ {
if (InterfaceIP == null) return null;
foreach (IPAddress ip in DHCPRanges) foreach (IPAddress ip in DHCPRanges)
{ {
if (ip.GetIP.ToIpString() != "127.0.0.1" && InterfaceIP.IsLocal(ip)) if (ip.GetIP.ToIpString() != "127.0.0.1" && InterfaceIP.IsLocal(ip))
@ -2254,6 +2273,8 @@ namespace EduNetworkBuilder
/// <returns>an IPAddress IP/Mask/GW</returns> /// <returns>an IPAddress IP/Mask/GW</returns>
public IPAddress RequestDHCPLease(string MAC, IPAddress NIC_IP) public IPAddress RequestDHCPLease(string MAC, IPAddress NIC_IP)
{ {
if (NIC_IP == null)
NIC_IP = HubManagementIP();
IPAddress tAddress = LookupDHCPLease(MAC, NIC_IP); IPAddress tAddress = LookupDHCPLease(MAC, NIC_IP);
if (tAddress != null) return tAddress; if (tAddress != null) return tAddress;

View File

@ -316,6 +316,7 @@ namespace EduNetworkBuilder
public void StartOnLink(NetworkLink theLink, NetworkDevice start_device) public void StartOnLink(NetworkLink theLink, NetworkDevice start_device)
{ {
if (theLink == null) return;
WhereAmI = theLink; WhereAmI = theLink;
MyStatus = PacketStatus.moving; MyStatus = PacketStatus.moving;
myLinkPercent = 0; myLinkPercent = 0;