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>