types: Migrate all of the Info types
Change-Id: I00f4fdf6141aafc4552d61fa06f75275dea71b20
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/ethernet_interface.cpp b/src/ethernet_interface.cpp
index a7bf8e3..b15f598 100644
--- a/src/ethernet_interface.cpp
+++ b/src/ethernet_interface.cpp
@@ -73,7 +73,7 @@
}
EthernetInterface::EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
- const system::InterfaceInfo& info,
+ const InterfaceInfo& info,
std::string_view objRoot,
const config::Parser& config,
bool emitSignal,
@@ -84,7 +84,7 @@
}
EthernetInterface::EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
- const system::InterfaceInfo& info,
+ const InterfaceInfo& info,
std::string&& objPath,
const config::Parser& config,
bool emitSignal,
@@ -147,7 +147,7 @@
}
}
-void EthernetInterface::updateInfo(const system::InterfaceInfo& info)
+void EthernetInterface::updateInfo(const InterfaceInfo& info)
{
EthernetInterfaceIntf::linkUp(info.flags & IFF_RUNNING);
if (info.mac)
@@ -677,7 +677,7 @@
{
mac.emplace(ToAddr<ether_addr>{}(macStr));
}
- auto info = system::InterfaceInfo{
+ auto info = InterfaceInfo{
.idx = 0, // TODO: Query the correct value after creation
.flags = 0,
.name = intfName,
@@ -994,8 +994,7 @@
EthernetInterface::VlanProperties::VlanProperties(
sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
- const system::InterfaceInfo& info, EthernetInterface& eth,
- bool emitSignal) :
+ const InterfaceInfo& info, EthernetInterface& eth, bool emitSignal) :
VlanIfaces(bus, objPath.c_str(),
emitSignal ? VlanIfaces::action::defer_emit
: VlanIfaces::action::emit_no_signals),
diff --git a/src/ethernet_interface.hpp b/src/ethernet_interface.hpp
index fcb45f6..ee83fe2 100644
--- a/src/ethernet_interface.hpp
+++ b/src/ethernet_interface.hpp
@@ -54,10 +54,6 @@
{
class Parser;
}
-namespace system
-{
-struct InterfaceInfo;
-};
/** @class EthernetInterface
* @brief OpenBMC Ethernet Interface implementation.
@@ -86,9 +82,8 @@
* @param[in] enabled - Override the lookup of nicEnabled
*/
EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
- const system::InterfaceInfo& info,
- std::string_view objRoot, const config::Parser& config,
- bool emitSignal = true,
+ const InterfaceInfo& info, std::string_view objRoot,
+ const config::Parser& config, bool emitSignal = true,
std::optional<bool> enabled = std::nullopt);
/** @brief Network Manager object. */
@@ -104,7 +99,7 @@
void addStaticNeigh(const NeighborInfo& info);
/** @brief Updates the interface information based on new InterfaceInfo */
- void updateInfo(const system::InterfaceInfo& info);
+ void updateInfo(const InterfaceInfo& info);
/** @brief Function used to load the ntpservers
*/
@@ -255,8 +250,8 @@
struct VlanProperties : VlanIfaces
{
VlanProperties(sdbusplus::bus_t& bus, stdplus::const_zstring objPath,
- const system::InterfaceInfo& info,
- EthernetInterface& eth, bool emitSignal = true);
+ const InterfaceInfo& info, EthernetInterface& eth,
+ bool emitSignal = true);
void delete_() override;
unsigned parentIdx;
EthernetInterface& eth;
@@ -268,7 +263,7 @@
private:
EthernetInterface(sdbusplus::bus_t& bus, Manager& manager,
- const system::InterfaceInfo& info, std::string&& objPath,
+ const InterfaceInfo& info, std::string&& objPath,
const config::Parser& config, bool emitSignal,
std::optional<bool> enabled);
diff --git a/src/system_queries.hpp b/src/system_queries.hpp
index 615c282..9217a1f 100644
--- a/src/system_queries.hpp
+++ b/src/system_queries.hpp
@@ -30,29 +30,6 @@
void setNICUp(std::string_view ifname, bool up);
-/** @class InterfaceInfo
- * @brief Information about interfaces from the kernel
- */
-struct InterfaceInfo
-{
- unsigned idx;
- unsigned flags;
- std::optional<std::string> name = std::nullopt;
- std::optional<ether_addr> mac = std::nullopt;
- std::optional<unsigned> mtu = std::nullopt;
- std::optional<unsigned> parent_idx = std::nullopt;
- std::optional<std::string> kind = std::nullopt;
- std::optional<uint16_t> vlan_id = std::nullopt;
-
- constexpr bool operator==(const InterfaceInfo& rhs) const noexcept
- {
- return idx == rhs.idx && flags == rhs.flags && name == rhs.name &&
- mac == rhs.mac && mtu == rhs.mtu &&
- parent_idx == rhs.parent_idx && kind == rhs.kind &&
- vlan_id == rhs.vlan_id;
- }
-};
-
struct AddressFilter
{
unsigned ifidx = 0;
diff --git a/src/types.hpp b/src/types.hpp
index bdb431d..9262623 100644
--- a/src/types.hpp
+++ b/src/types.hpp
@@ -16,6 +16,22 @@
#include <unordered_set>
#include <variant>
+constexpr bool operator==(ether_addr lhs, ether_addr rhs) noexcept
+{
+ return std::equal(lhs.ether_addr_octet, lhs.ether_addr_octet + 6,
+ rhs.ether_addr_octet);
+}
+
+constexpr bool operator==(in_addr lhs, in_addr rhs) noexcept
+{
+ return lhs.s_addr == rhs.s_addr;
+}
+
+constexpr bool operator==(in6_addr lhs, in6_addr rhs) noexcept
+{
+ return std::equal(lhs.s6_addr32, lhs.s6_addr32 + 4, rhs.s6_addr32);
+}
+
namespace phosphor
{
namespace network
@@ -75,6 +91,29 @@
using Timer = sdeventplus::utility::Timer<sdeventplus::ClockId::Monotonic>;
+/** @class InterfaceInfo
+ * @brief Information about interfaces from the kernel
+ */
+struct InterfaceInfo
+{
+ unsigned idx;
+ unsigned flags;
+ std::optional<std::string> name = std::nullopt;
+ std::optional<ether_addr> mac = std::nullopt;
+ std::optional<unsigned> mtu = std::nullopt;
+ std::optional<unsigned> parent_idx = std::nullopt;
+ std::optional<std::string> kind = std::nullopt;
+ std::optional<uint16_t> vlan_id = std::nullopt;
+
+ constexpr bool operator==(const InterfaceInfo& rhs) const noexcept
+ {
+ return idx == rhs.idx && flags == rhs.flags && name == rhs.name &&
+ mac == rhs.mac && mtu == rhs.mtu &&
+ parent_idx == rhs.parent_idx && kind == rhs.kind &&
+ vlan_id == rhs.vlan_id;
+ }
+};
+
/** @class AddressInfo
* @brief Information about a addresses from the kernel
*/
@@ -84,6 +123,12 @@
IfAddr ifaddr;
uint8_t scope;
uint32_t flags;
+
+ constexpr bool operator==(const AddressInfo& rhs) const noexcept
+ {
+ return ifidx == rhs.ifidx && ifaddr == rhs.ifaddr &&
+ scope == rhs.scope && flags == rhs.flags;
+ }
};
/** @class NeighborInfo
@@ -92,9 +137,15 @@
struct NeighborInfo
{
unsigned ifidx;
+ uint16_t state;
InAddrAny addr;
std::optional<ether_addr> mac;
- uint16_t state;
+
+ constexpr bool operator==(const NeighborInfo& rhs) const noexcept
+ {
+ return ifidx == rhs.ifidx && state == rhs.state && addr == rhs.addr &&
+ mac == rhs.mac;
+ }
};
struct string_hash : public std::hash<std::string_view>
@@ -770,22 +821,6 @@
string to_string(phosphor::network::IfAddr value);
} // namespace std
-constexpr bool operator==(ether_addr lhs, ether_addr rhs) noexcept
-{
- return std::equal(lhs.ether_addr_octet, lhs.ether_addr_octet + 6,
- rhs.ether_addr_octet);
-}
-
-constexpr bool operator==(in_addr lhs, in_addr rhs) noexcept
-{
- return lhs.s_addr == rhs.s_addr;
-}
-
-constexpr bool operator==(in6_addr lhs, in6_addr rhs) noexcept
-{
- return std::equal(lhs.s6_addr32, lhs.s6_addr32 + 4, rhs.s6_addr32);
-}
-
template <typename T>
constexpr std::enable_if_t<!std::is_same_v<phosphor::network::InAddrAny, T>,
bool>
diff --git a/test/mock_syscall.cpp b/test/mock_syscall.cpp
index d16b668..0699ceb 100644
--- a/test/mock_syscall.cpp
+++ b/test/mock_syscall.cpp
@@ -27,7 +27,7 @@
std::map<int, std::queue<std::string>> mock_rtnetlinks;
-using phosphor::network::system::InterfaceInfo;
+using phosphor::network::InterfaceInfo;
std::map<std::string, InterfaceInfo> mock_if;
diff --git a/test/test_ethernet_interface.cpp b/test/test_ethernet_interface.cpp
index bd03aff..a7b3c69 100644
--- a/test/test_ethernet_interface.cpp
+++ b/test/test_ethernet_interface.cpp
@@ -48,7 +48,7 @@
MockManager& manager)
{
system::mock_clear();
- system::InterfaceInfo info{.idx = 1, .flags = 0, .name = "test0"};
+ InterfaceInfo info{.idx = 1, .flags = 0, .name = "test0"};
system::mock_addIF(info);
return {bus, manager, info, "/xyz/openbmc_test/network"sv,
config::Parser()};
@@ -81,11 +81,11 @@
constexpr ether_addr mac{0x11, 0x22, 0x33, 0x44, 0x55, 0x66};
constexpr unsigned mtu = 150;
- system::InterfaceInfo info{.idx = 2,
- .flags = IFF_RUNNING,
- .name = "test1",
- .mac = mac,
- .mtu = mtu};
+ InterfaceInfo info{.idx = 2,
+ .flags = IFF_RUNNING,
+ .name = "test1",
+ .mac = mac,
+ .mtu = mtu};
system::mock_addIF(info);
MockEthernetInterface intf(bus, manager, info,
"/xyz/openbmc_test/network"sv, config::Parser());
diff --git a/test/test_netlink.cpp b/test/test_netlink.cpp
index c5292a7..c6f7983 100644
--- a/test/test_netlink.cpp
+++ b/test/test_netlink.cpp
@@ -298,7 +298,7 @@
system::mock_clear();
for (unsigned i = 0; i < ifs; ++i)
{
- system::mock_addIF(system::InterfaceInfo{
+ system::mock_addIF(InterfaceInfo{
.idx = i + 1u, .flags = 0, .name = fmt::format("eth{}", i)});
}