diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index 0408219..bc33243 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -9,7 +9,6 @@
 
 #include <fmt/compile.h>
 #include <fmt/format.h>
-#include <linux/if_addr.h>
 #include <linux/neighbour.h>
 #include <linux/rtnetlink.h>
 #include <net/if.h>
@@ -172,10 +171,6 @@
 
 void EthernetInterface::addAddr(const AddressInfo& info)
 {
-    if (info.flags & IFA_F_DEPRECATED)
-    {
-        return;
-    }
     IP::AddressOrigin origin = IP::AddressOrigin::Static;
     if (dhcpIsEnabled(info.ifaddr.getAddr()))
     {
@@ -206,7 +201,7 @@
     addrs.clear();
     for (const auto& addr : system::getAddresses({.ifidx = ifIdx}))
     {
-        addAddr(addr);
+        manager.addAddress(addr);
     }
 }
 
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 62ca491..cdbade9 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -8,6 +8,7 @@
 #include "types.hpp"
 #include "util.hpp"
 
+#include <linux/if_addr.h>
 #include <net/if.h>
 
 #include <filesystem>
@@ -227,14 +228,37 @@
 
 void Manager::addAddress(const AddressInfo& info)
 {
-    getIntfOrLog(interfacesByIdx, info.ifidx,
-                 [&](auto& intf) { intf.addAddr(info); });
+    if (info.flags & IFA_F_DEPRECATED)
+    {
+        return;
+    }
+    if (auto it = interfacesByIdx.find(info.ifidx); it != interfacesByIdx.end())
+    {
+        it->second->addAddr(info);
+    }
+    else if (auto it = undiscoveredIntfInfo.find(info.ifidx);
+             it != undiscoveredIntfInfo.end())
+    {
+        it->second.addrs.insert_or_assign(info.ifaddr, info);
+    }
+    else
+    {
+        throw std::runtime_error(
+            fmt::format("Interface `{}` not found for addr", info.ifidx));
+    }
 }
 
 void Manager::removeAddress(const AddressInfo& info)
 {
-    getIntfOrLog(interfacesByIdx, info.ifidx,
-                 [&](auto& intf) { intf.addrs.erase(info.ifaddr); });
+    if (auto it = interfacesByIdx.find(info.ifidx); it != interfacesByIdx.end())
+    {
+        it->second->addrs.erase(info.ifaddr);
+    }
+    else if (auto it = undiscoveredIntfInfo.find(info.ifidx);
+             it != undiscoveredIntfInfo.end())
+    {
+        it->second.addrs.erase(info.ifaddr);
+    }
 }
 
 void Manager::addNeighbor(const NeighborInfo& info)
