1 #include "dhcp_configuration.hpp" 2 3 #include "config_parser.hpp" 4 #include "network_manager.hpp" 5 6 #include <phosphor-logging/elog-errors.hpp> 7 #include <phosphor-logging/lg2.hpp> 8 #include <xyz/openbmc_project/Common/error.hpp> 9 10 namespace phosphor 11 { 12 namespace network 13 { 14 namespace dhcp 15 { 16 17 using namespace phosphor::network; 18 using namespace sdbusplus::xyz::openbmc_project::Common::Error; 19 20 Configuration::Configuration( 21 sdbusplus::bus_t& bus, stdplus::const_zstring objPath, 22 stdplus::PinnedRef<EthernetInterface> parent, DHCPType type) : 23 Iface(bus, objPath.c_str(), Iface::action::defer_emit), parent(parent) 24 { 25 config::Parser conf(config::pathForIntfConf( 26 parent.get().manager.get().getConfDir(), parent.get().interfaceName())); 27 ConfigIntf::domainEnabled(getDHCPProp(conf, type, "UseDomains"), true); 28 ConfigIntf::dnsEnabled(getDHCPProp(conf, type, "UseDNS"), true); 29 ConfigIntf::ntpEnabled(getDHCPProp(conf, type, "UseNTP"), true); 30 ConfigIntf::hostNameEnabled(getDHCPProp(conf, type, "UseHostname"), true); 31 ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, type, "SendHostname"), 32 true); 33 34 emit_object_added(); 35 } 36 37 bool Configuration::sendHostNameEnabled(bool value) 38 { 39 if (value == sendHostNameEnabled()) 40 { 41 return value; 42 } 43 44 auto name = ConfigIntf::sendHostNameEnabled(value); 45 parent.get().writeConfigurationFile(); 46 parent.get().reloadConfigs(); 47 return name; 48 } 49 50 bool Configuration::hostNameEnabled(bool value) 51 { 52 if (value == hostNameEnabled()) 53 { 54 return value; 55 } 56 57 auto name = ConfigIntf::hostNameEnabled(value); 58 parent.get().writeConfigurationFile(); 59 parent.get().reloadConfigs(); 60 61 return name; 62 } 63 64 bool Configuration::ntpEnabled(bool value) 65 { 66 if (value == ntpEnabled()) 67 { 68 return value; 69 } 70 71 auto ntp = ConfigIntf::ntpEnabled(value); 72 parent.get().writeConfigurationFile(); 73 parent.get().reloadConfigs(); 74 75 return ntp; 76 } 77 78 bool Configuration::dnsEnabled(bool value) 79 { 80 if (value == dnsEnabled()) 81 { 82 return value; 83 } 84 85 auto dns = ConfigIntf::dnsEnabled(value); 86 parent.get().writeConfigurationFile(); 87 parent.get().reloadConfigs(); 88 89 return dns; 90 } 91 92 bool Configuration::domainEnabled(bool value) 93 { 94 if (value == domainEnabled()) 95 { 96 return value; 97 } 98 99 auto domain = ConfigIntf::domainEnabled(value); 100 parent.get().writeConfigurationFile(); 101 parent.get().reloadConfigs(); 102 103 return domain; 104 } 105 106 } // namespace dhcp 107 } // namespace network 108 } // namespace phosphor 109