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
Configuration(sdbusplus::bus_t & bus,stdplus::const_zstring objPath,stdplus::PinnedRef<EthernetInterface> parent,DHCPType type)20 Configuration::Configuration(sdbusplus::bus_t& bus,
21 stdplus::const_zstring objPath,
22 stdplus::PinnedRef<EthernetInterface> parent,
23 DHCPType type) :
24 Iface(bus, objPath.c_str(), Iface::action::defer_emit),
25 parent(parent)
26 {
27 config::Parser conf(config::pathForIntfConf(
28 parent.get().manager.get().getConfDir(), parent.get().interfaceName()));
29 ConfigIntf::domainEnabled(getDHCPProp(conf, type, "UseDomains"), true);
30 ConfigIntf::dnsEnabled(getDHCPProp(conf, type, "UseDNS"), true);
31 ConfigIntf::ntpEnabled(getDHCPProp(conf, type, "UseNTP"), true);
32 ConfigIntf::hostNameEnabled(getDHCPProp(conf, type, "UseHostname"), true);
33 ConfigIntf::sendHostNameEnabled(getDHCPProp(conf, type, "SendHostname"),
34 true);
35
36 emit_object_added();
37 }
38
sendHostNameEnabled(bool value)39 bool Configuration::sendHostNameEnabled(bool value)
40 {
41 if (value == sendHostNameEnabled())
42 {
43 return value;
44 }
45
46 auto name = ConfigIntf::sendHostNameEnabled(value);
47 parent.get().writeConfigurationFile();
48 parent.get().reloadConfigs();
49 return name;
50 }
51
hostNameEnabled(bool value)52 bool Configuration::hostNameEnabled(bool value)
53 {
54 if (value == hostNameEnabled())
55 {
56 return value;
57 }
58
59 auto name = ConfigIntf::hostNameEnabled(value);
60 parent.get().writeConfigurationFile();
61 parent.get().reloadConfigs();
62
63 return name;
64 }
65
ntpEnabled(bool value)66 bool Configuration::ntpEnabled(bool value)
67 {
68 if (value == ntpEnabled())
69 {
70 return value;
71 }
72
73 auto ntp = ConfigIntf::ntpEnabled(value);
74 parent.get().writeConfigurationFile();
75 parent.get().reloadConfigs();
76
77 return ntp;
78 }
79
dnsEnabled(bool value)80 bool Configuration::dnsEnabled(bool value)
81 {
82 if (value == dnsEnabled())
83 {
84 return value;
85 }
86
87 auto dns = ConfigIntf::dnsEnabled(value);
88 parent.get().writeConfigurationFile();
89 parent.get().reloadConfigs();
90
91 return dns;
92 }
93
domainEnabled(bool value)94 bool Configuration::domainEnabled(bool value)
95 {
96 if (value == domainEnabled())
97 {
98 return value;
99 }
100
101 auto domain = ConfigIntf::domainEnabled(value);
102 parent.get().writeConfigurationFile();
103 parent.get().reloadConfigs();
104
105 return domain;
106 }
107
108 } // namespace dhcp
109 } // namespace network
110 } // namespace phosphor
111