diff --git a/dhcp_configuration.cpp b/dhcp_configuration.cpp
index e492156..7707461 100644
--- a/dhcp_configuration.cpp
+++ b/dhcp_configuration.cpp
@@ -40,7 +40,7 @@
 
     auto name = ConfigIntf::hostNameEnabled(value);
     manager.writeToConfigurationFile();
-    restartSystemdUnit(phosphor::network::networkdService);
+    manager.restartSystemdUnit(phosphor::network::networkdService);
 
     return name;
 }
@@ -54,8 +54,8 @@
 
     auto ntp = ConfigIntf::nTPEnabled(value);
     manager.writeToConfigurationFile();
-    restartSystemdUnit(phosphor::network::networkdService);
-    restartSystemdUnit(phosphor::network::timeSynchdService);
+    manager.restartSystemdUnit(phosphor::network::networkdService);
+    manager.restartSystemdUnit(phosphor::network::timeSynchdService);
 
     return ntp;
 }
@@ -69,7 +69,7 @@
 
     auto dns = ConfigIntf::dNSEnabled(value);
     manager.writeToConfigurationFile();
-    restartSystemdUnit(phosphor::network::networkdService);
+    manager.restartSystemdUnit(phosphor::network::networkdService);
 
     return dns;
 }
diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp
index 893cd4c..f2ad372 100644
--- a/ethernet_interface.cpp
+++ b/ethernet_interface.cpp
@@ -463,7 +463,7 @@
     writeConfigurationFile();
     // timesynchd reads the NTP server configuration from the
     // network file.
-    restartSystemdUnit(networkdService);
+    manager.restartSystemdUnit(networkdService);
     return ntpServers;
 }
 // Need to merge the below function with the code which writes the
@@ -701,7 +701,7 @@
     // ip for the changed mac address.
     if (dHCPEnabled())
     {
-        restartSystemdUnit(networkdService);
+        manager.restartSystemdUnit(networkdService);
     }
     return mac;
 }
diff --git a/network_manager.hpp b/network_manager.hpp
index 23eaacb..7a98f9a 100644
--- a/network_manager.hpp
+++ b/network_manager.hpp
@@ -115,6 +115,20 @@
     /** @brief restart the network timers. */
     void restartTimers();
 
+    /** @brief Restart the systemd unit
+     *  @param[in] unit - systemd unit name which needs to be
+     *                    restarted.
+     */
+    inline void restartSystemdUnit(const std::string& unit)
+    {
+        auto bus = sdbusplus::bus::new_default();
+        auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
+                                          SYSTEMD_INTERFACE, "RestartUnit");
+
+        method.append(unit, "replace");
+        bus.call_noreply(method);
+    }
+
   private:
     /** @brief Persistent sdbusplus DBus bus connection. */
     sdbusplus::bus::bus& bus;
diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index 2bc203f..dfaeecc 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -46,7 +46,10 @@
 /** @brief restart the systemd networkd. */
 void restartNetwork()
 {
-    restartSystemdUnit("systemd-networkd.service");
+    if (manager)
+    {
+        manager->restartSystemdUnit("systemd-networkd.service");
+    }
 }
 
 void initializeTimers()
diff --git a/util.hpp b/util.hpp
index b3ec771..51c2e04 100644
--- a/util.hpp
+++ b/util.hpp
@@ -121,20 +121,6 @@
  */
 IntfAddrMap getInterfaceAddrs();
 
-/** @brief Restart the systemd unit
- *  @param[in] unit - systemd unit name which needs to be
- *                    restarted.
- */
-inline void restartSystemdUnit(const std::string& unit)
-{
-    auto bus = sdbusplus::bus::new_default();
-    auto method = bus.new_method_call(SYSTEMD_BUSNAME, SYSTEMD_PATH,
-                                      SYSTEMD_INTERFACE, "RestartUnit");
-
-    method.append(unit, "replace");
-    bus.call_noreply(method);
-}
-
 /** @brief Get all the interfaces from the system.
  *  @returns list of interface names.
  */
