xref: /openbmc/phosphor-snmp/snmp_client.cpp (revision ed2ee733)
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 
13 Client::Client(sdbusplus::bus::bus& bus, const char* objPath,
14                ConfManager& parent, 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 
21     // Emit deferred signal.
22     emit_object_added();
23 }
24 
25 std::string Client::address(std::string value)
26 {
27     if (value == Ifaces::address())
28     {
29         return value;
30     }
31 
32     parent.checkClientConfigured(value, port());
33 
34     auto addr = Ifaces::address(value);
35     serialize(id, *this, parent.dbusPersistentLocation);
36     return addr;
37 }
38 
39 uint16_t Client::port(uint16_t value)
40 {
41     if (value == Ifaces::port())
42     {
43         return value;
44     }
45 
46     parent.checkClientConfigured(address(), value);
47 
48     auto port = Ifaces::port(value);
49     serialize(id, *this, parent.dbusPersistentLocation);
50     return port;
51 }
52 
53 void Client::delete_()
54 {
55     parent.deleteSNMPClient(id);
56 }
57 
58 } // namespace snmp
59 } // namespace network
60 } // namespace phosphor
61