ethernet_interface: Merge VLAN into EthernetInterface

This simplifies the ethernet interface as it codepended on the vlan
interface to make VLANs. It also removes the naming dependency and
tracks VLANs by adapter type and parent indexes.

Change-Id: I8db09cc2474472e6d4a06c6be5cf0440ee48d132
Signed-off-by: William A. Kennington III <wak@google.com>
diff --git a/src/system_queries.hpp b/src/system_queries.hpp
index 3bbb021..32d54cf 100644
--- a/src/system_queries.hpp
+++ b/src/system_queries.hpp
@@ -40,11 +40,16 @@
     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;
+               mac == rhs.mac && mtu == rhs.mtu &&
+               parent_idx == rhs.parent_idx && kind == rhs.kind &&
+               vlan_id == rhs.vlan_id;
     }
 };