blob: 4dc3d57e6a34e4472e46d07eb3a868bf7e60a41e [file] [log] [blame]
Ratan Gupta1dc91782018-04-19 16:47:12 +05301#include "snmp_client.hpp"
Patrick Williams1334b7b2021-02-22 17:15:12 -06002
Ratan Gupta1dc91782018-04-19 16:47:12 +05303#include "snmp_conf_manager.hpp"
Ratan Gupta9d18e562018-11-16 17:19:34 +05304#include "snmp_serialize.hpp"
Ratan Gupta1dc91782018-04-19 16:47:12 +05305
6namespace phosphor
7{
8namespace network
9{
10namespace snmp
11{
12
Patrick Williams87d3edd2022-07-22 19:26:53 -050013Client::Client(sdbusplus::bus_t& bus, const char* objPath, ConfManager& parent,
14 const std::string& address, uint16_t port) :
Patrick Williamsb9b4c7d2022-04-05 16:20:37 -050015 Ifaces(bus, objPath, Ifaces::action::defer_emit),
Ratan Gupta34d129a2021-12-04 21:04:51 +053016 id(std::stol(std::filesystem::path(objPath).filename())), parent(parent)
Ratan Gupta1dc91782018-04-19 16:47:12 +053017{
18 this->address(address);
19 this->port(port);
20
21 // Emit deferred signal.
22 emit_object_added();
23}
24
Ratan Gupta9d18e562018-11-16 17:19:34 +053025std::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
39uint16_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
Ratan Gupta1dc91782018-04-19 16:47:12 +053053void Client::delete_()
54{
Ratan Guptaa7ff3852018-11-16 14:05:57 +053055 parent.deleteSNMPClient(id);
Ratan Gupta1dc91782018-04-19 16:47:12 +053056}
57
58} // namespace snmp
59} // namespace network
60} // namespace phosphor