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 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 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 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 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 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 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