11bbe3d1eSWilliam A. Kennington III #pragma once 2c2e5e0e9SWilliam A. Kennington III #include "types.hpp" 31bbe3d1eSWilliam A. Kennington III 41bbe3d1eSWilliam A. Kennington III #include <sdbusplus/bus.hpp> 559e5b91dSWilliam 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/IP/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 18c38b0710SPatrick Williams using IPIfaces = sdbusplus::server::object_t< 191bbe3d1eSWilliam A. Kennington III sdbusplus::xyz::openbmc_project::Network::server::IP, 201bbe3d1eSWilliam A. Kennington III sdbusplus::xyz::openbmc_project::Object::server::Delete>; 211bbe3d1eSWilliam A. Kennington III 221bbe3d1eSWilliam A. Kennington III using IP = sdbusplus::xyz::openbmc_project::Network::server::IP; 231bbe3d1eSWilliam A. Kennington III 241bbe3d1eSWilliam A. Kennington III class EthernetInterface; 251bbe3d1eSWilliam A. Kennington III 261bbe3d1eSWilliam A. Kennington III /** @class IPAddress 271bbe3d1eSWilliam A. Kennington III * @brief OpenBMC IPAddress implementation. 281bbe3d1eSWilliam A. Kennington III * @details A concrete implementation for the 291bbe3d1eSWilliam A. Kennington III * xyz.openbmc_project.Network.IPProtocol 301bbe3d1eSWilliam A. Kennington III * xyz.openbmc_project.Network.IP Dbus interfaces. 311bbe3d1eSWilliam A. Kennington III */ 321bbe3d1eSWilliam A. Kennington III class IPAddress : public IPIfaces 331bbe3d1eSWilliam A. Kennington III { 341bbe3d1eSWilliam A. Kennington III public: 351bbe3d1eSWilliam A. Kennington III /** @brief Constructor to put object onto bus at a dbus path. 361bbe3d1eSWilliam A. Kennington III * @param[in] bus - Bus to attach to. 3759e5b91dSWilliam A. Kennington III * @param[in] objRoot - Path to attach at. 381bbe3d1eSWilliam A. Kennington III * @param[in] parent - Parent object. 3959e5b91dSWilliam A. Kennington III * @param[in] addr - The ip address and prefix. 401bbe3d1eSWilliam A. Kennington III * @param[in] origin - origin of ipaddress(dhcp/static/SLAAC/LinkLocal). 411bbe3d1eSWilliam A. Kennington III */ 4259e5b91dSWilliam A. Kennington III IPAddress(sdbusplus::bus_t& bus, std::string_view objRoot, 43*9b2a20d3SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent, 44*9b2a20d3SWilliam A. Kennington III stdplus::SubnetAny addr, IP::AddressOrigin origin); 451bbe3d1eSWilliam A. Kennington III 465e72d085SWilliam A. Kennington III std::string address(std::string ipAddress) override; 475e72d085SWilliam A. Kennington III uint8_t prefixLength(uint8_t) override; 485e72d085SWilliam A. Kennington III std::string gateway(std::string gateway) override; 495e72d085SWilliam A. Kennington III IP::Protocol type(IP::Protocol type) override; 505e72d085SWilliam A. Kennington III IP::AddressOrigin origin(IP::AddressOrigin origin) override; 515e72d085SWilliam A. Kennington III 521bbe3d1eSWilliam A. Kennington III /** @brief Delete this d-bus object. 531bbe3d1eSWilliam A. Kennington III */ 541bbe3d1eSWilliam A. Kennington III void delete_() override; 551bbe3d1eSWilliam A. Kennington III 561bbe3d1eSWilliam A. Kennington III using IP::address; 571bbe3d1eSWilliam A. Kennington III using IP::gateway; 581bbe3d1eSWilliam A. Kennington III using IP::origin; 591bbe3d1eSWilliam A. Kennington III using IP::prefixLength; 601bbe3d1eSWilliam A. Kennington III using IP::type; 611bbe3d1eSWilliam A. Kennington III getObjPath() const6259e5b91dSWilliam A. Kennington III inline const auto& getObjPath() const 6359e5b91dSWilliam A. Kennington III { 6459e5b91dSWilliam A. Kennington III return objPath; 6559e5b91dSWilliam A. Kennington III } 6659e5b91dSWilliam A. Kennington III 671bbe3d1eSWilliam A. Kennington III private: 681bbe3d1eSWilliam A. Kennington III /** @brief Parent Object. */ 699ede1b74SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent; 7059e5b91dSWilliam A. Kennington III 7159e5b91dSWilliam A. Kennington III /** @brief Dbus object path */ 7259e5b91dSWilliam A. Kennington III sdbusplus::message::object_path objPath; 7359e5b91dSWilliam A. Kennington III 7459e5b91dSWilliam A. Kennington III IPAddress(sdbusplus::bus_t& bus, sdbusplus::message::object_path objPath, 75*9b2a20d3SWilliam A. Kennington III stdplus::PinnedRef<EthernetInterface> parent, 76*9b2a20d3SWilliam A. Kennington III stdplus::SubnetAny addr, IP::AddressOrigin origin); 771bbe3d1eSWilliam A. Kennington III }; 781bbe3d1eSWilliam A. Kennington III 791bbe3d1eSWilliam A. Kennington III } // namespace network 801bbe3d1eSWilliam A. Kennington III } // namespace phosphor 81