xref: /openbmc/phosphor-networkd/src/dhcp_configuration.hpp (revision f179e70c5c079f480da9a4b70a84ae69b1bcc0db)
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