Upgrade NFD/ndn-cxx to version 0.6.0

The upgrade required a small hotfix pushed to a custom github fork

Change-Id: I0f97f31739537e6274995022ea4d1a88aeedfb57
diff --git a/app/src/main/jni/Android.mk b/app/src/main/jni/Android.mk
index 20989c2..762c358 100644
--- a/app/src/main/jni/Android.mk
+++ b/app/src/main/jni/Android.mk
@@ -5,7 +5,7 @@
 LOCAL_MODULE := nfd-wrapper
 LOCAL_SRC_FILES := nfd-wrapper.cpp
 LOCAL_SHARED_LIBRARIES := nfd-daemon ndn-cxx boost_system_shared boost_thread_shared
-LOCAL_LDLIBS := -llog
+LOCAL_LDLIBS := -llog -latomic
 include $(BUILD_SHARED_LIBRARY)
 
 include $(LOCAL_PATH_SAVED)/ndn-cxx.mk
diff --git a/app/src/main/jni/NFD b/app/src/main/jni/NFD
index 6701911..e5abc94 160000
--- a/app/src/main/jni/NFD
+++ b/app/src/main/jni/NFD
@@ -1 +1 @@
-Subproject commit 67019110d71d25d9acf1bb7791ad9828dbabd757
+Subproject commit e5abc94540a8987ab8c2fc83f28d6073e2be0b96
diff --git a/app/src/main/jni/cryptopp b/app/src/main/jni/cryptopp
deleted file mode 160000
index 5ac4019..0000000
--- a/app/src/main/jni/cryptopp
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit 5ac4019f0893bae2e40c2698427afc8ea374c1d3
diff --git a/app/src/main/jni/ndn-cxx b/app/src/main/jni/ndn-cxx
index 17c83c2..f2e7a03 160000
--- a/app/src/main/jni/ndn-cxx
+++ b/app/src/main/jni/ndn-cxx
@@ -1 +1 @@
-Subproject commit 17c83c2467dd468dfa8684cc9f5412dc1b7c59dd
+Subproject commit f2e7a0391eed1670691c1e0a7c644bc2430bb01c
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
index d7d1858..e79c69d 100644
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
+++ b/app/src/main/jni/ndn-cxx-android/ndn-cxx-config.hpp
@@ -1,14 +1,18 @@
 #ifndef W_SRC_NDN_CXX_CONFIG_HPP_WAF
 #define W_SRC_NDN_CXX_CONFIG_HPP_WAF
 
+// Uncomment this after switch to clang/libc++
 // #define NDN_CXX_HAVE_STD_TO_STRING 1
+
 #define NDN_CXX_HAVE_VECTOR_INSERT_ERASE_CONST_ITERATOR 1
 #define NDN_CXX_HAVE_IS_DEFAULT_CONSTRUCTIBLE 1
 #define NDN_CXX_HAVE_IS_NOTHROW_MOVE_CONSTRUCTIBLE 1
 #define NDN_CXX_HAVE_IS_NOTHROW_MOVE_ASSIGNABLE 1
-#define NDN_CXX_HAVE_RT
 #define NDN_CXX_HAVE_PTHREAD 1
+#define NDN_CXX_HAVE_RT 1
+#define NDN_CXX_HAVE_RTNETLINK 1
 #define NDN_CXX_HAVE_SQLITE3 1
+#define NDN_CXX_HAVE_OPENSSL 1
 #define NDN_CXX_SYSCONFDIR "./etc"
 #define NDN_CXX_NDEBUG 1
 #define NDEBUG 1
diff --git a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
index 892c1d5..c8595fe 100644
--- a/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
+++ b/app/src/main/jni/ndn-cxx-android/ndn-cxx-custom-logger.hpp
@@ -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).
  *
@@ -23,6 +23,7 @@
 #define NFD_ANDROID_NDN_CXX_ANDROID_NDN_CXX_CUSTOM_LOGGER_HPP
 
 #include "common.hpp"
+#include <sstream>
 #include <atomic>
 #include <android/log.h>
 
diff --git a/app/src/main/jni/ndn-cxx-android/version.hpp b/app/src/main/jni/ndn-cxx-android/version.hpp
new file mode 100644
index 0000000..4ab8d5d
--- /dev/null
+++ b/app/src/main/jni/ndn-cxx-android/version.hpp
@@ -0,0 +1,68 @@
+/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
+/**
+ * Copyright (c) 2013-2017 Regents of the University of California.
+ *
+ * This file is part of ndn-cxx library (NDN C++ library with eXperimental eXtensions).
+ *
+ * ndn-cxx library is free software: you can redistribute it and/or modify it under the
+ * terms of the GNU Lesser General Public License as published by the Free Software
+ * Foundation, either version 3 of the License, or (at your option) any later version.
+ *
+ * ndn-cxx library is distributed in the hope that it will be useful, but WITHOUT ANY
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ *
+ * You should have received copies of the GNU General Public License and GNU Lesser
+ * General Public License along with ndn-cxx, e.g., in COPYING.md file.  If not, see
+ * <http://www.gnu.org/licenses/>.
+ *
+ * See AUTHORS.md for complete list of ndn-cxx authors and contributors.
+ */
+
+#ifndef NDN_VERSION_HPP
+#define NDN_VERSION_HPP
+
+namespace ndn {
+
+/** ndn-cxx version follows Semantic Versioning 2.0.0 specification
+ *  http://semver.org/
+ */
+
+/** \brief ndn-cxx version represented as an integer
+ *
+ *  MAJOR*1000000 + MINOR*1000 + PATCH
+ */
+#define NDN_CXX_VERSION 6000
+
+/** \brief ndn-cxx version represented as a string
+ *
+ *  MAJOR.MINOR.PATCH
+ */
+#define NDN_CXX_VERSION_STRING "0.6.0"
+
+/** \brief ndn-cxx version string, including git commit information, if ndn-cxx is build from
+ *         specific git commit
+ *
+ * NDN_CXX_VERSION_BUILD_STRING is obtained using the following command (`ndn-cxx-` prefix is
+ * afterwards removed):
+ *
+ *    `git describe --match 'ndn-cxx-*'`
+ *
+ * When ndn-cxx is built not from git, NDN_CXX_VERSION_BUILD_STRING equals NDN_CXX_VERSION_STRING
+ *
+ * MAJOR.MINOR.PATCH(-release-candidate-tag)(-(number-of-commits-since-tag)-COMMIT-HASH)
+ *
+ * Example, 0.1.0-rc1-1-g5c86570
+ */
+#define NDN_CXX_VERSION_BUILD_STRING "0.6.0"
+
+/// MAJOR version
+#define NDN_CXX_VERSION_MAJOR 0
+/// MINOR version
+#define NDN_CXX_VERSION_MINOR 6
+/// PATCH version
+#define NDN_CXX_VERSION_PATCH 0
+
+} // namespace ndn
+
+#endif // NDN_VERSION_HPP
diff --git a/app/src/main/jni/ndn-cxx.mk b/app/src/main/jni/ndn-cxx.mk
index b47ea5c..d12a5b6 100644
--- a/app/src/main/jni/ndn-cxx.mk
+++ b/app/src/main/jni/ndn-cxx.mk
@@ -4,27 +4,33 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := ndn-cxx
 NDN_CXX_BOOST_LIBS = system filesystem date_time iostreams program_options chrono random
-LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := libcrypto_shared libssl_shared $(addsuffix _shared,$(addprefix boost_,$(NDN_CXX_BOOST_LIBS)))
 LOCAL_STATIC_LIBRARIES := sqlite3_static boost_regex_static
 NDN_CXX_SRC_FILES := \
     data.cpp \
+    delegation-list.cpp \
+    delegation.cpp \
     encoding/block-helpers.cpp \
     encoding/block.cpp \
     encoding/buffer-stream.cpp \
     encoding/buffer.cpp \
-    encoding/cryptopp/asn_ext.cpp \
     encoding/encoder.cpp \
     encoding/estimator.cpp \
     encoding/nfd-constants.cpp \
-    encoding/oid.cpp \
+    encoding/tlv.cpp \
     exclude.cpp \
     face.cpp \
+    ims/in-memory-storage-entry.cpp \
+    ims/in-memory-storage-fifo.cpp \
+    ims/in-memory-storage-lfu.cpp \
+    ims/in-memory-storage-lru.cpp \
+    ims/in-memory-storage-persistent.cpp \
+    ims/in-memory-storage.cpp \
     interest-filter.cpp \
     interest.cpp \
     key-locator.cpp \
     link.cpp \
     lp/cache-policy.cpp \
-    lp/detail/field-info.cpp \
     lp/nack-header.cpp \
     lp/nack.cpp \
     lp/packet.cpp \
@@ -37,6 +43,7 @@
     mgmt/nfd/control-parameters.cpp \
     mgmt/nfd/controller.cpp \
     mgmt/nfd/face-event-notification.cpp \
+    mgmt/nfd/face-monitor.cpp \
     mgmt/nfd/face-query-filter.cpp \
     mgmt/nfd/face-status.cpp \
     mgmt/nfd/fib-entry.cpp \
@@ -47,33 +54,44 @@
     mgmt/status-dataset-context.cpp \
     name-component.cpp \
     name.cpp \
-    security/certificate-cache-ttl.cpp \
-    security/certificate-container.cpp \
-    security/command-interest-validator.cpp \
+    net/address-converter.cpp \
+    net/detail/link-type-helper.cpp \
+    net/detail/linux-if-constants.cpp \
+    net/detail/network-monitor-impl-rtnl.cpp \
+    net/dns.cpp \
+    net/ethernet.cpp \
+    net/face-uri.cpp \
+    net/network-address.cpp \
+    net/network-interface.cpp \
+    net/network-monitor-stub.cpp \
+    net/network-monitor.cpp \
+    packet-base.cpp \
+    security/command-interest-signer.cpp \
     security/detail/openssl-helper.cpp \
     security/digest-sha256.cpp \
-    security/identity-container.cpp \
-    security/identity.cpp \
-    security/key-chain.cpp \
-    security/key-container.cpp \
     security/key-params.cpp \
-    security/key.cpp \
-    security/pib-memory.cpp \
-    security/pib-sqlite3.cpp \
-    security/pib.cpp \
+    security/pib/certificate-container.cpp \
+    security/pib/detail/identity-impl.cpp \
+    security/pib/detail/key-impl.cpp \
+    security/pib/identity-container.cpp \
+    security/pib/identity.cpp \
+    security/pib/key-container.cpp \
+    security/pib/key.cpp \
+    security/pib/pib-memory.cpp \
+    security/pib/pib-sqlite3.cpp \
+    security/pib/pib.cpp \
     security/safe-bag.cpp \
-    security/sec-public-info-sqlite3.cpp \
-    security/sec-public-info.cpp \
-    security/sec-rule-relative.cpp \
-    security/sec-rule-specific.cpp \
-    security/sec-tpm-file.cpp \
-    security/sec-tpm.cpp \
-    security/secured-bag.cpp \
     security/security-common.cpp \
     security/signature-sha256-with-ecdsa.cpp \
     security/signature-sha256-with-rsa.cpp \
     security/signing-helpers.cpp \
     security/signing-info.cpp \
+    security/tpm/back-end-file.cpp \
+    security/tpm/back-end-mem.cpp \
+    security/tpm/back-end.cpp \
+    security/tpm/key-handle-mem.cpp \
+    security/tpm/key-handle.cpp \
+    security/tpm/tpm.cpp \
     security/transform/base64-decode.cpp \
     security/transform/base64-encode.cpp \
     security/transform/block-cipher.cpp \
@@ -92,16 +110,33 @@
     security/transform/strip-space.cpp \
     security/transform/transform-base.cpp \
     security/transform/verifier-filter.cpp \
-    security/v1/certificate-extension.cpp \
-    security/v1/certificate-subject-description.cpp \
-    security/v1/certificate.cpp \
-    security/v1/identity-certificate.cpp \
-    security/v1/public-key.cpp \
     security/v2/additional-description.cpp \
+    security/v2/certificate-bundle-fetcher.cpp \
+    security/v2/certificate-cache.cpp \
+    security/v2/certificate-fetcher-direct-fetch.cpp \
+    security/v2/certificate-fetcher-from-network.cpp \
+    security/v2/certificate-fetcher-offline.cpp \
+    security/v2/certificate-fetcher.cpp \
+    security/v2/certificate-storage.cpp \
+    security/v2/certificate.cpp \
+    security/v2/key-chain.cpp \
+    security/v2/trust-anchor-container.cpp \
+    security/v2/trust-anchor-group.cpp \
+    security/v2/validation-error.cpp \
+    security/v2/validation-policy-command-interest.cpp \
+    security/v2/validation-policy-config.cpp \
+    security/v2/validation-policy-simple-hierarchy.cpp \
+    security/v2/validation-policy.cpp \
+    security/v2/validation-state.cpp \
+    security/v2/validator-config/checker.cpp \
+    security/v2/validator-config/filter.cpp \
+    security/v2/validator-config/name-relation.cpp \
+    security/v2/validator-config/rule.cpp \
+    security/v2/validator.cpp \
     security/validator-config.cpp \
-    security/validator-regex.cpp \
-    security/validator.cpp \
+    security/validator-null.cpp \
     security/validity-period.cpp \
+    security/verification-helpers.cpp \
     selectors.cpp \
     signature-info.cpp \
     signature.cpp \
@@ -109,28 +144,18 @@
     transport/transport.cpp \
     transport/unix-transport.cpp \
     util/config-file.cpp \
-    util/crypto.cpp \
-    util/digest.cpp \
-    util/dns.cpp \
     util/dummy-client-face.cpp \
-    util/ethernet.cpp \
-    util/face-uri.cpp \
-    util/in-memory-storage-entry.cpp \
-    util/in-memory-storage-fifo.cpp \
-    util/in-memory-storage-lfu.cpp \
-    util/in-memory-storage-lru.cpp \
-    util/in-memory-storage-persistent.cpp \
-    util/in-memory-storage.cpp \
     util/indented-stream.cpp \
     util/io.cpp \
-    util/network-monitor.cpp \
+    util/notification-subscriber.cpp \
     util/random.cpp \
     util/regex/regex-top-matcher.cpp \
     util/scheduler-scoped-event-id.cpp \
     util/scheduler.cpp \
     util/segment-fetcher.cpp \
-    util/signal-connection.cpp \
-    util/signal-scoped-connection.cpp \
+    util/sha256.cpp \
+    util/signal/connection.cpp \
+    util/signal/scoped-connection.cpp \
     util/sqlite3-statement.cpp \
     util/string-helper.cpp \
     util/time-unit-test-clock.cpp \
@@ -140,11 +165,9 @@
 LOCAL_SRC_FILES := $(addprefix ndn-cxx/src/,$(NDN_CXX_SRC_FILES))
 LOCAL_CPPFLAGS := -I$(LOCAL_PATH)/ndn-cxx/src -I$(LOCAL_PATH)/ndn-cxx-android -I$(LOCAL_PATH)/../../../build/generated/source/ndn-cxx
 LOCAL_EXPORT_C_INCLUDES := $(LOCAL_PATH)/ndn-cxx-android $(LOCAL_PATH)/../../../build/generated/source/include
-LOCAL_LDLIBS := -llog
+LOCAL_LDLIBS := -llog -latomic
 include $(BUILD_SHARED_LIBRARY)
 
-include $(LOCAL_PATH_SAVED)/cryptopp/extras/jni/Android.mk
-
 $(call import-module,../packages/boost/1.65.1)
 $(call import-module,../packages/sqlite/3.18.0)
 $(call import-module,../packages/openssl/1.0.2m)
diff --git a/app/src/main/jni/nfd-android/core/version.hpp b/app/src/main/jni/nfd-android/core/version.hpp
index 0b1f451..19a9d22 100644
--- a/app/src/main/jni/nfd-android/core/version.hpp
+++ b/app/src/main/jni/nfd-android/core/version.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,
@@ -38,13 +38,13 @@
  *
  *  MAJOR*1000000 + MINOR*1000 + PATCH
  */
-#define NFD_VERSION 5000
+#define NFD_VERSION 6000
 
 /** \brief NFD version represented as a string
  *
  *  MAJOR.MINOR.PATCH
  */
-#define NFD_VERSION_STRING "0.5.0"
+#define NFD_VERSION_STRING "0.6.0"
 
 /** \brief NFD version string, including git commit information, if NFD is build from
  *         specific git commit
@@ -60,12 +60,12 @@
  *
  * Example, 0.1.0-rc1-1-g5c86570
  */
-#define NFD_VERSION_BUILD_STRING "0.5.0"
+#define NFD_VERSION_BUILD_STRING "0.6.0"
 
 /// MAJOR version
 #define NFD_VERSION_MAJOR 0
 /// MINOR version
-#define NFD_VERSION_MINOR 5
+#define NFD_VERSION_MINOR 6
 /// PATCH version
 #define NFD_VERSION_PATCH 0
 
diff --git a/app/src/main/jni/nfd-android/custom-logger-factory.cpp b/app/src/main/jni/nfd-android/custom-logger-factory.cpp
index c1d2157..436bdf1 100644
--- a/app/src/main/jni/nfd-android/custom-logger-factory.cpp
+++ b/app/src/main/jni/nfd-android/custom-logger-factory.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,
@@ -25,6 +25,8 @@
 
 #include "custom-logger-factory.hpp"
 
+#include <boost/algorithm/string/case_conv.hpp>
+
 namespace nfd {
 
 NFD_LOG_INIT("LoggerFactory");
@@ -66,44 +68,36 @@
   // std::cerr << m_levelNames.begin()->first << std::endl;
 
   LevelMap::const_iterator levelIt = m_levelNames.find(upperLevel);
-  if (levelIt != m_levelNames.end())
-    {
-      return levelIt->second;
-    }
-  try
-    {
-      uint32_t levelNo = boost::lexical_cast<uint32_t>(level);
+  if (levelIt != m_levelNames.end()) {
+    return levelIt->second;
+  }
+  try {
+    uint32_t levelNo = boost::lexical_cast<uint32_t>(level);
 
-      if ((boost::lexical_cast<uint32_t>(LOG_NONE) <= levelNo &&
-           levelNo <= boost::lexical_cast<uint32_t>(LOG_TRACE)) ||
-          levelNo == LOG_ALL)
-        {
-          return static_cast<LogLevel>(levelNo);
-        }
+    if ((boost::lexical_cast<uint32_t>(LOG_NONE) <= levelNo &&
+         levelNo <= boost::lexical_cast<uint32_t>(LOG_TRACE)) ||
+        levelNo == LOG_ALL) {
+      return static_cast<LogLevel>(levelNo);
     }
-  catch (const boost::bad_lexical_cast& error)
-    {
-    }
-  throw LoggerFactory::Error("Unsupported logging level \"" +
-                             level + "\"");
+  }
+  catch (const boost::bad_lexical_cast& error) {
+  }
+  throw LoggerFactory::Error("Unsupported logging level \"" + level + "\"");
 }
 
 LogLevel
 LoggerFactory::extractLevel(const ConfigSection& item, const std::string& key)
 {
   std::string levelString;
-  try
-    {
-      levelString = item.get_value<std::string>();
-    }
-  catch (const boost::property_tree::ptree_error& error)
-    {
-    }
+  try {
+    levelString = item.get_value<std::string>();
+  }
+  catch (const boost::property_tree::ptree_error& error) {
+  }
 
-  if (levelString.empty())
-    {
-      throw LoggerFactory::Error("No logging level found for option \"" + key + "\"");
-    }
+  if (levelString.empty()) {
+    throw LoggerFactory::Error("No logging level found for option \"" + key + "\"");
+  }
 
   return parseLevel(levelString);
 }
@@ -127,45 +121,37 @@
 //   Forwarder WARN
 // }
 
-  if (!isDryRun)
-    {
-      ConfigSection::const_assoc_iterator item = section.find("default_level");
-      if (item != section.not_found())
-        {
-          LogLevel level = extractLevel(item->second, "default_level");
-          setDefaultLevel(level);
-        }
-      else
-        {
-          setDefaultLevel(LOG_INFO);
-        }
+  if (!isDryRun) {
+    ConfigSection::const_assoc_iterator item = section.find("default_level");
+    if (item != section.not_found()) {
+      LogLevel level = extractLevel(item->second, "default_level");
+      setDefaultLevel(level);
     }
+    else {
+      setDefaultLevel(LOG_INFO);
+    }
+  }
 
   for (ConfigSection::const_iterator item = section.begin();
        item != section.end();
-       ++item)
-    {
-      LogLevel level = extractLevel(item->second, item->first);
+       ++item) {
+    LogLevel level = extractLevel(item->second, item->first);
 
-      if (item->first == "default_level")
-        {
-          // do nothing
-        }
-      else
-        {
-          LoggerMap::iterator loggerIt = m_loggers.find(item->first);
-          if (loggerIt == m_loggers.end())
-            {
-              NFD_LOG_DEBUG("Failed to configure logging level for module \"" <<
-                            item->first << "\" (module not found)");
-            }
-          else if (!isDryRun)
-            {
-              // std::cerr << "changing level for module " << item->first << " to " << level << std::endl;
-              loggerIt->second.setLogLevel(level);
-            }
-        }
+    if (item->first == "default_level") {
+      // do nothing
     }
+    else {
+      LoggerMap::iterator loggerIt = m_loggers.find(item->first);
+      if (loggerIt == m_loggers.end()) {
+        NFD_LOG_DEBUG("Failed to configure logging level for module \"" <<
+                      item->first << "\" (module not found)");
+      }
+      else if (!isDryRun) {
+        // std::cerr << "changing level for module " << item->first << " to " << level << std::endl;
+        loggerIt->second.setLogLevel(level);
+      }
+    }
+  }
 }
 
 void
@@ -174,11 +160,10 @@
   // std::cerr << "changing to default_level " << level << std::endl;
 
   m_defaultLevel = level;
-  for (LoggerMap::iterator i = m_loggers.begin(); i != m_loggers.end(); ++i)
-    {
-      // std::cerr << "changing " << i->first << " to default " << m_defaultLevel << std::endl;
-      i->second.setLogLevel(m_defaultLevel);
-    }
+  for (LoggerMap::iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
+    // std::cerr << "changing " << i->first << " to default " << m_defaultLevel << std::endl;
+    i->second.setLogLevel(m_defaultLevel);
+  }
 }
 
 Logger&
@@ -203,10 +188,9 @@
 LoggerFactory::getModules() const
 {
   std::list<std::string> modules;
-  for (LoggerMap::const_iterator i = m_loggers.begin(); i != m_loggers.end(); ++i)
-    {
-      modules.push_back(i->first);
-    }
+  for (LoggerMap::const_iterator i = m_loggers.begin(); i != m_loggers.end(); ++i) {
+    modules.push_back(i->first);
+  }
 
   return modules;
 }
diff --git a/app/src/main/jni/nfd-android/custom-logger.hpp b/app/src/main/jni/nfd-android/custom-logger.hpp
index 2033967..86ed64c 100644
--- a/app/src/main/jni/nfd-android/custom-logger.hpp
+++ b/app/src/main/jni/nfd-android/custom-logger.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,
@@ -27,6 +27,7 @@
 #define NFD_ANDROID_CUSTOM_LOGGER_HPP
 
 #include "core/common.hpp"
+#include <sstream>
 #include <android/log.h>
 
 namespace nfd {
diff --git a/app/src/main/jni/nfd.mk b/app/src/main/jni/nfd.mk
index 77c27b8..a2c145e 100644
--- a/app/src/main/jni/nfd.mk
+++ b/app/src/main/jni/nfd.mk
@@ -6,22 +6,24 @@
 # nfd itself
 include $(CLEAR_VARS)
 LOCAL_MODULE := nfd-daemon
-LOCAL_SHARED_LIBRARIES := cryptopp_shared libcrypto_shared libssl_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
+LOCAL_SHARED_LIBRARIES := libssl_shared libcrypto_shared ndn-cxx $(addsuffix _shared,$(addprefix boost_,$(NFD_BOOST_LIBS)))
 NFD_DAEMON_SRC_FILES := \
     core/city-hash.cpp \
     core/config-file.cpp \
     core/global-io.cpp \
     core/manager-base.cpp \
-    core/network-interface.cpp \
+    core/network-interface-predicate.cpp \
     core/network.cpp \
     core/privilege-helper.cpp \
     core/random.cpp \
+    core/rtt-estimator.cpp \
     core/scheduler.cpp \
     ../nfd-android/custom-logger.cpp \
     ../nfd-android/custom-logger-factory.cpp \
     \
     daemon/face/channel.cpp \
     daemon/face/face-counters.cpp \
+    daemon/face/face-system.cpp \
     daemon/face/face.cpp \
     daemon/face/generic-link-service.cpp \
     daemon/face/internal-face.cpp \
@@ -29,8 +31,10 @@
     daemon/face/link-service.cpp \
     daemon/face/lp-fragmenter.cpp \
     daemon/face/lp-reassembler.cpp \
+    daemon/face/lp-reliability.cpp \
     daemon/face/multicast-udp-transport.cpp \
     daemon/face/null-face.cpp \
+    daemon/face/protocol-factory.cpp \
     daemon/face/tcp-channel.cpp \
     daemon/face/tcp-factory.cpp \
     daemon/face/tcp-transport.cpp \
@@ -43,6 +47,7 @@
     daemon/face/websocket-factory.cpp \
     daemon/face/websocket-transport.cpp \
     daemon/fw/access-strategy.cpp \
+    daemon/fw/algorithm.cpp \
     daemon/fw/asf-measurements.cpp \
     daemon/fw/asf-probing-module.cpp \
     daemon/fw/asf-strategy.cpp \
@@ -53,12 +58,9 @@
     daemon/fw/forwarder.cpp \
     daemon/fw/multicast-strategy.cpp \
     daemon/fw/ncc-strategy.cpp \
-    daemon/fw/pit-algorithm.cpp \
+    daemon/fw/process-nack-traits.cpp \
     daemon/fw/retx-suppression-exponential.cpp \
     daemon/fw/retx-suppression-fixed.cpp \
-    daemon/fw/retx-suppression.cpp \
-    daemon/fw/rtt-estimator.cpp \
-    daemon/fw/strategy-registry.cpp \
     daemon/fw/strategy.cpp \
     daemon/fw/unsolicited-data-policy.cpp \
     daemon/main.cpp \
@@ -104,6 +106,11 @@
     rib/fib-update.cpp \
     rib/fib-updater.cpp \
     rib/propagated-entry.cpp \
+    rib/readvertise/client-to-nlsr-readvertise-policy.cpp \
+    rib/readvertise/nfd-rib-readvertise-destination.cpp \
+    rib/readvertise/readvertise-destination.cpp \
+    rib/readvertise/readvertise.cpp \
+    rib/readvertise/readvertised-route.cpp \
     rib/rib-entry.cpp \
     rib/rib-manager.cpp \
     rib/rib-update-batch.cpp \