1 #include "snmp_client.hpp"
2
3 #include "snmp_conf_manager.hpp"
4 #include "snmp_serialize.hpp"
5
6 namespace phosphor
7 {
8 namespace network
9 {
10 namespace snmp
11 {
12
Client(sdbusplus::bus_t & bus,const char * objPath,ConfManager & parent,const std::string & address,uint16_t port)13 Client::Client(sdbusplus::bus_t& bus, const char* objPath, ConfManager& parent,
14 const std::string& address, uint16_t port) :
15 Ifaces(bus, objPath, Ifaces::action::defer_emit),
16 id(std::stol(std::filesystem::path(objPath).filename())), parent(parent)
17 {
18 this->address(address);
19 this->port(port);
20 this->transportProtocol(sdbusplus::server::xyz::openbmc_project::network::
21 Client::TransportProtocol::UDP);
22
23 // Emit deferred signal.
24 emit_object_added();
25 }
26
address(std::string value)27 std::string Client::address(std::string value)
28 {
29 if (value == Ifaces::address())
30 {
31 return value;
32 }
33
34 parent.checkClientConfigured(value, port());
35
36 auto addr = Ifaces::address(value);
37 serialize(id, *this, parent.dbusPersistentLocation);
38 return addr;
39 }
40
port(uint16_t value)41 uint16_t Client::port(uint16_t value)
42 {
43 if (value == Ifaces::port())
44 {
45 return value;
46 }
47
48 parent.checkClientConfigured(address(), value);
49
50 auto port = Ifaces::port(value);
51 serialize(id, *this, parent.dbusPersistentLocation);
52 return port;
53 }
54
delete_()55 void Client::delete_()
56 {
57 parent.deleteSNMPClient(id);
58 }
59
60 } // namespace snmp
61 } // namespace network
62 } // namespace phosphor
63