11bbe3d1eSWilliam A. Kennington III #pragma once 257dfea94SJishnu CM #include "util.hpp" 357dfea94SJishnu CM 41bbe3d1eSWilliam A. Kennington III #include <sdbusplus/bus.hpp> 51bbe3d1eSWilliam A. Kennington III #include <sdbusplus/server/object.hpp> 69ede1b74SWilliam A. Kennington III #include <stdplus/pinned.hpp> 7be3bd2fcSWilliam A. Kennington III #include <stdplus/zstring.hpp> 81bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Network/DHCPConfiguration/server.hpp> 91bbe3d1eSWilliam A. Kennington III 101bbe3d1eSWilliam A. Kennington III namespace phosphor 111bbe3d1eSWilliam A. Kennington III { 121bbe3d1eSWilliam A. Kennington III namespace network 131bbe3d1eSWilliam A. Kennington III { 141bbe3d1eSWilliam A. Kennington III 1557dfea94SJishnu CM class EthernetInterface; 161bbe3d1eSWilliam A. Kennington III 171bbe3d1eSWilliam A. Kennington III namespace dhcp 181bbe3d1eSWilliam A. Kennington III { 191bbe3d1eSWilliam A. Kennington III 201bbe3d1eSWilliam A. Kennington III using ConfigIntf = 211bbe3d1eSWilliam A. Kennington III sdbusplus::xyz::openbmc_project::Network::server::DHCPConfiguration; 221bbe3d1eSWilliam A. Kennington III 23c38b0710SPatrick Williams using Iface = sdbusplus::server::object_t<ConfigIntf>; 241bbe3d1eSWilliam A. Kennington III 251bbe3d1eSWilliam A. Kennington III /** @class Configuration 261bbe3d1eSWilliam A. Kennington III * @brief DHCP configuration. 271bbe3d1eSWilliam A. Kennington III * @details A concrete implementation for the 281bbe3d1eSWilliam A. Kennington III * xyz.openbmc_project.Network.DHCP DBus interface. 291bbe3d1eSWilliam A. Kennington III */ 301bbe3d1eSWilliam A. Kennington III class Configuration : public Iface 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. 351bbe3d1eSWilliam A. Kennington III * @param[in] objPath - Path to attach at. 361bbe3d1eSWilliam A. Kennington III * @param[in] parent - Parent object. 3757dfea94SJishnu CM * @param[in] type - Network type. 381bbe3d1eSWilliam A. Kennington III */ 39be3bd2fcSWilliam A. Kennington III Configuration(sdbusplus::bus_t& bus, stdplus::const_zstring objPath, 4057dfea94SJishnu CM stdplus::PinnedRef<EthernetInterface> parent, DHCPType type); 411bbe3d1eSWilliam A. Kennington III 421bbe3d1eSWilliam A. Kennington III /** @brief If true then DNS servers received from the DHCP server 431bbe3d1eSWilliam A. Kennington III * will be used and take precedence over any statically 441bbe3d1eSWilliam A. Kennington III * configured ones. 451bbe3d1eSWilliam A. Kennington III * @param[in] value - true if DNS server needed from DHCP server 461bbe3d1eSWilliam A. Kennington III * else false. 471bbe3d1eSWilliam A. Kennington III */ 481bbe3d1eSWilliam A. Kennington III bool dnsEnabled(bool value) override; 491bbe3d1eSWilliam A. Kennington III 50*b6595b29SRavi Teja /** @brief If true then domain names received from the DHCP server 51*b6595b29SRavi Teja * @param[in] value - true if domain names needed from DHCP server 52*b6595b29SRavi Teja * else false. 53*b6595b29SRavi Teja */ 54*b6595b29SRavi Teja bool domainEnabled(bool value) override; 55*b6595b29SRavi Teja 561bbe3d1eSWilliam A. Kennington III /** @brief If true then NTP servers received from the DHCP server 571bbe3d1eSWilliam A. Kennington III will be used by systemd-timesyncd. 581bbe3d1eSWilliam A. Kennington III * @param[in] value - true if NTP server needed from DHCP server 591bbe3d1eSWilliam A. Kennington III * else false. 601bbe3d1eSWilliam A. Kennington III */ 611bbe3d1eSWilliam A. Kennington III bool ntpEnabled(bool value) override; 621bbe3d1eSWilliam A. Kennington III 631bbe3d1eSWilliam A. Kennington III /** @brief If true then Hostname received from the DHCP server will 641bbe3d1eSWilliam A. Kennington III * be set as the hostname of the system 651bbe3d1eSWilliam A. Kennington III * @param[in] value - true if hostname needed from the DHCP server 661bbe3d1eSWilliam A. Kennington III * else false. 671bbe3d1eSWilliam A. Kennington III * 681bbe3d1eSWilliam A. Kennington III */ 691bbe3d1eSWilliam A. Kennington III bool hostNameEnabled(bool value) override; 701bbe3d1eSWilliam A. Kennington III 711bbe3d1eSWilliam A. Kennington III /** @brief if true then it will cause an Option 12 field, i.e machine's 721bbe3d1eSWilliam A. Kennington III * hostname, will be included in the DHCP packet. 731bbe3d1eSWilliam A. Kennington III * @param[in] value - true if machine's host name needs to be included 741bbe3d1eSWilliam A. Kennington III * in the DHCP packet. 751bbe3d1eSWilliam A. Kennington III */ 761bbe3d1eSWilliam A. Kennington III bool sendHostNameEnabled(bool value) override; 771bbe3d1eSWilliam A. Kennington III 7857dfea94SJishnu CM /* @brief Ethernet Interface needed the below function to know the 791bbe3d1eSWilliam A. Kennington III * value of the properties (ntpEnabled,dnsEnabled,hostnameEnabled 801bbe3d1eSWilliam A. Kennington III sendHostNameEnabled). 811bbe3d1eSWilliam A. Kennington III * 821bbe3d1eSWilliam A. Kennington III */ 831bbe3d1eSWilliam A. Kennington III using ConfigIntf::dnsEnabled; 84*b6595b29SRavi Teja using ConfigIntf::domainEnabled; 851bbe3d1eSWilliam A. Kennington III using ConfigIntf::hostNameEnabled; 861bbe3d1eSWilliam A. Kennington III using ConfigIntf::ntpEnabled; 871bbe3d1eSWilliam A. Kennington III using ConfigIntf::sendHostNameEnabled; 881bbe3d1eSWilliam A. Kennington III 891bbe3d1eSWilliam A. Kennington III private: 9057dfea94SJishnu CM /** @brief Ethernet Interface object. */ 9157dfea94SJishnu CM stdplus::PinnedRef<EthernetInterface> parent; 921bbe3d1eSWilliam A. Kennington III }; 931bbe3d1eSWilliam A. Kennington III 941bbe3d1eSWilliam A. Kennington III } // namespace dhcp 951bbe3d1eSWilliam A. Kennington III } // namespace network 961bbe3d1eSWilliam A. Kennington III } // namespace phosphor 97