ethernet_interface: Defer setting NIC enabled

This is purely for consistency, to ensure that the network update only
happens once networkd is reloaded.

Change-Id: I4fc4a62a15cb32eb691d612c510adc729559e767
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 3ab8d81..baf530f 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -795,11 +795,18 @@
         return EthernetInterfaceIntf::nicEnabled();
     }
     auto ifname = interfaceName();
-    setNICAdminState(eifSocket.sock, ifname.c_str(), value);
-
-    EthernetInterfaceIntf::nicEnabled(value);
 
     writeConfigurationFile();
+    if (!value)
+    {
+        // We only need to bring down the interface, networkd will always bring
+        // up managed interfaces
+        manager.addReloadPreHook(
+            [ifname = std::move(ifname), eifSocket = std::move(eifSocket)]() {
+                setNICAdminState(eifSocket.sock, ifname.c_str(), false);
+            });
+    }
+    EthernetInterfaceIntf::nicEnabled(value);
     manager.reloadConfigs();
 
     return value;