1*1dc9178dSRatan Gupta #pragma once 2*1dc9178dSRatan Gupta 3*1dc9178dSRatan Gupta #include "snmp_client.hpp" 4*1dc9178dSRatan Gupta 5*1dc9178dSRatan Gupta #include <xyz/openbmc_project/Network/Client/Create/server.hpp> 6*1dc9178dSRatan Gupta #include <sdbusplus/bus.hpp> 7*1dc9178dSRatan Gupta 8*1dc9178dSRatan Gupta #include <string> 9*1dc9178dSRatan Gupta 10*1dc9178dSRatan Gupta namespace phosphor 11*1dc9178dSRatan Gupta { 12*1dc9178dSRatan Gupta namespace network 13*1dc9178dSRatan Gupta { 14*1dc9178dSRatan Gupta namespace snmp 15*1dc9178dSRatan Gupta { 16*1dc9178dSRatan Gupta using IPAddress = std::string; 17*1dc9178dSRatan Gupta using ClientList = std::map<IPAddress, std::unique_ptr<Client>>; 18*1dc9178dSRatan Gupta 19*1dc9178dSRatan Gupta namespace details 20*1dc9178dSRatan Gupta { 21*1dc9178dSRatan Gupta 22*1dc9178dSRatan Gupta using CreateIface = sdbusplus::server::object::object< 23*1dc9178dSRatan Gupta sdbusplus::xyz::openbmc_project::Network::Client::server::Create>; 24*1dc9178dSRatan Gupta 25*1dc9178dSRatan Gupta } // namespace details 26*1dc9178dSRatan Gupta 27*1dc9178dSRatan Gupta class TestSNMPConfManager; 28*1dc9178dSRatan Gupta /** @class Manager 29*1dc9178dSRatan Gupta * @brief OpenBMC SNMP config implementation. 30*1dc9178dSRatan Gupta */ 31*1dc9178dSRatan Gupta class ConfManager : public details::CreateIface 32*1dc9178dSRatan Gupta { 33*1dc9178dSRatan Gupta public: 34*1dc9178dSRatan Gupta ConfManager() = delete; 35*1dc9178dSRatan Gupta ConfManager(const ConfManager&) = delete; 36*1dc9178dSRatan Gupta ConfManager& operator=(const ConfManager&) = delete; 37*1dc9178dSRatan Gupta ConfManager(ConfManager&&) = delete; 38*1dc9178dSRatan Gupta ConfManager& operator=(ConfManager&&) = delete; 39*1dc9178dSRatan Gupta virtual ~ConfManager() = default; 40*1dc9178dSRatan Gupta 41*1dc9178dSRatan Gupta /** @brief Constructor to put object onto bus at a dbus path. 42*1dc9178dSRatan Gupta * @param[in] bus - Bus to attach to. 43*1dc9178dSRatan Gupta * @param[in] objPath - Path to attach at. 44*1dc9178dSRatan Gupta */ 45*1dc9178dSRatan Gupta ConfManager(sdbusplus::bus::bus& bus, const char* objPath); 46*1dc9178dSRatan Gupta 47*1dc9178dSRatan Gupta /** @brief Function to create snmp manager details D-Bus object. 48*1dc9178dSRatan Gupta * @param[in] address- IP address/Hostname. 49*1dc9178dSRatan Gupta * @param[in] port - network port. 50*1dc9178dSRatan Gupta */ 51*1dc9178dSRatan Gupta void client(std::string address, uint16_t port) override; 52*1dc9178dSRatan Gupta 53*1dc9178dSRatan Gupta /* @brief delete the dbus object of the given ipaddress. 54*1dc9178dSRatan Gupta * @param[in] address - IP address/Hostname. 55*1dc9178dSRatan Gupta */ 56*1dc9178dSRatan Gupta void deleteSNMPClient(const std::string& address); 57*1dc9178dSRatan Gupta 58*1dc9178dSRatan Gupta protected: 59*1dc9178dSRatan Gupta /** @brief generates the id by doing hash of ipaddress, port 60*1dc9178dSRatan Gupta * @param[in] address - IP address/Hostname. 61*1dc9178dSRatan Gupta * @param[in] port - network port. 62*1dc9178dSRatan Gupta * @return hash string. 63*1dc9178dSRatan Gupta */ 64*1dc9178dSRatan Gupta static std::string generateId(const std::string& address, uint16_t port); 65*1dc9178dSRatan Gupta 66*1dc9178dSRatan Gupta private: 67*1dc9178dSRatan Gupta /** @brief sdbusplus DBus bus object. */ 68*1dc9178dSRatan Gupta sdbusplus::bus::bus& bus; 69*1dc9178dSRatan Gupta 70*1dc9178dSRatan Gupta /** @brief Path of Object. */ 71*1dc9178dSRatan Gupta std::string objectPath; 72*1dc9178dSRatan Gupta 73*1dc9178dSRatan Gupta /** @brief map of IPAddress dbus objects and their names */ 74*1dc9178dSRatan Gupta ClientList clients; 75*1dc9178dSRatan Gupta 76*1dc9178dSRatan Gupta friend class TestSNMPConfManager; 77*1dc9178dSRatan Gupta }; 78*1dc9178dSRatan Gupta 79*1dc9178dSRatan Gupta } // namespace snmp 80*1dc9178dSRatan Gupta } // namespace network 81*1dc9178dSRatan Gupta } // namespace phosphor 82