xref: /openbmc/phosphor-networkd/src/system_configuration.hpp (revision 9ede1b74c0feaee6abaa228cd097133dd74edb3e)
11bbe3d1eSWilliam A. Kennington III #pragma once
21bbe3d1eSWilliam A. Kennington III 
31bbe3d1eSWilliam A. Kennington III #include <sdbusplus/bus.hpp>
440c29b54SWilliam A. Kennington III #include <sdbusplus/bus/match.hpp>
51bbe3d1eSWilliam A. Kennington III #include <sdbusplus/server/object.hpp>
6*9ede1b74SWilliam A. Kennington III #include <stdplus/pinned.hpp>
7be3bd2fcSWilliam A. Kennington III #include <stdplus/zstring.hpp>
81bbe3d1eSWilliam A. Kennington III #include <string>
91bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Network/SystemConfiguration/server.hpp>
101bbe3d1eSWilliam A. Kennington III 
111bbe3d1eSWilliam A. Kennington III namespace phosphor
121bbe3d1eSWilliam A. Kennington III {
131bbe3d1eSWilliam A. Kennington III namespace network
141bbe3d1eSWilliam A. Kennington III {
151bbe3d1eSWilliam A. Kennington III 
161bbe3d1eSWilliam A. Kennington III using SystemConfigIntf =
171bbe3d1eSWilliam A. Kennington III     sdbusplus::xyz::openbmc_project::Network::server::SystemConfiguration;
181bbe3d1eSWilliam A. Kennington III 
19c38b0710SPatrick Williams using Iface = sdbusplus::server::object_t<SystemConfigIntf>;
201bbe3d1eSWilliam A. Kennington III 
211bbe3d1eSWilliam A. Kennington III class Manager; // forward declaration of network manager.
221bbe3d1eSWilliam A. Kennington III 
231bbe3d1eSWilliam A. Kennington III /** @class SystemConfiguration
241bbe3d1eSWilliam A. Kennington III  *  @brief Network system configuration.
251bbe3d1eSWilliam A. Kennington III  *  @details A concrete implementation for the
261bbe3d1eSWilliam A. Kennington III  *  xyz.openbmc_project.Network.SystemConfiguration DBus API.
271bbe3d1eSWilliam A. Kennington III  */
281bbe3d1eSWilliam A. Kennington III class SystemConfiguration : public Iface
291bbe3d1eSWilliam A. Kennington III {
301bbe3d1eSWilliam A. Kennington III   public:
311bbe3d1eSWilliam A. Kennington III     SystemConfiguration(SystemConfiguration&&) = delete;
321bbe3d1eSWilliam A. Kennington III     SystemConfiguration& operator=(SystemConfiguration&&) = delete;
331bbe3d1eSWilliam A. Kennington III 
341bbe3d1eSWilliam A. Kennington III     /** @brief Constructor to put object onto bus at a dbus path.
351bbe3d1eSWilliam A. Kennington III      *  @param[in] bus - Bus to attach to.
361bbe3d1eSWilliam A. Kennington III      *  @param[in] objPath - Path to attach at.
371bbe3d1eSWilliam A. Kennington III      *  @param[in] parent - Parent object.
381bbe3d1eSWilliam A. Kennington III      */
39*9ede1b74SWilliam A. Kennington III     SystemConfiguration(stdplus::PinnedRef<sdbusplus::bus_t> bus,
40*9ede1b74SWilliam A. Kennington III                         stdplus::const_zstring objPath);
411bbe3d1eSWilliam A. Kennington III 
421bbe3d1eSWilliam A. Kennington III     /** @brief set the hostname of the system.
431bbe3d1eSWilliam A. Kennington III      *  @param[in] name - host name of the system.
441bbe3d1eSWilliam A. Kennington III      */
451bbe3d1eSWilliam A. Kennington III     std::string hostName(std::string name) override;
461bbe3d1eSWilliam A. Kennington III 
471bbe3d1eSWilliam A. Kennington III   private:
481bbe3d1eSWilliam A. Kennington III     /** @brief Persistent sdbusplus DBus bus connection. */
49*9ede1b74SWilliam A. Kennington III     stdplus::PinnedRef<sdbusplus::bus_t> bus;
5040c29b54SWilliam A. Kennington III 
5140c29b54SWilliam A. Kennington III     /** @brief Monitor for hostname changes */
5240c29b54SWilliam A. Kennington III     sdbusplus::bus::match_t hostnamePropMatch;
531bbe3d1eSWilliam A. Kennington III };
541bbe3d1eSWilliam A. Kennington III 
551bbe3d1eSWilliam A. Kennington III } // namespace network
561bbe3d1eSWilliam A. Kennington III } // namespace phosphor
57