diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index bc33243..7f54f5e 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/neighbour.h>
 #include <linux/rtnetlink.h>
 #include <net/if.h>
 
@@ -207,10 +206,6 @@
 
 void EthernetInterface::addStaticNeigh(const NeighborInfo& info)
 {
-    if ((info.state & NUD_PERMANENT) == 0)
-    {
-        return;
-    }
     if (!info.mac || !info.addr)
     {
         auto msg = fmt::format("Missing neighbor mac on {}\n", interfaceName());
@@ -228,7 +223,7 @@
     staticNeighbors.clear();
     for (const auto& neighbor : system::getNeighbors({.ifidx = ifIdx}))
     {
-        addStaticNeigh(neighbor);
+        manager.addNeighbor(neighbor);
     }
 }
 
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index cdbade9..655fe5a 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -9,6 +9,7 @@
 #include "util.hpp"
 
 #include <linux/if_addr.h>
+#include <linux/neighbour.h>
 #include <net/if.h>
 
 #include <filesystem>
@@ -263,17 +264,40 @@
 
 void Manager::addNeighbor(const NeighborInfo& info)
 {
-    getIntfOrLog(interfacesByIdx, info.ifidx,
-                 [&](auto& intf) { intf.addStaticNeigh(info); });
+    if (!(info.state & NUD_PERMANENT) || !info.addr)
+    {
+        return;
+    }
+    if (auto it = interfacesByIdx.find(info.ifidx); it != interfacesByIdx.end())
+    {
+        it->second->addStaticNeigh(info);
+    }
+    else if (auto it = undiscoveredIntfInfo.find(info.ifidx);
+             it != undiscoveredIntfInfo.end())
+    {
+        it->second.staticNeighs.insert_or_assign(*info.addr, info);
+    }
+    else
+    {
+        throw std::runtime_error(
+            fmt::format("Interface `{}` not found for neigh", info.ifidx));
+    }
 }
 
 void Manager::removeNeighbor(const NeighborInfo& info)
 {
-    if (info.addr)
+    if (!info.addr)
     {
-        getIntfOrLog(interfacesByIdx, info.ifidx, [&](auto& intf) {
-            intf.staticNeighbors.erase(*info.addr);
-        });
+        return;
+    }
+    if (auto it = interfacesByIdx.find(info.ifidx); it != interfacesByIdx.end())
+    {
+        it->second->staticNeighbors.erase(*info.addr);
+    }
+    else if (auto it = undiscoveredIntfInfo.find(info.ifidx);
+             it != undiscoveredIntfInfo.end())
+    {
+        it->second.staticNeighs.erase(*info.addr);
     }
 }
 
