network_manager: Move interface validation
This will be required so the rtnetlink_server can add new interfaces.
Change-Id: I72f8687515ff92bdc339689da0c07788ef664504
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/network_manager.cpp b/src/network_manager.cpp
index 79a4e41..62ca491 100644
--- a/src/network_manager.cpp
+++ b/src/network_manager.cpp
@@ -6,6 +6,9 @@
#include "ipaddress.hpp"
#include "system_queries.hpp"
#include "types.hpp"
+#include "util.hpp"
+
+#include <net/if.h>
#include <filesystem>
#include <fstream>
@@ -141,6 +144,22 @@
void Manager::addInterface(const InterfaceInfo& info)
{
+ if (info.flags & IFF_LOOPBACK)
+ {
+ return;
+ }
+ if (!info.name)
+ {
+ throw std::invalid_argument("Interface missing name");
+ }
+ const auto& ignored = internal::getIgnoredInterfaces();
+ if (ignored.find(*info.name) != ignored.end())
+ {
+ auto msg = fmt::format("Ignoring interface {}\n", *info.name);
+ log<level::INFO>(msg.c_str());
+ return;
+ }
+
auto it = systemdNetworkdEnabled.find(info.idx);
if (it != systemdNetworkdEnabled.end())
{