network_manager: Add support for non-disruptive reconfiguration
This makes it possible for network interfaces to non-disruptively reload
configurations and tell systemd-networkd to reconfigure interaces.
Change-Id: Ia4003854b6fe845a67b954068ec363bc4c622837
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 4ff9e17..ab8a636 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -26,6 +26,10 @@
constexpr char SYSTEMD_INTERFACE[] = "org.freedesktop.systemd1.Manager";
constexpr auto FirstBootFile = "/var/lib/network/firstBoot_";
+constexpr char NETWORKD_BUSNAME[] = "org.freedesktop.network1";
+constexpr char NETWORKD_PATH[] = "/org/freedesktop/network1";
+constexpr char NETWORKD_INTERFACE[] = "org.freedesktop.network1.Manager";
+
namespace phosphor
{
namespace network
@@ -294,5 +298,21 @@
}
}
+void Manager::reloadConfigs()
+{
+ try
+ {
+ auto method = bus.new_method_call(NETWORKD_BUSNAME, NETWORKD_PATH,
+ NETWORKD_INTERFACE, "Reload");
+ bus.call_noreply(method);
+ }
+ catch (const sdbusplus::exception::exception& ex)
+ {
+ log<level::ERR>("Failed to reload configuration",
+ entry("ERR=%s", ex.what()));
+ elog<InternalFailure>();
+ }
+}
+
} // namespace network
} // namespace phosphor