diff --git a/ethernet_interface.cpp b/ethernet_interface.cpp
index 06dd416..fc21424 100644
--- a/ethernet_interface.cpp
+++ b/ethernet_interface.cpp
@@ -30,18 +30,25 @@
 
 EthernetInterface::EthernetInterface(sdbusplus::bus::bus& bus,
                                      const std::string& objPath,
-                                     bool dhcpEnabled,
-                                     const AddrList& addrs) :
+                                     bool dhcpEnabled) :
                                      Ifaces(bus, objPath.c_str(), true),
                                      bus(bus)
+
 {
     auto intfName = objPath.substr(objPath.rfind("/") + 1);
     interfaceName(intfName);
     dHCPEnabled(dhcpEnabled);
     mACAddress(getMACAddress());
+    // Emit deferred signal.
+    this->emit_object_added();
+}
+
+void EthernetInterface::setAddressList(const AddrList& addrs)
+{
     std::string gateway;
 
     IP::Protocol addressType = IP::Protocol::IPv4;
+    IP::AddressOrigin origin = IP::AddressOrigin::Static;
 
     for (auto addr : addrs)
     {
@@ -63,11 +70,10 @@
                         *this,
                         addressType,
                         addr.ipaddress,
+                        origin,
                         addr.prefix,
                         gateway)));
     }
-    // Emit deferred signal.
-    this->emit_object_added();
 }
 
 void EthernetInterface::iP(IP::Protocol protType,
@@ -75,6 +81,8 @@
                            uint8_t prefixLength,
                            std::string gateway)
 {
+    IP::AddressOrigin origin = IP::AddressOrigin::Static;
+
     std::string objectPath = generateObjectPath(protType,
                                                 ipaddress,
                                                 prefixLength,
@@ -88,6 +96,7 @@
                                 *this,
                                 protType,
                                 ipaddress,
+                                origin,
                                 prefixLength,
                                 gateway)));
 }
@@ -216,7 +225,13 @@
 
 void EthernetInterface::deleteObject(const std::string& ipaddress)
 {
-    this->addrs.erase(addrs.find(ipaddress));
+    auto it = addrs.find(ipaddress);
+    if( it == addrs.end())
+    {
+         log<level::ERR>("DeleteObject:Unable to find the object.");
+         return;
+    }
+    this->addrs.erase(it);
 }
 
 std::string EthernetInterface::generateObjectPath(IP::Protocol addressType,
@@ -225,14 +240,14 @@
                                                   const std::string& gateway) const
 {
     std::string type = convertForMessage(addressType);
-    type = type.substr(type.rfind('.')+1);
+    type = type.substr(type.rfind('.') + 1);
     std::transform(type.begin(), type.end(), type.begin(), ::tolower);
 
     std::experimental::filesystem::path objectPath;
     objectPath /= std::string(OBJ_NETWORK);
     objectPath /= interfaceName();
     objectPath /= type;
-    objectPath /= generateId(ipaddress,prefixLength,gateway);
+    objectPath /= generateId(ipaddress, prefixLength, gateway);
     return objectPath.string();
 
 }
diff --git a/ethernet_interface.hpp b/ethernet_interface.hpp
index 6ef1ec9..c755f06 100644
--- a/ethernet_interface.hpp
+++ b/ethernet_interface.hpp
@@ -24,12 +24,11 @@
 
 using IP = sdbusplus::xyz::openbmc_project::Network::server::IP;
 
-
 using LinkSpeed = uint16_t;
 using DuplexMode = uint8_t;
 using Autoneg = uint8_t;
 using InterfaceInfo = std::tuple<LinkSpeed, DuplexMode, Autoneg>;
-
+using AddressMap = std::map<std::string, std::shared_ptr<IPAddress>>;
 
 /** @class EthernetInterface
  *  @brief OpenBMC Ethernet Interface implementation.
@@ -49,17 +48,15 @@
         /** @brief Constructor to put object onto bus at a dbus path.
          *  @param[in] bus - Bus to attach to.
          *  @param[in] objPath - Path to attach at.
-         *  @param[in] intfName - name of the ethernet interface.
          *  @param[in] dhcpEnabled - is dhcp enabled(true/false).
          */
         EthernetInterface(sdbusplus::bus::bus& bus,
                           const std::string& objPath,
-                          bool dhcpEnabled,
-                          const AddrList& addrs);
+                          bool dhcpEnabled);
 
         /** @brief Function to create ipaddress dbus object.
          *  @param[in] addressType - Type of ip address.
-         *  @param[in] ipaddress- IP adress.
+         *  @param[in] ipaddress- IP address.
          *  @param[in] prefixLength - Length of prefix.
          *  @param[in] gateway - Gateway ip address.
          */
@@ -69,11 +66,21 @@
                 uint8_t prefixLength,
                 std::string gateway) override;
 
-        /** @brief delete the dbus object of the given ipaddress.
+        /* @brief delete the dbus object of the given ipaddress.
+         * @param[in] ipaddress - IP address.
          */
-
         void deleteObject(const std::string& ipaddress);
 
+        /* @brief creates the dbus object given in the address list.
+         * @param[in] addrs - address list for which dbus objects needs
+         *                    to create.
+         */
+        void setAddressList(const AddrList& addrs);
+
+        /* @brief Gets all the ip addresses.
+         * @returns the list of ipaddress.
+         */
+        const AddressMap& getAddresses() const { return addrs; }
 
     private:
 
@@ -119,8 +126,7 @@
         sdbusplus::bus::bus& bus;
 
         /** @brief Persistent map of IPAddress dbus objects and their names */
-        std::map<std::string, std::unique_ptr<IPAddress>> addrs;
-
+        AddressMap addrs;
 
 };
 
diff --git a/ipaddress.cpp b/ipaddress.cpp
index 3241102..b2407ef 100644
--- a/ipaddress.cpp
+++ b/ipaddress.cpp
@@ -15,6 +15,7 @@
           EthernetInterface& parent,
           IP::Protocol type,
           const std::string& ipaddress,
+          IP::AddressOrigin origin,
           uint8_t prefixLength,
           const std::string& gateway):
           IPIfaces(bus, objPath, true),
@@ -24,6 +25,8 @@
    this->prefixLength(prefixLength);
    this->gateway(gateway);
    this->type(type);
+   this->origin(origin);
+
    // Emit deferred signal.
    emit_object_added();
 }
diff --git a/ipaddress.hpp b/ipaddress.hpp
index 628f9cf..51c17ce 100644
--- a/ipaddress.hpp
+++ b/ipaddress.hpp
@@ -44,6 +44,7 @@
          *  @param[in] parent - Parent object.
          *  @param[in] type - ipaddress type(v4/v6).
          *  @param[in] ipAddress - ipadress.
+         *  @param[in] origin - origin of ipaddress(dhcp/static/SLAAC/LinkLocal).
          *  @param[in] prefixLength - Length of prefix.
          *  @param[in] gateway - gateway address.
          */
@@ -52,6 +53,7 @@
                   EthernetInterface& parent,
                   IP::Protocol type,
                   const std::string& ipAddress,
+                  IP::AddressOrigin origin,
                   uint8_t prefixLength,
                   const std::string& gateway);
 
diff --git a/network_manager.cpp b/network_manager.cpp
index a4a9b54..40fce1d 100644
--- a/network_manager.cpp
+++ b/network_manager.cpp
@@ -26,25 +26,31 @@
 namespace fs = std::experimental::filesystem;
 
 Manager::Manager(sdbusplus::bus::bus& bus, const char* objPath):
-    details::VLANCreateIface(bus, objPath, true)
+    details::VLANCreateIface(bus, objPath, true),
+    bus(bus),
+    objectPath(objPath)
 {
+}
+
+void Manager::createInterfaces()
+{
+
     auto interfaceInfoList = getInterfaceAddrs();
 
     for (const auto& intfInfo : interfaceInfoList)
-
     {
-
-        fs::path objectPath = std::string(OBJ_NETWORK);
-        objectPath /= intfInfo.first;
+        fs::path objPath = objectPath;
+        objPath /= intfInfo.first;
 
         this->interfaces.emplace(std::make_pair(
                                      intfInfo.first,
                                      std::make_unique<
                                      phosphor::network::EthernetInterface>
                                      (bus,
-                                      objectPath.string(),
-                                      false,
-                                      intfInfo.second)));
+                                      objPath.string(),
+                                      false)));
+
+        interfaces[intfInfo.first]->setAddressList(intfInfo.second);
     }
 }
 
diff --git a/network_manager.hpp b/network_manager.hpp
index 553951c..e8dfa8e 100644
--- a/network_manager.hpp
+++ b/network_manager.hpp
@@ -74,18 +74,31 @@
 
         void vLAN(IntfName interfaceName, uint16_t id) override;
 
+        /** @brief Fetch the interface and the ipaddress details
+         *         from the system and create the ethernet interraces
+         *         dbus object.
+         */
+        void createInterfaces();
+
+
     private:
         /** @brief Get all the interfaces from the system.
          *  @returns list of interface names.
          */
         IntfAddrMap getInterfaceAddrs() const;
 
+        /** @brief Persistent sdbusplus DBus bus connection. */
+        sdbusplus::bus::bus& bus;
+
         /** @brief Persistent map of EthernetInterface dbus objects and their names */
         std::map<IntfName, std::unique_ptr<EthernetInterface>> interfaces;
 
         /** @brief BMC network reset - resets network configuration for BMC. */
         void reset() override;
 
+        /** @brief Path of Object. */
+        std::string objectPath;
+
 };
 
 } // namespace network
diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index 5e79566..a53d32c 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -12,6 +12,8 @@
 
     phosphor::network::Manager manager(bus, OBJ_NETWORK);
 
+    manager.createInterfaces();
+
     bus.request_name(BUSNAME_NETWORK);
 
     while(true)
