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)