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;