11bbe3d1eSWilliam A. Kennington III #include "config.h" 21bbe3d1eSWilliam A. Kennington III 31bbe3d1eSWilliam A. Kennington III #include "dhcp_configuration.hpp" 41bbe3d1eSWilliam A. Kennington III 51bbe3d1eSWilliam A. Kennington III #include "network_manager.hpp" 61bbe3d1eSWilliam A. Kennington III 71bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/elog-errors.hpp> 81bbe3d1eSWilliam A. Kennington III #include <phosphor-logging/log.hpp> 91bbe3d1eSWilliam A. Kennington III #include <xyz/openbmc_project/Common/error.hpp> 101bbe3d1eSWilliam A. Kennington III 111bbe3d1eSWilliam A. Kennington III namespace phosphor 121bbe3d1eSWilliam A. Kennington III { 131bbe3d1eSWilliam A. Kennington III namespace network 141bbe3d1eSWilliam A. Kennington III { 151bbe3d1eSWilliam A. Kennington III namespace dhcp 161bbe3d1eSWilliam A. Kennington III { 171bbe3d1eSWilliam A. Kennington III 181bbe3d1eSWilliam A. Kennington III using namespace phosphor::network; 191bbe3d1eSWilliam A. Kennington III using namespace phosphor::logging; 201bbe3d1eSWilliam A. Kennington III using namespace sdbusplus::xyz::openbmc_project::Common::Error; 211bbe3d1eSWilliam A. Kennington III bool Configuration::sendHostNameEnabled(bool value) 221bbe3d1eSWilliam A. Kennington III { 231bbe3d1eSWilliam A. Kennington III if (value == sendHostNameEnabled()) 241bbe3d1eSWilliam A. Kennington III { 251bbe3d1eSWilliam A. Kennington III return value; 261bbe3d1eSWilliam A. Kennington III } 271bbe3d1eSWilliam A. Kennington III 281bbe3d1eSWilliam A. Kennington III auto name = ConfigIntf::sendHostNameEnabled(value); 29*bd649af9SWilliam A. Kennington III 301bbe3d1eSWilliam A. Kennington III manager.writeToConfigurationFile(); 31*bd649af9SWilliam A. Kennington III manager.reloadConfigs(); 321bbe3d1eSWilliam A. Kennington III 331bbe3d1eSWilliam A. Kennington III return name; 341bbe3d1eSWilliam A. Kennington III } 351bbe3d1eSWilliam A. Kennington III 361bbe3d1eSWilliam A. Kennington III bool Configuration::hostNameEnabled(bool value) 371bbe3d1eSWilliam A. Kennington III { 381bbe3d1eSWilliam A. Kennington III if (value == hostNameEnabled()) 391bbe3d1eSWilliam A. Kennington III { 401bbe3d1eSWilliam A. Kennington III return value; 411bbe3d1eSWilliam A. Kennington III } 421bbe3d1eSWilliam A. Kennington III 431bbe3d1eSWilliam A. Kennington III auto name = ConfigIntf::hostNameEnabled(value); 441bbe3d1eSWilliam A. Kennington III manager.writeToConfigurationFile(); 45*bd649af9SWilliam A. Kennington III manager.reloadConfigs(); 461bbe3d1eSWilliam A. Kennington III 471bbe3d1eSWilliam A. Kennington III return name; 481bbe3d1eSWilliam A. Kennington III } 491bbe3d1eSWilliam A. Kennington III 501bbe3d1eSWilliam A. Kennington III bool Configuration::ntpEnabled(bool value) 511bbe3d1eSWilliam A. Kennington III { 521bbe3d1eSWilliam A. Kennington III if (value == ntpEnabled()) 531bbe3d1eSWilliam A. Kennington III { 541bbe3d1eSWilliam A. Kennington III return value; 551bbe3d1eSWilliam A. Kennington III } 561bbe3d1eSWilliam A. Kennington III 571bbe3d1eSWilliam A. Kennington III auto ntp = ConfigIntf::ntpEnabled(value); 581bbe3d1eSWilliam A. Kennington III manager.writeToConfigurationFile(); 59*bd649af9SWilliam A. Kennington III manager.reloadConfigs(); 601bbe3d1eSWilliam A. Kennington III 611bbe3d1eSWilliam A. Kennington III return ntp; 621bbe3d1eSWilliam A. Kennington III } 631bbe3d1eSWilliam A. Kennington III 641bbe3d1eSWilliam A. Kennington III bool Configuration::dnsEnabled(bool value) 651bbe3d1eSWilliam A. Kennington III { 661bbe3d1eSWilliam A. Kennington III if (value == dnsEnabled()) 671bbe3d1eSWilliam A. Kennington III { 681bbe3d1eSWilliam A. Kennington III return value; 691bbe3d1eSWilliam A. Kennington III } 701bbe3d1eSWilliam A. Kennington III 711bbe3d1eSWilliam A. Kennington III auto dns = ConfigIntf::dnsEnabled(value); 721bbe3d1eSWilliam A. Kennington III manager.writeToConfigurationFile(); 73*bd649af9SWilliam A. Kennington III manager.reloadConfigs(); 741bbe3d1eSWilliam A. Kennington III 751bbe3d1eSWilliam A. Kennington III return dns; 761bbe3d1eSWilliam A. Kennington III } 771bbe3d1eSWilliam A. Kennington III 781bbe3d1eSWilliam A. Kennington III bool Configuration::getDHCPPropFromConf(const std::string& prop) 791bbe3d1eSWilliam A. Kennington III { 801bbe3d1eSWilliam A. Kennington III fs::path confPath = manager.getConfDir(); 811bbe3d1eSWilliam A. Kennington III auto interfaceStrList = getInterfaces(); 821bbe3d1eSWilliam A. Kennington III // get the first interface name, we need it to know config file name. 831bbe3d1eSWilliam A. Kennington III auto interface = *interfaceStrList.begin(); 841bbe3d1eSWilliam A. Kennington III auto fileName = systemd::config::networkFilePrefix + interface + 851bbe3d1eSWilliam A. Kennington III systemd::config::networkFileSuffix; 861bbe3d1eSWilliam A. Kennington III 871bbe3d1eSWilliam A. Kennington III confPath /= fileName; 881bbe3d1eSWilliam A. Kennington III // systemd default behaviour is all DHCP fields should be enabled by 891bbe3d1eSWilliam A. Kennington III // default. 901bbe3d1eSWilliam A. Kennington III auto propValue = true; 911bbe3d1eSWilliam A. Kennington III config::Parser parser(confPath); 921bbe3d1eSWilliam A. Kennington III 931bbe3d1eSWilliam A. Kennington III auto rc = config::ReturnCode::SUCCESS; 941bbe3d1eSWilliam A. Kennington III config::ValueList values{}; 951bbe3d1eSWilliam A. Kennington III std::tie(rc, values) = parser.getValues("DHCP", prop); 961bbe3d1eSWilliam A. Kennington III 971bbe3d1eSWilliam A. Kennington III if (rc != config::ReturnCode::SUCCESS) 981bbe3d1eSWilliam A. Kennington III { 991bbe3d1eSWilliam A. Kennington III log<level::DEBUG>("Unable to get the value from section DHCP", 1001bbe3d1eSWilliam A. Kennington III entry("PROP=%s", prop.c_str()), entry("RC=%d", rc)); 1011bbe3d1eSWilliam A. Kennington III return propValue; 1021bbe3d1eSWilliam A. Kennington III } 1031bbe3d1eSWilliam A. Kennington III 1041bbe3d1eSWilliam A. Kennington III if (values[0] == "false") 1051bbe3d1eSWilliam A. Kennington III { 1061bbe3d1eSWilliam A. Kennington III propValue = false; 1071bbe3d1eSWilliam A. Kennington III } 1081bbe3d1eSWilliam A. Kennington III return propValue; 1091bbe3d1eSWilliam A. Kennington III } 1101bbe3d1eSWilliam A. Kennington III } // namespace dhcp 1111bbe3d1eSWilliam A. Kennington III } // namespace network 1121bbe3d1eSWilliam A. Kennington III } // namespace phosphor 113