xref: /openbmc/phosphor-snmp/snmp_main.cpp (revision 34d129a9)
11dc9178dSRatan Gupta #include "config.h"
21334b7b3SPatrick Williams 
31dc9178dSRatan Gupta #include "snmp_conf_manager.hpp"
41dc9178dSRatan Gupta 
51dc9178dSRatan Gupta #include <phosphor-logging/log.hpp>
61dc9178dSRatan Gupta #include <sdbusplus/bus.hpp>
71dc9178dSRatan Gupta #include <sdbusplus/server/manager.hpp>
81dc9178dSRatan Gupta 
91dc9178dSRatan Gupta #include <memory>
101dc9178dSRatan Gupta 
111dc9178dSRatan Gupta /* Need a custom deleter for freeing up sd_event */
121dc9178dSRatan Gupta struct EventDeleter
131dc9178dSRatan Gupta {
141dc9178dSRatan Gupta     void operator()(sd_event* event) const
151dc9178dSRatan Gupta     {
16*34d129a9SRatan Gupta         sd_event_unref(event);
171dc9178dSRatan Gupta     }
181dc9178dSRatan Gupta };
191dc9178dSRatan Gupta 
201dc9178dSRatan Gupta using EventPtr = std::unique_ptr<sd_event, EventDeleter>;
211dc9178dSRatan Gupta 
22*34d129a9SRatan Gupta int main(int /*argc*/, char** /*argv[]*/)
231dc9178dSRatan Gupta {
241dc9178dSRatan Gupta     using namespace phosphor::logging;
251dc9178dSRatan Gupta 
261dc9178dSRatan Gupta     auto bus = sdbusplus::bus::new_default();
271dc9178dSRatan Gupta 
281dc9178dSRatan Gupta     sd_event* event = nullptr;
291dc9178dSRatan Gupta     auto r = sd_event_default(&event);
301dc9178dSRatan Gupta     if (r < 0)
311dc9178dSRatan Gupta     {
321dc9178dSRatan Gupta         log<level::ERR>("Error creating a default sd_event handler");
331dc9178dSRatan Gupta         return r;
341dc9178dSRatan Gupta     }
351dc9178dSRatan Gupta 
361dc9178dSRatan Gupta     EventPtr eventPtr{event};
371dc9178dSRatan Gupta     event = nullptr;
381dc9178dSRatan Gupta 
391dc9178dSRatan Gupta     // Attach the bus to sd_event to service user requests
401dc9178dSRatan Gupta     bus.attach_event(eventPtr.get(), SD_EVENT_PRIORITY_NORMAL);
411dc9178dSRatan Gupta 
421dc9178dSRatan Gupta     // Add sdbusplus Object Manager for the 'root' path of the snmp.
431dc9178dSRatan Gupta     sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK_SNMP);
441dc9178dSRatan Gupta     bus.request_name(BUSNAME_NETWORK_SNMP);
451dc9178dSRatan Gupta 
461dc9178dSRatan Gupta     auto manager = std::make_unique<phosphor::network::snmp::ConfManager>(
471dc9178dSRatan Gupta         bus, OBJ_NETWORK_SNMP);
481dc9178dSRatan Gupta 
49212f53e8SRatan Gupta     manager->restoreClients();
50212f53e8SRatan Gupta 
511dc9178dSRatan Gupta     return sd_event_loop(eventPtr.get());
521dc9178dSRatan Gupta }
53