diff --git a/nfd.conf.sample.in b/nfd.conf.sample.in
index b1b704a..819e038 100644
--- a/nfd.conf.sample.in
+++ b/nfd.conf.sample.in
@@ -366,4 +366,8 @@
     ; policy. Initially, the wait time is set to base_retry_wait, then it will be doubled for every
     ; retry unless beyond the max_retry_wait, in which case max_retry_wait is set as the wait time.
   }
+
+  ; If enabled, routes registered with origin=client (typically from auto_prefix_propagate)
+  ; will be readvertised into local NLSR daemon.
+  readvertise_nlsr no
 }
diff --git a/rib/rib-manager.cpp b/rib/rib-manager.cpp
index 653ad28..ae76a81 100644
--- a/rib/rib-manager.cpp
+++ b/rib/rib-manager.cpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -24,16 +24,29 @@
  */
 
 #include "rib-manager.hpp"
+#include "readvertise/readvertise.hpp"
+#include "readvertise/client-to-nlsr-readvertise-policy.hpp"
+#include "readvertise/nfd-rib-readvertise-destination.hpp"
+
 #include "core/global-io.hpp"
 #include "core/logger.hpp"
 #include "core/scheduler.hpp"
+
 #include <ndn-cxx/lp/tags.hpp>
+#include <ndn-cxx/mgmt/nfd/control-command.hpp>
+#include <ndn-cxx/mgmt/nfd/control-response.hpp>
+#include <ndn-cxx/mgmt/nfd/control-parameters.hpp>
 #include <ndn-cxx/mgmt/nfd/face-status.hpp>
 #include <ndn-cxx/mgmt/nfd/rib-entry.hpp>
 
 namespace nfd {
 namespace rib {
 
+using ndn::nfd::ControlCommand;
+using ndn::nfd::ControlResponse;
+using ndn::nfd::ControlParameters;
+using ndn::nfd::FaceEventNotification;
+
 NFD_LOG_INIT("RibManager");
 
 const Name RibManager::LOCAL_HOST_TOP_PREFIX = "/localhost/nfd";
@@ -41,6 +54,7 @@
 const std::string RibManager::MGMT_MODULE_NAME = "rib";
 const Name RibManager::FACES_LIST_DATASET_PREFIX = "/localhost/nfd/faces/list";
 const time::seconds RibManager::ACTIVE_FACE_FETCH_INTERVAL = time::seconds(300);
+const Name RibManager::READVERTISE_NLSR_PREFIX = "/localhost/nlsr";
 
 RibManager::RibManager(Dispatcher& dispatcher,
                        ndn::Face& face,
@@ -127,6 +141,7 @@
                      const std::string& filename)
 {
   bool isAutoPrefixPropagatorEnabled = false;
+  bool wantReadvertiseToNlsr = false;
 
   for (const auto& item : configSection) {
     if (item.first == "localhost_security") {
@@ -147,6 +162,9 @@
 
       m_prefixPropagator.enable();
     }
+    else if (item.first == "readvertise_nlsr") {
+      wantReadvertiseToNlsr = ConfigFile::parseYesNo(item, "rib.readvertise_nlsr");
+    }
     else {
       BOOST_THROW_EXCEPTION(Error("Unrecognized rib property: " + item.first));
     }
@@ -155,6 +173,18 @@
   if (!isAutoPrefixPropagatorEnabled) {
     m_prefixPropagator.disable();
   }
+
+  if (wantReadvertiseToNlsr && m_readvertiseNlsr == nullptr) {
+    NFD_LOG_DEBUG("Enabling readvertise-to-nlsr.");
+    m_readvertiseNlsr.reset(new Readvertise(
+      m_rib,
+      make_unique<ClientToNlsrReadvertisePolicy>(),
+      make_unique<NfdRibReadvertiseDestination>(m_nfdController, READVERTISE_NLSR_PREFIX, m_rib)));
+  }
+  else if (!wantReadvertiseToNlsr && m_readvertiseNlsr != nullptr) {
+    NFD_LOG_DEBUG("Disabling readvertise-to-nlsr.");
+    m_readvertiseNlsr.reset();
+  }
 }
 
 void
@@ -189,8 +219,7 @@
   route.flags = parameters.getFlags();
 
   if (parameters.hasExpirationPeriod() &&
-      parameters.getExpirationPeriod() != time::milliseconds::max())
-  {
+      parameters.getExpirationPeriod() != time::milliseconds::max()) {
     route.expires = time::steady_clock::now() + parameters.getExpirationPeriod();
 
     // Schedule a new event, the old one will be cancelled during rib insertion.
diff --git a/rib/rib-manager.hpp b/rib/rib-manager.hpp
index a8be263..b074add 100644
--- a/rib/rib-manager.hpp
+++ b/rib/rib-manager.hpp
@@ -1,6 +1,6 @@
 /* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
 /**
- * Copyright (c) 2014-2016,  Regents of the University of California,
+ * Copyright (c) 2014-2017,  Regents of the University of California,
  *                           Arizona Board of Regents,
  *                           Colorado State University,
  *                           University Pierre & Marie Curie, Sorbonne University,
@@ -26,28 +26,24 @@
 #ifndef NFD_RIB_RIB_MANAGER_HPP
 #define NFD_RIB_RIB_MANAGER_HPP
 
-#include "rib.hpp"
-#include "core/config-file.hpp"
-#include "core/manager-base.hpp"
 #include "auto-prefix-propagator.hpp"
 #include "fib-updater.hpp"
+#include "rib.hpp"
+
+#include "core/config-file.hpp"
+#include "core/manager-base.hpp"
 
 #include <ndn-cxx/encoding/buffer-stream.hpp>
 #include <ndn-cxx/security/validator-config.hpp>
-#include <ndn-cxx/mgmt/nfd/face-monitor.hpp>
 #include <ndn-cxx/mgmt/nfd/controller.hpp>
-#include <ndn-cxx/mgmt/nfd/control-command.hpp>
-#include <ndn-cxx/mgmt/nfd/control-response.hpp>
-#include <ndn-cxx/mgmt/nfd/control-parameters.hpp>
+#include <ndn-cxx/mgmt/nfd/face-event-notification.hpp>
+#include <ndn-cxx/mgmt/nfd/face-monitor.hpp>
 
 namespace nfd {
 namespace rib {
 
-using ndn::nfd::ControlCommand;
-using ndn::nfd::ControlResponse;
-using ndn::nfd::ControlParameters;
-
-using ndn::nfd::FaceEventNotification;
+class AutoPrefixPropagator;
+class Readvertise;
 
 class RibManager : public nfd::ManagerBase
 {
@@ -107,7 +103,7 @@
   void
   setFaceForSelfRegistration(const Interest& request, ControlParameters& parameters);
 
-  virtual ndn::mgmt::Authorization
+  ndn::mgmt::Authorization
   makeAuthorization(const std::string& verb) override;
 
 private: // Face monitor
@@ -138,7 +134,7 @@
    * @param notification
    */
   void
-  onNotification(const FaceEventNotification& notification);
+  onNotification(const ndn::nfd::FaceEventNotification& notification);
 
 private:
   void
@@ -163,6 +159,7 @@
   ndn::ValidatorConfig m_localhopValidator;
   bool m_isLocalhopEnabled;
   AutoPrefixPropagator m_prefixPropagator;
+  unique_ptr<Readvertise> m_readvertiseNlsr;
 
 PUBLIC_WITH_TESTS_ELSE_PRIVATE:
   Rib m_rib;
@@ -175,6 +172,7 @@
   static const Name FACES_LIST_DATASET_PREFIX;
   static const time::seconds ACTIVE_FACE_FETCH_INTERVAL;
   scheduler::EventId m_activeFaceFetchEvent;
+  static const Name READVERTISE_NLSR_PREFIX;
 
   typedef std::set<uint64_t> FaceIdSet;
   /** \brief contains FaceIds with one or more Routes in the RIB
