diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp
index 1f36815..f29c482 100644
--- a/ethernet_interface.cpp
+++ b/ethernet_interface.cpp
@@ -43,14 +43,17 @@
     interfaceName(intfName);
     dHCPEnabled(dhcpEnabled);
     mACAddress(getMACAddress());
+    createIPAddressObjects();
     // Emit deferred signal.
     this->emit_object_added();
 }
 
-void EthernetInterface::setAddressList(const AddrList& addrs)
+void EthernetInterface::createIPAddressObjects()
 {
     std::string gateway;
+    addrs.clear();
 
+    auto addrs = getInterfaceAddrs()[interfaceName()];
     IP::Protocol addressType = IP::Protocol::IPv4;
     IP::AddressOrigin origin = IP::AddressOrigin::Static;
     route::Table routingTable;
@@ -276,5 +279,16 @@
     return objectPath.string();
 }
 
+bool EthernetInterface::dHCPEnabled(bool value)
+{
+    EthernetInterfaceIntf::dHCPEnabled(value);
+    if (value == true)
+    {
+        manager.writeToConfigurationFile();
+        createIPAddressObjects();
+    }
+    return value;
+}
+
 }//namespace network
 }//namespace phosphor
diff --git a/ethernet_interface.hpp b/ethernet_interface.hpp
index 313a0b9..805c2ac 100644
--- a/ethernet_interface.hpp
+++ b/ethernet_interface.hpp
@@ -23,6 +23,10 @@
         sdbusplus::xyz::openbmc_project::Network::IP::server::Create>;
 
 using IP = sdbusplus::xyz::openbmc_project::Network::server::IP;
+
+using EthernetInterfaceIntf =
+    sdbusplus::xyz::openbmc_project::Network::server::EthernetInterface;
+
 class Manager; // forward declaration of network manager.
 
 class TestEthernetInterface;
@@ -76,17 +80,22 @@
          */
         void deleteObject(const std::string& ipaddress);
 
-        /* @brief creates the dbus object given in the address list.
+        /* @brief creates the dbus object(IPaddres) given in the address list.
          * @param[in] addrs - address list for which dbus objects needs
          *                    to create.
          */
-        void setAddressList(const AddrList& addrs);
+        void createIPAddressObjects();
 
         /* @brief Gets all the ip addresses.
          * @returns the list of ipaddress.
          */
         const AddressMap& getAddresses() const { return addrs; }
 
+        /** Set value of DHCPEnabled */
+        bool dHCPEnabled(bool value) override;
+
+        using EthernetInterfaceIntf::dHCPEnabled;
+
     private:
 
         /** @brief get the info of the ethernet interface.
diff --git a/network_manager.cpp b/network_manager.cpp
index e1bfa41..0607b0e 100644
--- a/network_manager.cpp
+++ b/network_manager.cpp
@@ -63,8 +63,8 @@
                                       dhcp,
                                       *this)));
 
-        interfaces[intfInfo.first]->setAddressList(intfInfo.second);
     }
+
 }
 
 void Manager::createChildObjects()
