route: Ensure nexthops are reregistered correctly

Reregister prefixes if nexthops don't change
Remove invalid nexthops instead of all of them
Cancel FibEntry expiration events before scheduling new ones
Remove FibEntry refreshing
Add grace period to LSA expiration

refs: #1892

Change-Id: I5136b6b0f52a47b6ba72e04b0cea81b85ebccd45
diff --git a/src/route/fib.hpp b/src/route/fib.hpp
index 2522928..6b448fb 100644
--- a/src/route/fib.hpp
+++ b/src/route/fib.hpp
@@ -74,6 +74,12 @@
   isPrefixUpdatable(const ndn::Name& name);
 
   void
+  addNextHopsToFibEntryAndNfd(FibEntry& entry, NexthopList& nextHopList);
+
+  void
+  removeOldNextHopsFromFibEntryAndNfd(FibEntry& entry, NexthopList& newHopList);
+
+  void
   removeHop(NexthopList& nl, const std::string& doNotRemoveHopFaceUri,
             const ndn::Name& name);
 
@@ -81,15 +87,12 @@
   getNumberOfFacesForName(NexthopList& nextHopList, uint32_t maxFacesPerPrefix);
 
   ndn::EventId
-  scheduleEntryRefreshing(const ndn::Name& name, int32_t feSeqNum,
+  scheduleEntryExpiration(const ndn::Name& name, int32_t feSeqNum,
                           const ndn::time::seconds& expTime);
 
   void
   cancelScheduledExpiringEvent(ndn::EventId eid);
 
-  void
-  refreshEntry(const ndn::Name& name, int32_t feSeqNum);
-
 public:
   void
   registerPrefix(const ndn::Name& namePrefix, const std::string& faceUri,