From facd5d1ea1109b4626000e317dfb3498f323d3bd Mon Sep 17 00:00:00 2001 From: Tim Young Date: Tue, 23 Oct 2018 08:25:04 -0500 Subject: [PATCH] Able to change gateway if device has both DHCP and ethernet, but the ethernet is the one plugged in. --- EduNetworkBuilder/DeviceConfig.cs | 2 +- EduNetworkBuilder/NetworkDevice.cs | 19 ++++++++++++++++--- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/EduNetworkBuilder/DeviceConfig.cs b/EduNetworkBuilder/DeviceConfig.cs index ab55842..01599b5 100644 --- a/EduNetworkBuilder/DeviceConfig.cs +++ b/EduNetworkBuilder/DeviceConfig.cs @@ -487,7 +487,7 @@ namespace EduNetworkBuilder if (NB.GetComponentType(ClonedItem) == GeneralComponentType.device) { NetworkDevice nd = (NetworkDevice)ClonedItem; - if (nd.HasDHCPNic()) + if (!nd.HasNonDHCPConnected() && nd.HasDHCPNic()) { MessageBox.Show(NB.Translate("DC_CannotEditGateway_DHCP")); } diff --git a/EduNetworkBuilder/NetworkDevice.cs b/EduNetworkBuilder/NetworkDevice.cs index 8888403..ef649e3 100644 --- a/EduNetworkBuilder/NetworkDevice.cs +++ b/EduNetworkBuilder/NetworkDevice.cs @@ -378,9 +378,8 @@ namespace EduNetworkBuilder public NB_IPAddress GetGateway() { - if(CanUseDHCP) - { - + if(!HasNonDHCPConnected() && CanUseDHCP) + { foreach(NetworkCard nic in NICs) { if(nic.UsesDHCP) @@ -3364,6 +3363,20 @@ namespace EduNetworkBuilder return false; } + /// + /// Return true if this device has at least one nic that can be configured from DHCP + /// + /// True if the device has a nic that can be configured with DHCP + public bool HasNonDHCPConnected() + { + foreach (NetworkCard card in NICs) + { + if (!card.UsesDHCP && card.ConnectedTo() != null) + return true; + } + return false; + } + public bool HasLocalNic(NB_IPAddress dest) { foreach(NetworkCard nic in NICs)