Implement network monitor
This commit listens for the ipaddress add event
and prints the message once it gets the NEWADDR
signal.
Change-Id: I5cdebc023dc8848fc736eca8d785c33387d401df
Signed-off-by: Ratan Gupta <ratagupt@in.ibm.com>
diff --git a/network_manager_main.cpp b/network_manager_main.cpp
index 461ddd6..993efc7 100644
--- a/network_manager_main.cpp
+++ b/network_manager_main.cpp
@@ -1,26 +1,56 @@
+#include "network_manager.hpp"
+#include "rtnetlink_server.hpp"
+
+#include <memory>
+
+#include <phosphor-logging/log.hpp>
#include <sdbusplus/bus.hpp>
#include <sdbusplus/server/manager.hpp>
-#include "config.h"
-#include "network_manager.hpp"
+
+namespace phosphor
+{
+namespace network
+{
+
+std::unique_ptr<phosphor::network::Manager> manager = nullptr;
+
+} //namespace network
+} //namespace phosphor
int main(int argc, char *argv[])
{
+ using namespace phosphor::logging;
+
auto bus = sdbusplus::bus::new_default();
+ // Need sd_event to watch for OCC device errors
+ sd_event* event = nullptr;
+ auto r = sd_event_default(&event);
+ if (r < 0)
+ {
+ log<level::ERR>("Error creating a default sd_event handler");
+ return r;
+ }
+
+ phosphor::network::EventPtr eventPtr{event};
+ event = nullptr;
+
+ // Attach the bus to sd_event to service user requests
+ bus.attach_event(eventPtr.get(), SD_EVENT_PRIORITY_NORMAL);
+
// Add sdbusplus Object Manager for the 'root' path of the network manager.
sdbusplus::server::manager::manager objManager(bus, OBJ_NETWORK);
bus.request_name(BUSNAME_NETWORK);
- phosphor::network::Manager manager(bus, OBJ_NETWORK, NETWORK_CONF_DIR);
+ phosphor::network::manager =
+ std::make_unique<phosphor::network::Manager>(bus,
+ OBJ_NETWORK,
+ NETWORK_CONF_DIR);
- manager.createChildObjects();
+ phosphor::network::rtnetlink::Server svr(eventPtr);
+
+ phosphor::network::manager->createChildObjects();
- while(true)
- {
- bus.process_discard();
- bus.wait();
- }
-
- return 0;
+ return svr.run();
}