diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 2d7ce98..79a4e41 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -124,19 +124,19 @@
     }
 }
 
-void Manager::createInterface(const InterfaceInfo& info, bool enabled)
+void Manager::createInterface(const UndiscoveredInfo& info, bool enabled)
 {
-    removeInterface(info);
-    config::Parser config(config::pathForIntfConf(confDir, *info.name));
+    removeInterface(info.intf);
+    config::Parser config(config::pathForIntfConf(confDir, *info.intf.name));
     auto intf = std::make_unique<EthernetInterface>(
-        bus, *this, info, objectPath, config, true, enabled);
+        bus, *this, info.intf, objectPath, config, true, enabled);
     intf->createIPAddressObjects();
     intf->createStaticNeighborObjects();
     intf->loadNameServers(config);
     intf->loadNTPServers(config);
     auto ptr = intf.get();
-    interfaces.emplace(*info.name, std::move(intf));
-    interfacesByIdx.emplace(info.idx, ptr);
+    interfaces.insert_or_assign(*info.intf.name, std::move(intf));
+    interfacesByIdx.insert_or_assign(info.intf.idx, ptr);
 }
 
 void Manager::addInterface(const InterfaceInfo& info)
@@ -144,11 +144,12 @@
     auto it = systemdNetworkdEnabled.find(info.idx);
     if (it != systemdNetworkdEnabled.end())
     {
-        createInterface(info, it->second);
+        createInterface({info}, it->second);
     }
     else
     {
-        undiscoveredIntfInfo.insert_or_assign(info.idx, std::move(info));
+        undiscoveredIntfInfo.insert_or_assign(
+            info.idx, UndiscoveredInfo{std::move(info)});
     }
 }
 
diff --git a/src/network_manager.hpp b/src/network_manager.hpp
index b357107..3f0eaab 100644
--- a/src/network_manager.hpp
+++ b/src/network_manager.hpp
@@ -187,7 +187,15 @@
     route::Table routeTable;
 
     /** @brief Map of interface info for undiscovered interfaces */
-    std::unordered_map<unsigned, InterfaceInfo> undiscoveredIntfInfo;
+    struct UndiscoveredInfo
+    {
+        InterfaceInfo intf;
+        std::optional<in_addr> defgw4 = std::nullopt;
+        std::optional<in6_addr> defgw6 = std::nullopt;
+        std::unordered_map<IfAddr, AddressInfo> addrs = {};
+        std::unordered_map<InAddrAny, NeighborInfo> staticNeighs = {};
+    };
+    std::unordered_map<unsigned, UndiscoveredInfo> undiscoveredIntfInfo;
 
     /** @brief Map of enabled interfaces */
     std::unordered_map<unsigned, bool> systemdNetworkdEnabled;
@@ -200,7 +208,7 @@
     void handleAdminState(std::string_view state, unsigned ifidx);
 
     /** @brief Creates the interface in the maps */
-    void createInterface(const InterfaceInfo& info, bool enabled);
+    void createInterface(const UndiscoveredInfo& info, bool enabled);
 };
 
 } // namespace network
