ethernet_interface: Reduce error logspam
Change-Id: I53c78556c576f60a6fc1ae74e90d50873f042c35
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/system_queries.cpp b/src/system_queries.cpp
index f02d568..0aa245e 100644
--- a/src/system_queries.cpp
+++ b/src/system_queries.cpp
@@ -57,6 +57,9 @@
{
ifreq ifr;
std::optional<decltype(complete(ifr))> ret;
+ auto ukey = std::make_tuple(std::string(ifname), cmd);
+ static std::unordered_set<std::tuple<std::string, unsigned long long>>
+ unsupported;
try
{
ifr = executeIFReq(ifname, cmd, data);
@@ -65,13 +68,19 @@
{
if (e.code() == std::errc::operation_not_supported)
{
- auto msg = fmt::format("{} not supported on {}", cmdname, ifname);
- log<level::INFO>(msg.c_str(),
- entry("INTERFACE=%s", ifname.c_str()));
+ if (unsupported.find(ukey) == unsupported.end())
+ {
+ unsupported.emplace(std::move(ukey));
+ auto msg =
+ fmt::format("{} not supported on {}", cmdname, ifname);
+ log<level::INFO>(msg.c_str(),
+ entry("INTERFACE=%s", ifname.c_str()));
+ }
return ret;
}
throw;
}
+ unsupported.erase(ukey);
ret.emplace(complete(ifr));
return ret;
}