xref: /openbmc/phosphor-networkd/src/system_configuration.hpp (revision 40c29b54989381ab8fe44de276c7eade08bc230f)
11bbe3d1eSWilliam A. Kennington III #pragma once
21bbe3d1eSWilliam A. Kennington III 
31bbe3d1eSWilliam A. Kennington III #include <sdbusplus/bus.hpp>
4*40c29b54SWilliam A. Kennington III #include <sdbusplus/bus/match.hpp>
51bbe3d1eSWilliam A. Kennington III #include <sdbusplus/server/object.hpp>
6be3bd2fcSWilliam A. Kennington III #include <stdplus/zstring.hpp>
71bbe3d1eSWilliam A. Kennington III #include <string>
81bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Network/SystemConfiguration/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 
151bbe3d1eSWilliam A. Kennington III using SystemConfigIntf =
161bbe3d1eSWilliam A. Kennington III     sdbusplus::xyz::openbmc_project::Network::server::SystemConfiguration;
171bbe3d1eSWilliam A. Kennington III 
18c38b0710SPatrick Williams using Iface = sdbusplus::server::object_t<SystemConfigIntf>;
191bbe3d1eSWilliam A. Kennington III 
201bbe3d1eSWilliam A. Kennington III class Manager; // forward declaration of network manager.
211bbe3d1eSWilliam A. Kennington III 
221bbe3d1eSWilliam A. Kennington III /** @class SystemConfiguration
231bbe3d1eSWilliam A. Kennington III  *  @brief Network system configuration.
241bbe3d1eSWilliam A. Kennington III  *  @details A concrete implementation for the
251bbe3d1eSWilliam A. Kennington III  *  xyz.openbmc_project.Network.SystemConfiguration DBus API.
261bbe3d1eSWilliam A. Kennington III  */
271bbe3d1eSWilliam A. Kennington III class SystemConfiguration : public Iface
281bbe3d1eSWilliam A. Kennington III {
291bbe3d1eSWilliam A. Kennington III   public:
301bbe3d1eSWilliam A. Kennington III     SystemConfiguration() = default;
311bbe3d1eSWilliam A. Kennington III     SystemConfiguration(const SystemConfiguration&) = delete;
321bbe3d1eSWilliam A. Kennington III     SystemConfiguration& operator=(const SystemConfiguration&) = delete;
331bbe3d1eSWilliam A. Kennington III     SystemConfiguration(SystemConfiguration&&) = delete;
341bbe3d1eSWilliam A. Kennington III     SystemConfiguration& operator=(SystemConfiguration&&) = delete;
351bbe3d1eSWilliam A. Kennington III     virtual ~SystemConfiguration() = default;
361bbe3d1eSWilliam A. Kennington III 
371bbe3d1eSWilliam A. Kennington III     /** @brief Constructor to put object onto bus at a dbus path.
381bbe3d1eSWilliam A. Kennington III      *  @param[in] bus - Bus to attach to.
391bbe3d1eSWilliam A. Kennington III      *  @param[in] objPath - Path to attach at.
401bbe3d1eSWilliam A. Kennington III      *  @param[in] parent - Parent object.
411bbe3d1eSWilliam A. Kennington III      */
42be3bd2fcSWilliam A. Kennington III     SystemConfiguration(sdbusplus::bus_t& bus, stdplus::const_zstring objPath);
431bbe3d1eSWilliam A. Kennington III 
441bbe3d1eSWilliam A. Kennington III     /** @brief set the hostname of the system.
451bbe3d1eSWilliam A. Kennington III      *  @param[in] name - host name of the system.
461bbe3d1eSWilliam A. Kennington III      */
471bbe3d1eSWilliam A. Kennington III     std::string hostName(std::string name) override;
481bbe3d1eSWilliam A. Kennington III 
491bbe3d1eSWilliam A. Kennington III   private:
501bbe3d1eSWilliam A. Kennington III     /** @brief Persistent sdbusplus DBus bus connection. */
51c38b0710SPatrick Williams     sdbusplus::bus_t& bus;
52*40c29b54SWilliam A. Kennington III 
53*40c29b54SWilliam A. Kennington III     /** @brief Monitor for hostname changes */
54*40c29b54SWilliam A. Kennington III     sdbusplus::bus::match_t hostnamePropMatch;
551bbe3d1eSWilliam A. Kennington III };
561bbe3d1eSWilliam A. Kennington III 
571bbe3d1eSWilliam A. Kennington III } // namespace network
581bbe3d1eSWilliam A. Kennington III } // namespace phosphor
59