util: NetworkMonitor: fine-grained signals on interface/address changes

Change-Id: I60d4cc6d673b920ba81d57502977f0340be0da48
Refs: #3353
diff --git a/src/util/network-monitor.cpp b/src/util/network-monitor.cpp
index a12e373..ccb5418 100644
--- a/src/util/network-monitor.cpp
+++ b/src/util/network-monitor.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2013-2016 Regents of the University of California.
+ * Copyright (c) 2013-2017 Regents of the University of California.
  *
  * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
  *
@@ -17,10 +17,12 @@
  * <http://www.gnu.org/licenses/>.
  *
  * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ *
+ * @author Alexander Afanasyev <alexander.afanasyev@ucla.edu>
+ * @author Davide Pesavento <davide.pesavento@lip6.fr>
  */
 
 #include "network-monitor.hpp"
-
 #include "ndn-cxx-config.hpp"
 
 #if defined(NDN_CXX_HAVE_COREFOUNDATION_COREFOUNDATION_H)
@@ -50,11 +52,23 @@
 namespace util {
 
 NetworkMonitor::NetworkMonitor(boost::asio::io_service& io)
-  : m_impl(new Impl(*this, io))
+  : m_impl(make_unique<Impl>(*this, io))
 {
 }
 
 NetworkMonitor::~NetworkMonitor() = default;
 
+shared_ptr<NetworkInterface>
+NetworkMonitor::getNetworkInterface(const std::string& ifname) const
+{
+  return m_impl->getNetworkInterface(ifname);
+}
+
+std::vector<shared_ptr<NetworkInterface>>
+NetworkMonitor::listNetworkInterfaces() const
+{
+  return m_impl->listNetworkInterfaces();
+}
+
 } // namespace util
 } // namespace ndn