diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index b8f73c5..3480a57 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -5,9 +5,11 @@
 #include "xyz/openbmc_project/Network/IP/Create/server.hpp"
 #include "xyz/openbmc_project/Network/Neighbor/CreateStatic/server.hpp"
 
+#include <netinet/ether.h>
+
+#include <optional>
 #include <sdbusplus/bus.hpp>
 #include <sdbusplus/server/object.hpp>
-#include <stdplus/zstring.hpp>
 #include <stdplus/zstring_view.hpp>
 #include <string>
 #include <vector>
@@ -37,8 +39,6 @@
 using ServerList = std::vector<std::string>;
 using ObjectPath = sdbusplus::message::object_path;
 
-using VlanId = uint32_t;
-
 class Manager;
 
 class TestEthernetInterface;
@@ -50,6 +50,22 @@
 class Parser;
 }
 
+/** @class InterfaceInfo
+ *  @brief Information about interfaces from the kernel
+ */
+struct InterfaceInfo
+{
+    bool running;
+    unsigned index;
+    std::string name;
+    std::optional<ether_addr> mac;
+    std::optional<unsigned> mtu;
+};
+
+/** @brief Returns an InterfaceInfo for the given string name
+ */
+InterfaceInfo getInterfaceInfo(stdplus::zstring_view ifname);
+
 /** @class EthernetInterface
  *  @brief OpenBMC Ethernet Interface implementation.
  *  @details A concrete implementation for the
@@ -67,18 +83,22 @@
 
     /** @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] manager - parent object.
+     *  @param[in] info - Interface information.
+     *  @param[in] objRoot - Path to attach at.
      *  @param[in] config - The parsed configuation file.
-     *  @param[in] parent - parent object.
      *  @param[in] emitSignal - true if the object added signal needs to be
      *                          send.
      *  @param[in] enabled - Override the lookup of nicEnabled
      */
-    EthernetInterface(sdbusplus::bus_t& bus, stdplus::zstring_view objPath,
-                      const config::Parser& config, Manager& parent,
-                      bool emitSignal = true,
+    EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
+                      const InterfaceInfo& info, std::string_view objRoot,
+                      const config::Parser& config, bool emitSignal = true,
                       std::optional<bool> enabled = std::nullopt);
 
+    /** @brief Updates the interface information based on new InterfaceInfo */
+    void updateInfo(const InterfaceInfo& info);
+
     /** @brief Function used to load the ntpservers
      */
     void loadNTPServers(const config::Parser& config);
@@ -195,13 +215,13 @@
     /** @brief create Vlan interface.
      *  @param[in] id- VLAN identifier.
      */
-    ObjectPath createVLAN(VlanId id);
+    ObjectPath createVLAN(uint16_t id);
 
     /** @brief load the vlan info from the system
      *         and creates the ip address dbus objects.
      *  @param[in] vlanID- VLAN identifier.
      */
-    void loadVLAN(VlanId vlanID);
+    void loadVLAN(std::string_view objRoot, uint16_t vlanID);
 
     /** @brief write the network conf file with the in-memory objects.
      */
@@ -287,6 +307,11 @@
     friend class TestEthernetInterface;
 
   private:
+    EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
+                      const InterfaceInfo& info, std::string&& objPath,
+                      const config::Parser& config, bool emitSignal,
+                      std::optional<bool> enabled);
+
     /** @brief Determines if DHCP is active for the IP::Protocol supplied.
      *  @param[in] protocol - Either IPv4 or IPv6
      *  @returns true/false value if DHCP is active for the input protocol
@@ -304,8 +329,7 @@
      */
     bool queryNicEnabled() const;
 
-    std::string vlanIntfName(VlanId id) const;
-    std::string vlanObjPath(VlanId id) const;
+    std::string vlanIntfName(uint16_t id) const;
 };
 
 } // namespace network
