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();
 }