diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index b8fcaab..19e4673 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -35,7 +35,7 @@
 namespace network
 {
 
-extern std::unique_ptr<Timer> refreshObjectTimer;
+extern std::unique_ptr<Timer> reloadTimer;
 using namespace phosphor::logging;
 using namespace sdbusplus::xyz::openbmc_project::Common::Error;
 
@@ -255,6 +255,11 @@
 
 void Manager::reloadConfigs()
 {
+    reloadTimer->restartOnce(reloadTimeout);
+}
+
+void Manager::doReloadConfigs()
+{
     for (auto& hook : reloadPreHooks)
     {
         try
diff --git a/src/network_manager.hpp b/src/network_manager.hpp
index 332971b..f574891 100644
--- a/src/network_manager.hpp
+++ b/src/network_manager.hpp
@@ -125,10 +125,15 @@
     void setFistBootMACOnInterface(
         const std::pair<std::string, std::string>& ethPair);
 
-    /** @brief Tell systemd-network to reload all of the network configurations
+    /** @brief Arms a timer to tell systemd-network to reload all of the network
+     * configurations
      */
     virtual void reloadConfigs();
 
+    /** @brief Tell systemd-network to reload all of the network configurations
+     */
+    void doReloadConfigs();
+
     /** @brief Returns the number of interfaces under this manager.
      *
      * @return the number of interfaces managed by this manager.
diff --git a/src/network_manager_main.cpp b/src/network_manager_main.cpp
index c295996..349c2ea 100644
--- a/src/network_manager_main.cpp
+++ b/src/network_manager_main.cpp
@@ -48,6 +48,7 @@
 
 std::unique_ptr<phosphor::network::Manager> manager = nullptr;
 std::unique_ptr<Timer> refreshObjectTimer = nullptr;
+std::unique_ptr<Timer> reloadTimer = nullptr;
 
 #ifdef SYNC_MAC_FROM_INVENTORY
 std::unique_ptr<sdbusplus::bus::match::match> EthInterfaceMatch = nullptr;
@@ -243,11 +244,22 @@
     }
 }
 
+void reloadNetworkd()
+{
+    if (manager)
+    {
+        log<level::INFO>("Sending networkd reload");
+        manager->doReloadConfigs();
+        log<level::INFO>("Done networkd reload");
+    }
+}
+
 void initializeTimers()
 {
     auto event = sdeventplus::Event::get_default();
     refreshObjectTimer =
         std::make_unique<Timer>(event, std::bind(refreshObjects));
+    reloadTimer = std::make_unique<Timer>(event, std::bind(reloadNetworkd));
 }
 
 } // namespace network
diff --git a/src/types.hpp b/src/types.hpp
index 082d588..69a314d 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -27,12 +27,12 @@
 
 using namespace std::chrono_literals;
 
-// wait for three seconds before restarting the networkd
-constexpr auto restartTimeout = 3s;
+// wait for three seconds before reloading systemd-networkd
+constexpr auto reloadTimeout = 3s;
 
 // refresh the objets after five seconds as network
 // configuration takes 3-4 sec after systemd-networkd restart.
-constexpr auto refreshTimeout = restartTimeout + 7s;
+constexpr auto refreshTimeout = reloadTimeout + 7s;
 
 namespace systemd
 {
diff --git a/test/global_network_objects.cpp b/test/global_network_objects.cpp
index 1aa71b7..0f6550f 100644
--- a/test/global_network_objects.cpp
+++ b/test/global_network_objects.cpp
@@ -11,7 +11,7 @@
 
 std::unique_ptr<MockManager> manager = nullptr;
 std::unique_ptr<Timer> refreshObjectTimer = nullptr;
-std::unique_ptr<Timer> restartTimer = nullptr;
+std::unique_ptr<Timer> reloadTimer = nullptr;
 
 /** @brief refresh the network objects. */
 void refreshObjects()
diff --git a/test/test_rtnetlink.cpp b/test/test_rtnetlink.cpp
index 47ccecf..c6a5f8f 100644
--- a/test/test_rtnetlink.cpp
+++ b/test/test_rtnetlink.cpp
@@ -21,7 +21,6 @@
 sdbusplus::bus::bus bus(sdbusplus::bus::new_default());
 extern std::unique_ptr<MockManager> manager;
 extern std::unique_ptr<Timer> refreshObjectTimer;
-extern std::unique_ptr<Timer> restartTimer;
 EventPtr eventPtr = nullptr;
 
 class TestRtNetlink : public testing::Test
