|  | #pragma once | 
|  |  | 
|  | #include "xyz/openbmc_project/Network/IP/server.hpp" | 
|  | #include "xyz/openbmc_project/Object/Delete/server.hpp" | 
|  |  | 
|  | #include <sdbusplus/bus.hpp> | 
|  | #include <sdbusplus/server/object.hpp> | 
|  |  | 
|  | #include <string> | 
|  |  | 
|  | namespace phosphor | 
|  | { | 
|  | namespace network | 
|  | { | 
|  |  | 
|  | using IPIfaces = | 
|  | sdbusplus::server::object::object< | 
|  | sdbusplus::xyz::openbmc_project::Network::server::IP, | 
|  | sdbusplus::xyz::openbmc_project::Object::server::Delete>; | 
|  |  | 
|  | using IP = sdbusplus::xyz::openbmc_project::Network::server::IP; | 
|  |  | 
|  | class EthernetInterface; | 
|  |  | 
|  | /** @class IPAddress | 
|  | *  @brief OpenBMC IPAddress implementation. | 
|  | *  @details A concrete implementation for the | 
|  | *  xyz.openbmc_project.Network.IPProtocol | 
|  | *  xyz.openbmc_project.Network.IP Dbus interfaces. | 
|  | */ | 
|  | class IPAddress : public IPIfaces | 
|  | { | 
|  | public: | 
|  | IPAddress() = delete; | 
|  | IPAddress(const IPAddress&) = delete; | 
|  | IPAddress& operator=(const IPAddress&) = delete; | 
|  | IPAddress(IPAddress&&) = delete; | 
|  | IPAddress& operator=(IPAddress &&) = delete; | 
|  | virtual ~IPAddress() = default; | 
|  |  | 
|  | /** @brief Constructor to put object onto bus at a dbus path. | 
|  | *  @param[in] bus - Bus to attach to. | 
|  | *  @param[in] objPath - Path to attach at. | 
|  | *  @param[in] parent - Parent object. | 
|  | *  @param[in] type - ipaddress type(v4/v6). | 
|  | *  @param[in] ipAddress - ipadress. | 
|  | *  @param[in] origin - origin of ipaddress(dhcp/static/SLAAC/LinkLocal). | 
|  | *  @param[in] prefixLength - Length of prefix. | 
|  | *  @param[in] gateway - gateway address. | 
|  | */ | 
|  | IPAddress(sdbusplus::bus::bus& bus, | 
|  | const char* objPath, | 
|  | EthernetInterface& parent, | 
|  | IP::Protocol type, | 
|  | const std::string& ipAddress, | 
|  | IP::AddressOrigin origin, | 
|  | uint8_t prefixLength, | 
|  | const std::string& gateway); | 
|  |  | 
|  | /** @brief Delete this d-bus object. | 
|  | */ | 
|  | void delete_() override; | 
|  |  | 
|  | private: | 
|  |  | 
|  | /** @brief Parent Object. */ | 
|  | EthernetInterface& parent; | 
|  |  | 
|  | }; | 
|  |  | 
|  | } // namespace network | 
|  | } // namespace phosphor |