#include "config.h" #include "dhcp_configuration.hpp" #include "network_manager.hpp" #include #include #include #include namespace phosphor { namespace network { namespace dhcp { using namespace phosphor::network; using namespace phosphor::logging; using namespace sdbusplus::xyz::openbmc_project::Common::Error; bool Configuration::sendHostNameEnabled(bool value) { if (value == sendHostNameEnabled()) { return value; } auto name = ConfigIntf::sendHostNameEnabled(value); manager.writeToConfigurationFile(); manager.reloadConfigs(); return name; } bool Configuration::hostNameEnabled(bool value) { if (value == hostNameEnabled()) { return value; } auto name = ConfigIntf::hostNameEnabled(value); manager.writeToConfigurationFile(); manager.reloadConfigs(); return name; } bool Configuration::ntpEnabled(bool value) { if (value == ntpEnabled()) { return value; } auto ntp = ConfigIntf::ntpEnabled(value); manager.writeToConfigurationFile(); manager.reloadConfigs(); return ntp; } bool Configuration::dnsEnabled(bool value) { if (value == dnsEnabled()) { return value; } auto dns = ConfigIntf::dnsEnabled(value); manager.writeToConfigurationFile(); manager.reloadConfigs(); return dns; } bool Configuration::getDHCPPropFromConf(const std::string& prop) { fs::path confPath = manager.getConfDir(); auto interfaceStrList = getInterfaces(); // get the first interface name, we need it to know config file name. auto interface = *interfaceStrList.begin(); auto fileName = systemd::config::networkFilePrefix + interface + systemd::config::networkFileSuffix; confPath /= fileName; // systemd default behaviour is all DHCP fields should be enabled by // default. config::Parser parser(confPath); const auto& values = parser.getValues("DHCP", prop); if (values.empty()) { auto msg = fmt::format("Missing config section DHCP[{}]", prop); log(msg.c_str(), entry("PROP=%s", prop.c_str())); return true; } return values.back() != "false"; } } // namespace dhcp } // namespace network } // namespace phosphor