route: replace FibEntry class with struct

fix warnings from ndn-cxx

Change-Id: I1be322251dcfe5d867717a64547e1908b99c78ba
diff --git a/src/hello-protocol.cpp b/src/hello-protocol.cpp
index f5c0929..cc3ed63 100644
--- a/src/hello-protocol.cpp
+++ b/src/hello-protocol.cpp
@@ -187,9 +187,9 @@
 HelloProtocol::onContent(const ndn::Interest& interest, const ndn::Data& data)
 {
   NLSR_LOG_DEBUG("Received data for INFO(name): " << data.getName());
-  if (data.getSignature().hasKeyLocator() &&
-      data.getSignature().getKeyLocator().getType() == ndn::tlv::Name) {
-    NLSR_LOG_DEBUG("Data signed with: " << data.getSignature().getKeyLocator().getName());
+  auto kl = data.getKeyLocator();
+  if (kl && kl->getType() == ndn::tlv::Name) {
+    NLSR_LOG_DEBUG("Data signed with: " << kl->getName());
   }
   m_confParam.getValidator().validate(data,
                                       std::bind(&HelloProtocol::onContentValidated, this, _1),
diff --git a/src/nlsr.cpp b/src/nlsr.cpp
index f3da897..fac8ae7 100644
--- a/src/nlsr.cpp
+++ b/src/nlsr.cpp
@@ -128,9 +128,9 @@
   m_strategySetOnRouters.push_back(originRouter);
 
   ndn::Name routerKey(originRouter);
-  routerKey.append("KEY");
+  routerKey.append(ndn::security::Certificate::KEY_COMPONENT);
   ndn::Name instanceKey(originRouter);
-  instanceKey.append("nlsr").append("KEY");
+  instanceKey.append("nlsr").append(ndn::security::Certificate::KEY_COMPONENT);
 
   m_fib.setStrategy(routerKey, Fib::BEST_ROUTE_V2_STRATEGY, 0);
   m_fib.setStrategy(instanceKey, Fib::BEST_ROUTE_V2_STRATEGY, 0);
@@ -143,7 +143,7 @@
     siteKey.append(originRouter[i]);
   }
   ndn::Name opPrefix(siteKey);
-  siteKey.append("KEY");
+  siteKey.append(ndn::security::Certificate::KEY_COMPONENT);
   m_fib.setStrategy(siteKey, Fib::BEST_ROUTE_V2_STRATEGY, 0);
 
   opPrefix.append(std::string("%C1.Operator"));
diff --git a/src/route/fib-entry.cpp b/src/route/fib-entry.cpp
deleted file mode 100644
index bc11634..0000000
--- a/src/route/fib-entry.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2020,  The University of Memphis,
- *                           Regents of the University of California
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "fib-entry.hpp"
-#include "logger.hpp"
-
-namespace nlsr {
-
-INIT_LOGGER(route.FibEntry);
-
-void
-FibEntry::writeLog() const
-{
-  NLSR_LOG_DEBUG("Name Prefix: " << m_name);
-  NLSR_LOG_DEBUG("Seq No: " << m_seqNo);
-  NLSR_LOG_DEBUG(m_nexthopList);
-}
-
-} // namespace nlsr
diff --git a/src/route/fib-entry.hpp b/src/route/fib-entry.hpp
deleted file mode 100644
index e5542e1..0000000
--- a/src/route/fib-entry.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/* -*- Mode:C++; c-file-style:"gnu"; indent-tabs-mode:nil; -*- */
-/*
- * Copyright (c) 2014-2020,  The University of Memphis,
- *                           Regents of the University of California
- *
- * This file is part of NLSR (Named-data Link State Routing).
- * See AUTHORS.md for complete list of NLSR authors and contributors.
- *
- * NLSR is free software: you can redistribute it and/or modify it under the terms
- * of the GNU General Public License as published by the Free Software Foundation,
- * either version 3 of the License, or (at your option) any later version.
- *
- * NLSR 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * NLSR, e.g., in COPYING.md file.  If not, see <http://www.gnu.org/licenses/>.
- **/
-
-#ifndef NLSR_FIB_ENTRY_HPP
-#define NLSR_FIB_ENTRY_HPP
-
-#include "nexthop-list.hpp"
-
-#include <ndn-cxx/util/scheduler.hpp>
-
-namespace nlsr {
-
-class FibEntry
-{
-public:
-  FibEntry() = default;
-
-  FibEntry(const ndn::Name& name)
-    : m_name(name)
-  {
-  }
-
-  const ndn::Name&
-  getName() const
-  {
-    return m_name;
-  }
-
-  NexthopList&
-  getNexthopList()
-  {
-    return m_nexthopList;
-  }
-
-  void
-  setRefreshEventId(ndn::scheduler::EventId id)
-  {
-    m_refreshEventId = std::move(id);
-  }
-
-  ndn::scheduler::EventId
-  getRefreshEventId() const
-  {
-    return m_refreshEventId;
-  }
-
-  void
-  setSeqNo(int32_t fsn)
-  {
-    m_seqNo = fsn;
-  }
-
-  int32_t
-  getSeqNo() const
-  {
-    return m_seqNo;
-  }
-
-  void
-  writeLog() const;
-
-  typedef NexthopList::const_iterator const_iterator;
-
-  const_iterator
-  begin() const;
-
-  const_iterator
-  end() const;
-
-private:
-  ndn::Name m_name;
-  ndn::scheduler::EventId m_refreshEventId;
-  int32_t m_seqNo = 1;
-  NexthopList m_nexthopList;
-};
-
-inline FibEntry::const_iterator
-FibEntry::begin() const
-{
-  return m_nexthopList.cbegin();
-}
-
-inline FibEntry::const_iterator
-FibEntry::end() const
-{
-  return m_nexthopList.cend();
-}
-
-} // namespace nlsr
-
-#endif // NLSR_FIB_ENTRY_HPP
diff --git a/src/route/fib.cpp b/src/route/fib.cpp
index 2fef853..1004889 100644
--- a/src/route/fib.cpp
+++ b/src/route/fib.cpp
@@ -33,7 +33,6 @@
 
 INIT_LOGGER(route.Fib);
 
-const uint64_t Fib::GRACE_PERIOD = 10;
 const std::string Fib::MULTICAST_STRATEGY("ndn:/localhost/nfd/strategy/multicast");
 const std::string Fib::BEST_ROUTE_V2_STRATEGY("ndn:/localhost/nfd/strategy/best-route");
 
@@ -54,11 +53,10 @@
   auto it = m_table.find(name);
 
   // Only unregister the prefix if it ISN'T a neighbor.
-  if (it != m_table.end() && isNotNeighbor((it->second).getName())) {
-    for (const auto& nexthop : (it->second).getNexthopList().getNextHops()) {
-      unregisterPrefix((it->second).getName(), nexthop.getConnectingFaceUri());
+  if (it != m_table.end() && isNotNeighbor((it->second).name)) {
+    for (const auto& nexthop : (it->second).nexthopList.getNextHops()) {
+      unregisterPrefix((it->second).name, nexthop.getConnectingFaceUri());
     }
-    cancelEntryRefresh(it->second);
     m_table.erase(it);
   }
 }
@@ -66,14 +64,14 @@
 void
 Fib::addNextHopsToFibEntryAndNfd(FibEntry& entry, const NexthopList& hopsToAdd)
 {
-  const ndn::Name& name = entry.getName();
+  const ndn::Name& name = entry.name;
 
   bool shouldRegister = isNotNeighbor(name);
 
   for (const auto& hop : hopsToAdd.getNextHops())
   {
     // Add nexthop to FIB entry
-    entry.getNexthopList().addNextHop(hop);
+    entry.nexthopList.addNextHop(hop);
 
     if (shouldRegister) {
       // Add nexthop to NDN-FIB
@@ -108,11 +106,12 @@
   if (entryIt == m_table.end() && hopsToAdd.size() != 0) {
     NLSR_LOG_DEBUG("New FIB Entry");
 
-    FibEntry entry(name);
+    FibEntry entry;
+    entry.name = name;
 
     addNextHopsToFibEntryAndNfd(entry, hopsToAdd);
 
-    m_table.emplace(name, entry);
+    m_table.emplace(name, std::move(entry));
 
     entryIt = m_table.find(name);
   }
@@ -131,47 +130,39 @@
     addNextHopsToFibEntryAndNfd(entry, hopsToAdd);
 
     std::set<NextHop, NextHopComparator> hopsToRemove;
-    std::set_difference(entry.getNexthopList().begin(), entry.getNexthopList().end(),
+    std::set_difference(entry.nexthopList.begin(), entry.nexthopList.end(),
                         hopsToAdd.begin(), hopsToAdd.end(),
                         std::inserter(hopsToRemove, hopsToRemove.end()), NextHopComparator());
 
-    bool isUpdatable = isNotNeighbor(entry.getName());
+    bool isUpdatable = isNotNeighbor(entry.name);
     // Remove the uninstalled next hops from NFD and FIB entry
     for (const auto& hop : hopsToRemove){
       if (isUpdatable) {
-        unregisterPrefix(entry.getName(), hop.getConnectingFaceUri());
+        unregisterPrefix(entry.name, hop.getConnectingFaceUri());
       }
-      NLSR_LOG_DEBUG("Removing " << hop.getConnectingFaceUri() << " from " << entry.getName());
-      entry.getNexthopList().removeNextHop(hop);
+      NLSR_LOG_DEBUG("Removing " << hop.getConnectingFaceUri() << " from " << entry.name);
+      entry.nexthopList.removeNextHop(hop);
     }
 
     // Increment sequence number
-    entry.setSeqNo(entry.getSeqNo() + 1);
-
+    entry.seqNo += 1;
     entryIt = m_table.find(name);
-
   }
+
   if (entryIt != m_table.end() &&
-      !entryIt->second.getRefreshEventId() &&
-      isNotNeighbor(entryIt->second.getName())) {
-    scheduleEntryRefresh(entryIt->second,
-                         [this] (FibEntry& entry) {
-                           scheduleLoop(entry);
-                         });
+      !entryIt->second.refreshEventId &&
+      isNotNeighbor(entryIt->second.name)) {
+    scheduleEntryRefresh(entryIt->second, [this] (FibEntry& entry) { scheduleLoop(entry); });
   }
 }
 
 void
 Fib::clean()
 {
-  NLSR_LOG_DEBUG("Fib::clean called");
-  // can't use const ref here as getNexthopList can't be marked const
-  for (auto&& it : m_table) {
-    NLSR_LOG_DEBUG("Canceling Scheduled event. Name: " << it.second.getName());
-    cancelEntryRefresh(it.second);
-
-    for (const auto& hop : it.second.getNexthopList().getNextHops()) {
-      unregisterPrefix(it.second.getName(), hop.getConnectingFaceUri());
+  NLSR_LOG_DEBUG("Clean called");
+  for (const auto& it : m_table) {
+    for (const auto& hop : it.second.nexthopList.getNextHops()) {
+      unregisterPrefix(it.second.name, hop.getConnectingFaceUri());
     }
   }
 }
@@ -182,13 +173,8 @@
   uint32_t nNextHops = static_cast<uint32_t>(nextHopList.getNextHops().size());
   uint32_t nMaxFaces = m_confParameter.getMaxFacesPerPrefix();
 
-  // Allow all faces
-  if (nMaxFaces == 0) {
-    return nNextHops;
-  }
-  else {
-    return std::min(nNextHops, nMaxFaces);
-  }
+  // 0 == all faces
+  return nMaxFaces == 0 ? nNextHops : std::min(nNextHops, nMaxFaces);
 }
 
 bool
@@ -325,13 +311,13 @@
 void
 Fib::scheduleEntryRefresh(FibEntry& entry, const afterRefreshCallback& refreshCallback)
 {
-  NLSR_LOG_DEBUG("Scheduling refresh for " << entry.getName() <<
-                 " Seq Num: " << entry.getSeqNo() <<
+  NLSR_LOG_DEBUG("Scheduling refresh for " << entry.name <<
+                 " Seq Num: " << entry.seqNo <<
                  " in " << m_refreshTime << " seconds");
 
-  entry.setRefreshEventId(m_scheduler.schedule(ndn::time::seconds(m_refreshTime),
-                                               std::bind(&Fib::refreshEntry, this,
-                                                         entry.getName(), refreshCallback)));
+  entry.refreshEventId = m_scheduler.schedule(ndn::time::seconds(m_refreshTime),
+                                              std::bind(&Fib::refreshEntry, this,
+                                                        entry.name, refreshCallback));
 }
 
 void
@@ -341,13 +327,6 @@
 }
 
 void
-Fib::cancelEntryRefresh(const FibEntry& entry)
-{
-  NLSR_LOG_DEBUG("Canceling refresh for " << entry.getName() << " Seq Num: " << entry.getSeqNo());
-  entry.getRefreshEventId().cancel();
-}
-
-void
 Fib::refreshEntry(const ndn::Name& name, afterRefreshCallback refreshCb)
 {
   auto it = m_table.find(name);
@@ -356,13 +335,12 @@
   }
 
   FibEntry& entry = it->second;
-  NLSR_LOG_DEBUG("Refreshing " << entry.getName() << " Seq Num: " << entry.getSeqNo());
+  NLSR_LOG_DEBUG("Refreshing " << entry.name << " Seq Num: " << entry.seqNo);
 
-  // Increment sequence number
-  entry.setSeqNo(entry.getSeqNo() + 1);
+  entry.seqNo += 1;
 
-  for (const NextHop& hop : entry) {
-    registerPrefix(entry.getName(),
+  for (const NextHop& hop : entry.nexthopList) {
+    registerPrefix(entry.name,
                    ndn::FaceUri(hop.getConnectingFaceUri()),
                    hop.getRouteCostAsAdjustedInteger(),
                    ndn::time::seconds(m_refreshTime + GRACE_PERIOD),
@@ -377,7 +355,9 @@
 {
   NLSR_LOG_DEBUG("-------------------FIB-----------------------------");
   for (const auto& entry : m_table) {
-    entry.second.writeLog();
+    NLSR_LOG_DEBUG("Name Prefix: " << entry.second.name);
+    NLSR_LOG_DEBUG("Seq No: " <<  entry.second.seqNo);
+    NLSR_LOG_DEBUG(entry.second.nexthopList);
   }
 }
 
diff --git a/src/route/fib.hpp b/src/route/fib.hpp
index 27891eb..e8f8a40 100644
--- a/src/route/fib.hpp
+++ b/src/route/fib.hpp
@@ -22,19 +22,26 @@
 #ifndef NLSR_ROUTE_FIB_HPP
 #define NLSR_ROUTE_FIB_HPP
 
-#include "fib-entry.hpp"
 #include "test-access-control.hpp"
+#include "nexthop-list.hpp"
 
 #include <ndn-cxx/mgmt/nfd/controller.hpp>
+#include <ndn-cxx/util/scheduler.hpp>
 #include <ndn-cxx/util/time.hpp>
 
 namespace nlsr {
 
+struct FibEntry {
+  ndn::Name name;
+  ndn::scheduler::ScopedEventId refreshEventId;
+  int32_t seqNo = 1;
+  NexthopList nexthopList;
+};
+
 typedef std::function<void(FibEntry&)> afterRefreshCallback;
 
 class AdjacencyList;
 class ConfParameter;
-class FibEntry;
 
 /*! \brief Maps names to lists of next hops, and exports this information to NFD.
  *
@@ -203,16 +210,6 @@
   void
   scheduleLoop(FibEntry& entry);
 
-  /*! \brief Cancel an entry's refresh event.
-   *
-   * Cancel an entry's refresh event. This only needs to be done when
-   * an entry is removed. Typically this happens when NLSR is
-   * terminated or crashes, and we don't want the scheduler to crash
-   * because it's referencing memory that has no valid function.
-   */
-  void
-  cancelEntryRefresh(const FibEntry& entry);
-
   /*! \brief Refreshes an entry in NFD.
    */
   void
@@ -239,7 +236,7 @@
    * allow for things like stuttering prefix registrations and
    * processing time when refreshing events.
    */
-  static const uint64_t GRACE_PERIOD;
+  static constexpr uint64_t GRACE_PERIOD = 10;
 };
 
 } // namespace nlsr
diff --git a/src/security/certificate-store.cpp b/src/security/certificate-store.cpp
index 11db5e3..684969a 100644
--- a/src/security/certificate-store.cpp
+++ b/src/security/certificate-store.cpp
@@ -85,12 +85,12 @@
   // Router's NLSR certificate
   ndn::Name nlsrKeyPrefix = m_confParam.getRouterPrefix();
   nlsrKeyPrefix.append("nlsr");
-  nlsrKeyPrefix.append("KEY");
+  nlsrKeyPrefix.append(ndn::security::Certificate::KEY_COMPONENT);
   prefixes.push_back(nlsrKeyPrefix);
 
   // Router's certificate
   ndn::Name routerKeyPrefix = m_confParam.getRouterPrefix();
-  routerKeyPrefix.append("KEY");
+  routerKeyPrefix.append(ndn::security::Certificate::KEY_COMPONENT);
   prefixes.push_back(routerKeyPrefix);
 
   // Router's operator's certificate
@@ -102,7 +102,7 @@
   // Router's site's certificate
   ndn::Name siteKeyPrefix = m_confParam.getNetwork();
   siteKeyPrefix.append(m_confParam.getSiteName());
-  siteKeyPrefix.append("KEY");
+  siteKeyPrefix.append(ndn::security::Certificate::KEY_COMPONENT);
   prefixes.push_back(siteKeyPrefix);
 
   // Start listening for interest of this router's NLSR certificate,
@@ -152,8 +152,9 @@
 
     setInterestFilter(certName);
 
-    if (cert->getKeyName() != cert->getSignature().getKeyLocator().getName()) {
-      publishCertFromCache(cert->getSignature().getKeyLocator().getName());
+    const ndn::Name& keyLocatorName = cert->getSignatureInfo().getKeyLocator().getName();
+    if (cert->getKeyName() != keyLocatorName) {
+      publishCertFromCache(keyLocatorName);
     }
   }
   else {
@@ -165,7 +166,7 @@
 void
 CertificateStore::afterFetcherSignalEmitted(const ndn::Data& lsaSegment)
 {
-  const auto keyName = lsaSegment.getSignature().getKeyLocator().getName();
+  const auto keyName = lsaSegment.getSignatureInfo().getKeyLocator().getName();
   if (!find(keyName)) {
     NLSR_LOG_TRACE("Publishing certificate for: " << keyName);
     publishCertFromCache(keyName);