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"
51bbe3d1eSWilliam A. Kennington III 
61bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/elog-errors.hpp>
7a2947b4bSJagpal Singh Gill #include <phosphor-logging/lg2.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 sdbusplus::xyz::openbmc_project::Common::Error;
19e94c9ffcSWilliam A. Kennington III 
Configuration(sdbusplus::bus_t & bus,stdplus::const_zstring objPath,stdplus::PinnedRef<EthernetInterface> parent,DHCPType type)20be3bd2fcSWilliam A. Kennington III Configuration::Configuration(sdbusplus::bus_t& bus,
219ede1b74SWilliam A. Kennington III                              stdplus::const_zstring objPath,
2257dfea94SJishnu CM                              stdplus::PinnedRef<EthernetInterface> parent,
2357dfea94SJishnu CM                              DHCPType type) :
24e94c9ffcSWilliam A. Kennington III     Iface(bus, objPath.c_str(), Iface::action::defer_emit),
25f179e70cSWilliam A. Kennington III     parent(parent)
26e94c9ffcSWilliam A. Kennington III {
27*c3c6b4c3SWilliam A. Kennington III     config::Parser conf(config::pathForIntfConf(
28*c3c6b4c3SWilliam A. Kennington III         parent.get().manager.get().getConfDir(), parent.get().interfaceName()));
29b6595b29SRavi Teja     ConfigIntf::domainEnabled(getDHCPProp(conf, type, "UseDomains"), true);
3057dfea94SJishnu CM     ConfigIntf::dnsEnabled(getDHCPProp(conf, type, "UseDNS"), true);
3157dfea94SJishnu CM     ConfigIntf::ntpEnabled(getDHCPProp(conf, type, "UseNTP"), true);
3257dfea94SJishnu CM     ConfigIntf::hostNameEnabled(getDHCPProp(conf, type, "UseHostname"), true);
3357dfea94SJishnu CM     ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, type, "SendHostname"),
3457dfea94SJishnu CM                                     true);
3557dfea94SJishnu CM 
36e94c9ffcSWilliam A. Kennington III     emit_object_added();
37e94c9ffcSWilliam A. Kennington III }
38e94c9ffcSWilliam A. Kennington III 
sendHostNameEnabled(bool value)391bbe3d1eSWilliam A. Kennington III bool Configuration::sendHostNameEnabled(bool value)
401bbe3d1eSWilliam A. Kennington III {
411bbe3d1eSWilliam A. Kennington III     if (value == sendHostNameEnabled())
421bbe3d1eSWilliam A. Kennington III     {
431bbe3d1eSWilliam A. Kennington III         return value;
441bbe3d1eSWilliam A. Kennington III     }
451bbe3d1eSWilliam A. Kennington III 
461bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::sendHostNameEnabled(value);
4757dfea94SJishnu CM     parent.get().writeConfigurationFile();
4857dfea94SJishnu CM     parent.get().reloadConfigs();
491bbe3d1eSWilliam A. Kennington III     return name;
501bbe3d1eSWilliam A. Kennington III }
511bbe3d1eSWilliam A. Kennington III 
hostNameEnabled(bool value)521bbe3d1eSWilliam A. Kennington III bool Configuration::hostNameEnabled(bool value)
531bbe3d1eSWilliam A. Kennington III {
541bbe3d1eSWilliam A. Kennington III     if (value == hostNameEnabled())
551bbe3d1eSWilliam A. Kennington III     {
561bbe3d1eSWilliam A. Kennington III         return value;
571bbe3d1eSWilliam A. Kennington III     }
581bbe3d1eSWilliam A. Kennington III 
591bbe3d1eSWilliam A. Kennington III     auto name = ConfigIntf::hostNameEnabled(value);
6057dfea94SJishnu CM     parent.get().writeConfigurationFile();
6157dfea94SJishnu CM     parent.get().reloadConfigs();
621bbe3d1eSWilliam A. Kennington III 
631bbe3d1eSWilliam A. Kennington III     return name;
641bbe3d1eSWilliam A. Kennington III }
651bbe3d1eSWilliam A. Kennington III 
ntpEnabled(bool value)661bbe3d1eSWilliam A. Kennington III bool Configuration::ntpEnabled(bool value)
671bbe3d1eSWilliam A. Kennington III {
681bbe3d1eSWilliam A. Kennington III     if (value == ntpEnabled())
691bbe3d1eSWilliam A. Kennington III     {
701bbe3d1eSWilliam A. Kennington III         return value;
711bbe3d1eSWilliam A. Kennington III     }
721bbe3d1eSWilliam A. Kennington III 
731bbe3d1eSWilliam A. Kennington III     auto ntp = ConfigIntf::ntpEnabled(value);
7457dfea94SJishnu CM     parent.get().writeConfigurationFile();
7557dfea94SJishnu CM     parent.get().reloadConfigs();
761bbe3d1eSWilliam A. Kennington III 
771bbe3d1eSWilliam A. Kennington III     return ntp;
781bbe3d1eSWilliam A. Kennington III }
791bbe3d1eSWilliam A. Kennington III 
dnsEnabled(bool value)801bbe3d1eSWilliam A. Kennington III bool Configuration::dnsEnabled(bool value)
811bbe3d1eSWilliam A. Kennington III {
821bbe3d1eSWilliam A. Kennington III     if (value == dnsEnabled())
831bbe3d1eSWilliam A. Kennington III     {
841bbe3d1eSWilliam A. Kennington III         return value;
851bbe3d1eSWilliam A. Kennington III     }
861bbe3d1eSWilliam A. Kennington III 
871bbe3d1eSWilliam A. Kennington III     auto dns = ConfigIntf::dnsEnabled(value);
8857dfea94SJishnu CM     parent.get().writeConfigurationFile();
8957dfea94SJishnu CM     parent.get().reloadConfigs();
901bbe3d1eSWilliam A. Kennington III 
911bbe3d1eSWilliam A. Kennington III     return dns;
921bbe3d1eSWilliam A. Kennington III }
931bbe3d1eSWilliam A. Kennington III 
domainEnabled(bool value)94b6595b29SRavi Teja bool Configuration::domainEnabled(bool value)
95b6595b29SRavi Teja {
96b6595b29SRavi Teja     if (value == domainEnabled())
97b6595b29SRavi Teja     {
98b6595b29SRavi Teja         return value;
99b6595b29SRavi Teja     }
100b6595b29SRavi Teja 
101b6595b29SRavi Teja     auto domain = ConfigIntf::domainEnabled(value);
102b6595b29SRavi Teja     parent.get().writeConfigurationFile();
103b6595b29SRavi Teja     parent.get().reloadConfigs();
104b6595b29SRavi Teja 
105b6595b29SRavi Teja     return domain;
106b6595b29SRavi Teja }
107b6595b29SRavi Teja 
1081bbe3d1eSWilliam A. Kennington III } // namespace dhcp
1091bbe3d1eSWilliam A. Kennington III } // namespace network
1101bbe3d1eSWilliam A. Kennington III } // namespace phosphor
111