11bbe3d1eSWilliam A. Kennington III #pragma once 21bbe3d1eSWilliam A. Kennington III #include "types.hpp" 31bbe3d1eSWilliam A. Kennington III 41bbe3d1eSWilliam A. Kennington III #include <sdbusplus/bus.hpp> 5434a943cSWilliam A. Kennington III #include <sdbusplus/message/native_types.hpp> 61bbe3d1eSWilliam A. Kennington III #include <sdbusplus/server/object.hpp> 79ede1b74SWilliam A. Kennington III #include <stdplus/pinned.hpp> 81bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Network/Neighbor/server.hpp> 91bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Object/Delete/server.hpp> 101bbe3d1eSWilliam A. Kennington III 1189d734b9SPatrick Williams #include <string_view> 1289d734b9SPatrick Williams 131bbe3d1eSWilliam A. Kennington III namespace phosphor 141bbe3d1eSWilliam A. Kennington III { 151bbe3d1eSWilliam A. Kennington III namespace network 161bbe3d1eSWilliam A. Kennington III { 171bbe3d1eSWilliam A. Kennington III 181bbe3d1eSWilliam A. Kennington III using NeighborIntf = sdbusplus::xyz::openbmc_project::Network::server::Neighbor; 191bbe3d1eSWilliam A. Kennington III 20c38b0710SPatrick Williams using NeighborObj = sdbusplus::server::object_t< 211bbe3d1eSWilliam A. Kennington III NeighborIntf, sdbusplus::xyz::openbmc_project::Object::server::Delete>; 221bbe3d1eSWilliam A. Kennington III 231bbe3d1eSWilliam A. Kennington III class EthernetInterface; 241bbe3d1eSWilliam A. Kennington III 251bbe3d1eSWilliam A. Kennington III /** @class Neighbor 261bbe3d1eSWilliam A. Kennington III * @brief OpenBMC network neighbor implementation. 271bbe3d1eSWilliam A. Kennington III * @details A concrete implementation for the 281bbe3d1eSWilliam A. Kennington III * xyz.openbmc_project.Network.Neighbor dbus interface. 291bbe3d1eSWilliam A. Kennington III */ 301bbe3d1eSWilliam A. Kennington III class Neighbor : public NeighborObj 311bbe3d1eSWilliam A. Kennington III { 321bbe3d1eSWilliam A. Kennington III public: 331bbe3d1eSWilliam A. Kennington III /** @brief Constructor to put object onto bus at a dbus path. 341bbe3d1eSWilliam A. Kennington III * @param[in] bus - Bus to attach to. 35434a943cSWilliam A. Kennington III * @param[in] objRoot - Path to attach at. 361bbe3d1eSWilliam A. Kennington III * @param[in] parent - Parent object. 37434a943cSWilliam A. Kennington III * @param[in] addr - IP address. 38434a943cSWilliam A. Kennington III * @param[in] lladdr - Low level MAC address. 391bbe3d1eSWilliam A. Kennington III * @param[in] state - The state of the neighbor entry. 401bbe3d1eSWilliam A. Kennington III */ 41434a943cSWilliam A. Kennington III Neighbor(sdbusplus::bus_t& bus, std::string_view objRoot, 42*9b2a20d3SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent, 43*9b2a20d3SWilliam A. Kennington III stdplus::InAnyAddr addr, stdplus::EtherAddr lladdr, State state); 441bbe3d1eSWilliam A. Kennington III 451bbe3d1eSWilliam A. Kennington III /** @brief Delete this d-bus object. 461bbe3d1eSWilliam A. Kennington III */ 471bbe3d1eSWilliam A. Kennington III void delete_() override; 481bbe3d1eSWilliam A. Kennington III 498e61ca9dSWilliam A. Kennington III using NeighborObj::ipAddress; 508e61ca9dSWilliam A. Kennington III std::string ipAddress(std::string) override; 518e61ca9dSWilliam A. Kennington III using NeighborObj::macAddress; 528e61ca9dSWilliam A. Kennington III std::string macAddress(std::string) override; 538e61ca9dSWilliam A. Kennington III using NeighborObj::state; 548e61ca9dSWilliam A. Kennington III State state(State) override; 558e61ca9dSWilliam A. Kennington III getObjPath() const56434a943cSWilliam A. Kennington III inline const auto& getObjPath() const 57434a943cSWilliam A. Kennington III { 58434a943cSWilliam A. Kennington III return objPath; 59434a943cSWilliam A. Kennington III } 60434a943cSWilliam A. Kennington III 611bbe3d1eSWilliam A. Kennington III private: 621bbe3d1eSWilliam A. Kennington III /** @brief Parent Object. */ 639ede1b74SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent; 64434a943cSWilliam A. Kennington III 65434a943cSWilliam A. Kennington III /** @brief Dbus object path */ 66434a943cSWilliam A. Kennington III sdbusplus::message::object_path objPath; 67434a943cSWilliam A. Kennington III 68434a943cSWilliam A. Kennington III Neighbor(sdbusplus::bus_t& bus, sdbusplus::message::object_path objPath, 69*9b2a20d3SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent, 70*9b2a20d3SWilliam A. Kennington III stdplus::InAnyAddr addr, stdplus::EtherAddr lladdr, State state); 711bbe3d1eSWilliam A. Kennington III }; 721bbe3d1eSWilliam A. Kennington III 731bbe3d1eSWilliam A. Kennington III } // namespace network 741bbe3d1eSWilliam A. Kennington III } // namespace phosphor 75