#pragma once #include #include #include #include #include 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