#pragma once #include "util.hpp" #include #include #include #include #include namespace phosphor { namespace network { class EthernetInterface; namespace dhcp { using ConfigIntf = sdbusplus::xyz::openbmc_project::Network::server::DHCPConfiguration; using Iface = sdbusplus::server::object_t; /** @class Configuration * @brief DHCP configuration. * @details A concrete implementation for the * xyz.openbmc_project.Network.DHCP DBus interface. */ class Configuration : public Iface { public: /** @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 - Network type. */ Configuration(sdbusplus::bus_t& bus, stdplus::const_zstring objPath, stdplus::PinnedRef parent, DHCPType type); /** @brief If true then DNS servers received from the DHCP server * will be used and take precedence over any statically * configured ones. * @param[in] value - true if DNS server needed from DHCP server * else false. */ bool dnsEnabled(bool value) override; /** @brief If true then domain names received from the DHCP server * @param[in] value - true if domain names needed from DHCP server * else false. */ bool domainEnabled(bool value) override; /** @brief If true then NTP servers received from the DHCP server will be used by systemd-timesyncd. * @param[in] value - true if NTP server needed from DHCP server * else false. */ bool ntpEnabled(bool value) override; /** @brief If true then Hostname received from the DHCP server will * be set as the hostname of the system * @param[in] value - true if hostname needed from the DHCP server * else false. * */ bool hostNameEnabled(bool value) override; /** @brief if true then it will cause an Option 12 field, i.e machine's * hostname, will be included in the DHCP packet. * @param[in] value - true if machine's host name needs to be included * in the DHCP packet. */ bool sendHostNameEnabled(bool value) override; /* @brief Ethernet Interface needed the below function to know the * value of the properties (ntpEnabled,dnsEnabled,hostnameEnabled sendHostNameEnabled). * */ using ConfigIntf::dnsEnabled; using ConfigIntf::domainEnabled; using ConfigIntf::hostNameEnabled; using ConfigIntf::ntpEnabled; using ConfigIntf::sendHostNameEnabled; private: /** @brief Ethernet Interface object. */ stdplus::PinnedRef parent; }; } // namespace dhcp } // namespace network } // namespace phosphor