xref: /openbmc/phosphor-networkd/src/dhcp_configuration.cpp (revision be3bd2fc19f24c6674c44cfc36d6385cae7ff5cc)
11bbe3d1eSWilliam A. Kennington III #include "dhcp_configuration.hpp"
21bbe3d1eSWilliam A. Kennington III 
3e94c9ffcSWilliam A. Kennington III #include "config_parser.hpp"
41bbe3d1eSWilliam A. Kennington III #include "network_manager.hpp"
595530ec9SWilliam A. Kennington III #include "util.hpp"
61bbe3d1eSWilliam A. Kennington III 
71bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/elog-errors.hpp>
81bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/log.hpp>
91bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Common/error.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 namespace dhcp
161bbe3d1eSWilliam A. Kennington III {
171bbe3d1eSWilliam A. Kennington III 
181bbe3d1eSWilliam A. Kennington III using namespace phosphor::network;
191bbe3d1eSWilliam A. Kennington III using namespace phosphor::logging;
201bbe3d1eSWilliam A. Kennington III using namespace sdbusplus::xyz::openbmc_project::Common::Error;
21e94c9ffcSWilliam A. Kennington III 
22*be3bd2fcSWilliam A. Kennington III Configuration::Configuration(sdbusplus::bus_t& bus,
23*be3bd2fcSWilliam A. Kennington III                              stdplus::const_zstring objPath, Manager& parent) :
24e94c9ffcSWilliam A. Kennington III     Iface(bus, objPath.c_str(), Iface::action::defer_emit),
25e94c9ffcSWilliam A. Kennington III     bus(bus), manager(parent)
26e94c9ffcSWilliam A. Kennington III {
27e94c9ffcSWilliam A. Kennington III     config::Parser conf;
28e94c9ffcSWilliam A. Kennington III     {
2996444795SWilliam A. Kennington III         auto interfaceStrList = getSystemInterfaces();
30e94c9ffcSWilliam A. Kennington III         if (!interfaceStrList.empty())
31e94c9ffcSWilliam A. Kennington III         {
32e94c9ffcSWilliam A. Kennington III             conf.setFile(config::pathForIntfConf(manager.getConfDir(),
33e94c9ffcSWilliam A. Kennington III                                                  *interfaceStrList.begin()));
34e94c9ffcSWilliam A. Kennington III         }
35e94c9ffcSWilliam A. Kennington III     }
36e94c9ffcSWilliam A. Kennington III 
37e94c9ffcSWilliam A. Kennington III     ConfigIntf::dnsEnabled(getDHCPProp(conf, "UseDNS"));
38e94c9ffcSWilliam A. Kennington III     ConfigIntf::ntpEnabled(getDHCPProp(conf, "UseNTP"));
39e94c9ffcSWilliam A. Kennington III     ConfigIntf::hostNameEnabled(getDHCPProp(conf, "UseHostname"));
40e94c9ffcSWilliam A. Kennington III     ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, "SendHostname"));
41e94c9ffcSWilliam A. Kennington III     emit_object_added();
42e94c9ffcSWilliam A. Kennington III }
43e94c9ffcSWilliam A. Kennington III 
441bbe3d1eSWilliam A. Kennington III bool Configuration::sendHostNameEnabled(bool value)
451bbe3d1eSWilliam A. Kennington III {
461bbe3d1eSWilliam A. Kennington III     if (value == sendHostNameEnabled())
471bbe3d1eSWilliam A. Kennington III     {
481bbe3d1eSWilliam A. Kennington III         return value;
491bbe3d1eSWilliam A. Kennington III     }
501bbe3d1eSWilliam A. Kennington III 
511bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::sendHostNameEnabled(value);
52bd649af9SWilliam A. Kennington III 
531bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
54bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
551bbe3d1eSWilliam A. Kennington III 
561bbe3d1eSWilliam A. Kennington III     return name;
571bbe3d1eSWilliam A. Kennington III }
581bbe3d1eSWilliam A. Kennington III 
591bbe3d1eSWilliam A. Kennington III bool Configuration::hostNameEnabled(bool value)
601bbe3d1eSWilliam A. Kennington III {
611bbe3d1eSWilliam A. Kennington III     if (value == hostNameEnabled())
621bbe3d1eSWilliam A. Kennington III     {
631bbe3d1eSWilliam A. Kennington III         return value;
641bbe3d1eSWilliam A. Kennington III     }
651bbe3d1eSWilliam A. Kennington III 
661bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::hostNameEnabled(value);
671bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
68bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
691bbe3d1eSWilliam A. Kennington III 
701bbe3d1eSWilliam A. Kennington III     return name;
711bbe3d1eSWilliam A. Kennington III }
721bbe3d1eSWilliam A. Kennington III 
731bbe3d1eSWilliam A. Kennington III bool Configuration::ntpEnabled(bool value)
741bbe3d1eSWilliam A. Kennington III {
751bbe3d1eSWilliam A. Kennington III     if (value == ntpEnabled())
761bbe3d1eSWilliam A. Kennington III     {
771bbe3d1eSWilliam A. Kennington III         return value;
781bbe3d1eSWilliam A. Kennington III     }
791bbe3d1eSWilliam A. Kennington III 
801bbe3d1eSWilliam A. Kennington III     auto ntp = ConfigIntf::ntpEnabled(value);
811bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
82bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
831bbe3d1eSWilliam A. Kennington III 
841bbe3d1eSWilliam A. Kennington III     return ntp;
851bbe3d1eSWilliam A. Kennington III }
861bbe3d1eSWilliam A. Kennington III 
871bbe3d1eSWilliam A. Kennington III bool Configuration::dnsEnabled(bool value)
881bbe3d1eSWilliam A. Kennington III {
891bbe3d1eSWilliam A. Kennington III     if (value == dnsEnabled())
901bbe3d1eSWilliam A. Kennington III     {
911bbe3d1eSWilliam A. Kennington III         return value;
921bbe3d1eSWilliam A. Kennington III     }
931bbe3d1eSWilliam A. Kennington III 
941bbe3d1eSWilliam A. Kennington III     auto dns = ConfigIntf::dnsEnabled(value);
951bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
96bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
971bbe3d1eSWilliam A. Kennington III 
981bbe3d1eSWilliam A. Kennington III     return dns;
991bbe3d1eSWilliam A. Kennington III }
1001bbe3d1eSWilliam A. Kennington III 
1011bbe3d1eSWilliam A. Kennington III } // namespace dhcp
1021bbe3d1eSWilliam A. Kennington III } // namespace network
1031bbe3d1eSWilliam A. Kennington III } // namespace phosphor
104