11bbe3d1eSWilliam A. Kennington III #include "dhcp_configuration.hpp"
21bbe3d1eSWilliam A. Kennington III 
3*e94c9ffcSWilliam A. Kennington III #include "config_parser.hpp"
41bbe3d1eSWilliam A. Kennington III #include "network_manager.hpp"
51bbe3d1eSWilliam A. Kennington III 
61bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/elog-errors.hpp>
71bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/log.hpp>
81bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Common/error.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 namespace dhcp
151bbe3d1eSWilliam A. Kennington III {
161bbe3d1eSWilliam A. Kennington III 
171bbe3d1eSWilliam A. Kennington III using namespace phosphor::network;
181bbe3d1eSWilliam A. Kennington III using namespace phosphor::logging;
191bbe3d1eSWilliam A. Kennington III using namespace sdbusplus::xyz::openbmc_project::Common::Error;
20*e94c9ffcSWilliam A. Kennington III 
21*e94c9ffcSWilliam A. Kennington III Configuration::Configuration(sdbusplus::bus_t& bus, const std::string& objPath,
22*e94c9ffcSWilliam A. Kennington III                              Manager& parent) :
23*e94c9ffcSWilliam A. Kennington III     Iface(bus, objPath.c_str(), Iface::action::defer_emit),
24*e94c9ffcSWilliam A. Kennington III     bus(bus), manager(parent)
25*e94c9ffcSWilliam A. Kennington III {
26*e94c9ffcSWilliam A. Kennington III     config::Parser conf;
27*e94c9ffcSWilliam A. Kennington III     {
28*e94c9ffcSWilliam A. Kennington III         auto interfaceStrList = getInterfaces();
29*e94c9ffcSWilliam A. Kennington III         if (!interfaceStrList.empty())
30*e94c9ffcSWilliam A. Kennington III         {
31*e94c9ffcSWilliam A. Kennington III             conf.setFile(config::pathForIntfConf(manager.getConfDir(),
32*e94c9ffcSWilliam A. Kennington III                                                  *interfaceStrList.begin()));
33*e94c9ffcSWilliam A. Kennington III         }
34*e94c9ffcSWilliam A. Kennington III     }
35*e94c9ffcSWilliam A. Kennington III 
36*e94c9ffcSWilliam A. Kennington III     ConfigIntf::dnsEnabled(getDHCPProp(conf, "UseDNS"));
37*e94c9ffcSWilliam A. Kennington III     ConfigIntf::ntpEnabled(getDHCPProp(conf, "UseNTP"));
38*e94c9ffcSWilliam A. Kennington III     ConfigIntf::hostNameEnabled(getDHCPProp(conf, "UseHostname"));
39*e94c9ffcSWilliam A. Kennington III     ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, "SendHostname"));
40*e94c9ffcSWilliam A. Kennington III     emit_object_added();
41*e94c9ffcSWilliam A. Kennington III }
42*e94c9ffcSWilliam A. Kennington III 
431bbe3d1eSWilliam A. Kennington III bool Configuration::sendHostNameEnabled(bool value)
441bbe3d1eSWilliam A. Kennington III {
451bbe3d1eSWilliam A. Kennington III     if (value == sendHostNameEnabled())
461bbe3d1eSWilliam A. Kennington III     {
471bbe3d1eSWilliam A. Kennington III         return value;
481bbe3d1eSWilliam A. Kennington III     }
491bbe3d1eSWilliam A. Kennington III 
501bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::sendHostNameEnabled(value);
51bd649af9SWilliam A. Kennington III 
521bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
53bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
541bbe3d1eSWilliam A. Kennington III 
551bbe3d1eSWilliam A. Kennington III     return name;
561bbe3d1eSWilliam A. Kennington III }
571bbe3d1eSWilliam A. Kennington III 
581bbe3d1eSWilliam A. Kennington III bool Configuration::hostNameEnabled(bool value)
591bbe3d1eSWilliam A. Kennington III {
601bbe3d1eSWilliam A. Kennington III     if (value == hostNameEnabled())
611bbe3d1eSWilliam A. Kennington III     {
621bbe3d1eSWilliam A. Kennington III         return value;
631bbe3d1eSWilliam A. Kennington III     }
641bbe3d1eSWilliam A. Kennington III 
651bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::hostNameEnabled(value);
661bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
67bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
681bbe3d1eSWilliam A. Kennington III 
691bbe3d1eSWilliam A. Kennington III     return name;
701bbe3d1eSWilliam A. Kennington III }
711bbe3d1eSWilliam A. Kennington III 
721bbe3d1eSWilliam A. Kennington III bool Configuration::ntpEnabled(bool value)
731bbe3d1eSWilliam A. Kennington III {
741bbe3d1eSWilliam A. Kennington III     if (value == ntpEnabled())
751bbe3d1eSWilliam A. Kennington III     {
761bbe3d1eSWilliam A. Kennington III         return value;
771bbe3d1eSWilliam A. Kennington III     }
781bbe3d1eSWilliam A. Kennington III 
791bbe3d1eSWilliam A. Kennington III     auto ntp = ConfigIntf::ntpEnabled(value);
801bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
81bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
821bbe3d1eSWilliam A. Kennington III 
831bbe3d1eSWilliam A. Kennington III     return ntp;
841bbe3d1eSWilliam A. Kennington III }
851bbe3d1eSWilliam A. Kennington III 
861bbe3d1eSWilliam A. Kennington III bool Configuration::dnsEnabled(bool value)
871bbe3d1eSWilliam A. Kennington III {
881bbe3d1eSWilliam A. Kennington III     if (value == dnsEnabled())
891bbe3d1eSWilliam A. Kennington III     {
901bbe3d1eSWilliam A. Kennington III         return value;
911bbe3d1eSWilliam A. Kennington III     }
921bbe3d1eSWilliam A. Kennington III 
931bbe3d1eSWilliam A. Kennington III     auto dns = ConfigIntf::dnsEnabled(value);
941bbe3d1eSWilliam A. Kennington III     manager.writeToConfigurationFile();
95bd649af9SWilliam A. Kennington III     manager.reloadConfigs();
961bbe3d1eSWilliam A. Kennington III 
971bbe3d1eSWilliam A. Kennington III     return dns;
981bbe3d1eSWilliam A. Kennington III }
991bbe3d1eSWilliam A. Kennington III 
1001bbe3d1eSWilliam A. Kennington III } // namespace dhcp
1011bbe3d1eSWilliam A. Kennington III } // namespace network
1021bbe3d1eSWilliam A. Kennington III } // namespace phosphor
103