11dc9178dSRatan Gupta #pragma once 21dc9178dSRatan Gupta #include "xyz/openbmc_project/Network/Client/server.hpp" 31dc9178dSRatan Gupta #include "xyz/openbmc_project/Object/Delete/server.hpp" 41dc9178dSRatan Gupta 51dc9178dSRatan Gupta #include <sdbusplus/bus.hpp> 61dc9178dSRatan Gupta #include <sdbusplus/server/object.hpp> 71dc9178dSRatan Gupta 834d129a9SRatan Gupta #include <filesystem> 91dc9178dSRatan Gupta #include <string> 101dc9178dSRatan Gupta 111dc9178dSRatan Gupta namespace phosphor 121dc9178dSRatan Gupta { 131dc9178dSRatan Gupta namespace network 141dc9178dSRatan Gupta { 151dc9178dSRatan Gupta namespace snmp 161dc9178dSRatan Gupta { 171dc9178dSRatan Gupta 181dc9178dSRatan Gupta class ConfManager; 191dc9178dSRatan Gupta 2087d3edd6SPatrick Williams using Ifaces = sdbusplus::server::object_t< 211dc9178dSRatan Gupta sdbusplus::xyz::openbmc_project::Network::server::Client, 221dc9178dSRatan Gupta sdbusplus::xyz::openbmc_project::Object::server::Delete>; 231dc9178dSRatan Gupta 24a7ff3850SRatan Gupta using Id = size_t; 25a7ff3850SRatan Gupta 261dc9178dSRatan Gupta /** @class Client 271dc9178dSRatan Gupta * @brief represents the snmp client configuration 281dc9178dSRatan Gupta * @details A concrete implementation for the 291dc9178dSRatan Gupta * xyz.openbmc_project.Network.Client Dbus interface. 301dc9178dSRatan Gupta */ 311dc9178dSRatan Gupta class Client : public Ifaces 321dc9178dSRatan Gupta { 331dc9178dSRatan Gupta public: 341dc9178dSRatan Gupta Client() = delete; 351dc9178dSRatan Gupta Client(const Client&) = delete; 361dc9178dSRatan Gupta Client& operator=(const Client&) = delete; 371dc9178dSRatan Gupta Client(Client&&) = delete; 381dc9178dSRatan Gupta Client& operator=(Client&&) = delete; 391dc9178dSRatan Gupta virtual ~Client() = default; 401dc9178dSRatan Gupta 411dc9178dSRatan Gupta /** @brief Constructor to put object onto bus at a dbus path. 421dc9178dSRatan Gupta * @param[in] bus - Bus to attach to. 431dc9178dSRatan Gupta * @param[in] objPath - Path to attach at. 441dc9178dSRatan Gupta * @param[in] parent - Parent D-bus Object. 451dc9178dSRatan Gupta * @param[in] address - IPaddress/Hostname. 461dc9178dSRatan Gupta * @param[in] port - network port. 471dc9178dSRatan Gupta */ 4887d3edd6SPatrick Williams Client(sdbusplus::bus_t& bus, const char* objPath, ConfManager& parent, 491dc9178dSRatan Gupta const std::string& address, uint16_t port); 501dc9178dSRatan Gupta 51212f53e8SRatan Gupta /** @brief Constructor to put object onto bus at a dbus path. 52212f53e8SRatan Gupta * @param[in] bus - Bus to attach to. 53212f53e8SRatan Gupta * @param[in] objPath - Path to attach at. 54212f53e8SRatan Gupta * @param[in] parent - Parent D-bus Object. 55212f53e8SRatan Gupta */ Client(sdbusplus::bus_t & bus,const char * objPath,ConfManager & parent)5687d3edd6SPatrick Williams Client(sdbusplus::bus_t& bus, const char* objPath, ConfManager& parent) : 57b9b4c7dbSPatrick Williams Ifaces(bus, objPath, Ifaces::action::defer_emit), 5834d129a9SRatan Gupta id(std::stol(std::filesystem::path(objPath).filename())), parent(parent) 591334b7b3SPatrick Williams {} 60212f53e8SRatan Gupta 619d18e562SRatan Gupta /** @brief Update the address of the object. 629d18e562SRatan Gupta * 639d18e562SRatan Gupta * @param[in] value - IP address 649d18e562SRatan Gupta * 659d18e562SRatan Gupta * @return On success the updated IP address 669d18e562SRatan Gupta */ 679d18e562SRatan Gupta std::string address(std::string value) override; 689d18e562SRatan Gupta 699d18e562SRatan Gupta /** @brief Update the port 709d18e562SRatan Gupta * 719d18e562SRatan Gupta * @param[in] value - port number 729d18e562SRatan Gupta * 739d18e562SRatan Gupta * @return On success the updated port number 749d18e562SRatan Gupta */ 759d18e562SRatan Gupta uint16_t port(uint16_t value) override; 769d18e562SRatan Gupta 779d18e562SRatan Gupta using sdbusplus::xyz::openbmc_project::Network::server::Client::address; 789d18e562SRatan Gupta 799d18e562SRatan Gupta using sdbusplus::xyz::openbmc_project::Network::server::Client::port; 809d18e562SRatan Gupta 811dc9178dSRatan Gupta /** @brief Delete this d-bus object. 821dc9178dSRatan Gupta */ 831dc9178dSRatan Gupta void delete_() override; 841dc9178dSRatan Gupta 85a7ff3850SRatan Gupta /** Client ID. */ 86a7ff3850SRatan Gupta Id id; 87*c0d7cd47SGeorge Liu 88*c0d7cd47SGeorge Liu private: 891dc9178dSRatan Gupta /** @brief Parent D-Bus Object. */ 901dc9178dSRatan Gupta ConfManager& parent; 911dc9178dSRatan Gupta }; 921dc9178dSRatan Gupta 931dc9178dSRatan Gupta } // namespace snmp 941dc9178dSRatan Gupta } // namespace network 951dc9178dSRatan Gupta } // namespace phosphor 96