xref: /openbmc/phosphor-snmp/snmp_main.cpp (revision 1dc9178d)
1*1dc9178dSRatan Gupta #include "config.h"
2*1dc9178dSRatan Gupta #include "snmp_conf_manager.hpp"
3*1dc9178dSRatan Gupta 
4*1dc9178dSRatan Gupta #include <phosphor-logging/log.hpp>
5*1dc9178dSRatan Gupta #include <sdbusplus/bus.hpp>
6*1dc9178dSRatan Gupta #include <sdbusplus/server/manager.hpp>
7*1dc9178dSRatan Gupta 
8*1dc9178dSRatan Gupta #include <memory>
9*1dc9178dSRatan Gupta 
10*1dc9178dSRatan Gupta /* Need a custom deleter for freeing up sd_event */
11*1dc9178dSRatan Gupta struct EventDeleter
12*1dc9178dSRatan Gupta {
13*1dc9178dSRatan Gupta     void operator()(sd_event* event) const
14*1dc9178dSRatan Gupta     {
15*1dc9178dSRatan Gupta         event = sd_event_unref(event);
16*1dc9178dSRatan Gupta     }
17*1dc9178dSRatan Gupta };
18*1dc9178dSRatan Gupta 
19*1dc9178dSRatan Gupta using EventPtr = std::unique_ptr<sd_event, EventDeleter>;
20*1dc9178dSRatan Gupta 
21*1dc9178dSRatan Gupta int main(int argc, char* argv[])
22*1dc9178dSRatan Gupta {
23*1dc9178dSRatan Gupta     using namespace phosphor::logging;
24*1dc9178dSRatan Gupta 
25*1dc9178dSRatan Gupta     auto bus = sdbusplus::bus::new_default();
26*1dc9178dSRatan Gupta 
27*1dc9178dSRatan Gupta     sd_event* event = nullptr;
28*1dc9178dSRatan Gupta     auto r = sd_event_default(&event);
29*1dc9178dSRatan Gupta     if (r < 0)
30*1dc9178dSRatan Gupta     {
31*1dc9178dSRatan Gupta         log<level::ERR>("Error creating a default sd_event handler");
32*1dc9178dSRatan Gupta         return r;
33*1dc9178dSRatan Gupta     }
34*1dc9178dSRatan Gupta 
35*1dc9178dSRatan Gupta     EventPtr eventPtr{event};
36*1dc9178dSRatan Gupta     event = nullptr;
37*1dc9178dSRatan Gupta 
38*1dc9178dSRatan Gupta     // Attach the bus to sd_event to service user requests
39*1dc9178dSRatan Gupta     bus.attach_event(eventPtr.get(), SD_EVENT_PRIORITY_NORMAL);
40*1dc9178dSRatan Gupta 
41*1dc9178dSRatan Gupta     // Add sdbusplus Object Manager for the 'root' path of the snmp.
42*1dc9178dSRatan Gupta     sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK_SNMP);
43*1dc9178dSRatan Gupta     bus.request_name(BUSNAME_NETWORK_SNMP);
44*1dc9178dSRatan Gupta 
45*1dc9178dSRatan Gupta     auto manager = std::make_unique<phosphor::network::snmp::ConfManager>(
46*1dc9178dSRatan Gupta         bus, OBJ_NETWORK_SNMP);
47*1dc9178dSRatan Gupta 
48*1dc9178dSRatan Gupta     return sd_event_loop(eventPtr.get());
49*1dc9178dSRatan Gupta }
50