xref: /openbmc/phosphor-networkd/src/neighbor.hpp (revision 9b2a20d3cfa1131521456b9ebfde7a7bb8b234bb)
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