1 #pragma once
2 
3 #include "hyp_network_manager.hpp"
4 #include "system_configuration.hpp"
5 
6 #include <sdbusplus/bus.hpp>
7 #include <sdbusplus/server/object.hpp>
8 #include <string>
9 #include <xyz/openbmc_project/Network/SystemConfiguration/server.hpp>
10 
11 namespace phosphor
12 {
13 namespace network
14 {
15 
16 using SysConfigIntf =
17     sdbusplus::xyz::openbmc_project::Network::server::SystemConfiguration;
18 
19 using Iface = sdbusplus::server::object_t<SysConfigIntf>;
20 
21 class HypNetworkMgr; // forward declaration of network manager.
22 
23 /** @class HypSysConfig
24  *  @brief Network system configuration.
25  *  @details A concrete implementation for the
26  *  xyz.openbmc_project.Network.HypSysConfig DBus API.
27  */
28 class HypSysConfig : public Iface
29 {
30   public:
31     HypSysConfig() = default;
32     HypSysConfig(const HypSysConfig&) = delete;
33     HypSysConfig& operator=(const HypSysConfig&) = delete;
34     HypSysConfig(HypSysConfig&&) = delete;
35     HypSysConfig& operator=(HypSysConfig&&) = delete;
36     virtual ~HypSysConfig() = default;
37 
38     /** @brief Constructor to put object onto bus at a dbus path.
39      *  @param[in] bus - Bus to attach to.
40      *  @param[in] objPath - Path to attach at.
41      *  @param[in] parent - Parent object.
42      */
43     HypSysConfig(sdbusplus::bus_t& bus, const std::string& objPath,
44                  HypNetworkMgr& parent) :
45         Iface(bus, objPath.c_str(), Iface::action::defer_emit),
46         bus(bus), manager(parent){};
47 
48     /** @brief set the hostname of the system.
49      *  @param[in] name - host name of the system.
50      */
51     std::string hostName(std::string name) override;
52 
53     /** @brief get hostname from bios and set the data member
54      */
55     void setHostName();
56 
57   protected:
58     /** @brief get the hostname from the system by doing
59      *         dbus call to hostnamed service.
60      */
61     std::string getHostNameFromBios() const;
62 
63     /** @brief set the hostname set in dbus obj in the basebiostable
64      *  @param[in] name - hostname that is set in dbus obj
65      */
66     void setHostNameInBios(const std::string& name);
67 
68     /** @brief Persistent sdbusplus DBus bus connection. */
69     sdbusplus::bus_t& bus;
70 
71     /** @brief Hyp Network Manager object. */
72     HypNetworkMgr& manager;
73 };
74 
75 } // namespace network
76 } // namespace phosphor
77