model: Add ability to get pointer to Fib from fib::Entry
diff --git a/model/fib/ndn-fib-entry.cc b/model/fib/ndn-fib-entry.cc
index 09b3ec6..eee3381 100644
--- a/model/fib/ndn-fib-entry.cc
+++ b/model/fib/ndn-fib-entry.cc
@@ -19,6 +19,7 @@
  */
 
 #include "ndn-fib-entry.h"
+#include "ndn-fib.h"
 
 #include "ns3/ndn-name.h"
 #include "ns3/log.h"
@@ -169,6 +170,13 @@
   return m_faces.get<i_nth> () [skip];
 }
 
+Ptr<Fib>
+Entry::GetFib ()
+{
+  return m_fib;
+}
+
+
 std::ostream& operator<< (std::ostream& os, const Entry &entry)
 {
   for (FaceMetricContainer::type::index<i_nth>::type::iterator metric =
diff --git a/model/fib/ndn-fib-entry.h b/model/fib/ndn-fib-entry.h
index 4b3f64c..0b1a6bc 100644
--- a/model/fib/ndn-fib-entry.h
+++ b/model/fib/ndn-fib-entry.h
@@ -43,6 +43,8 @@
 class Name;
 typedef Name NameComponents;
 
+class Fib;
+
 namespace fib {
 
 /**
@@ -246,8 +248,9 @@
    * \brief Constructor
    * \param prefix smart pointer to the prefix for the FIB entry
    */
-  Entry (const Ptr<const Name> &prefix)
-  : m_prefix (prefix)
+  Entry (Ptr<Fib> fib, const Ptr<const Name> &prefix)
+  : m_fib (fib)
+  , m_prefix (prefix)
   , m_needsProbing (false)
   {
   }
@@ -308,10 +311,18 @@
     m_faces.erase (face);
   }
 
+  /**
+   * @brief Get pointer to access FIB, to which this entry is added
+   */
+  Ptr<Fib>
+  GetFib ();
+  
 private:
   friend std::ostream& operator<< (std::ostream& os, const Entry &entry);
 
 public:
+  Ptr<Fib> m_fib; ///< \brief FIB to which entry is added
+
   Ptr<const Name> m_prefix; ///< \brief Prefix of the FIB entry
   FaceMetricContainer::type m_faces; ///< \brief Indexed list of faces
 
diff --git a/model/fib/ndn-fib-impl.cc b/model/fib/ndn-fib-impl.cc
index 218502b..ccc4f10 100644
--- a/model/fib/ndn-fib-impl.cc
+++ b/model/fib/ndn-fib-impl.cc
@@ -112,9 +112,9 @@
     {
       if (result.second)
         {
-            Ptr<EntryImpl> newEntry = Create<EntryImpl> (prefix);
-            newEntry->SetTrie (result.first);
-            result.first->set_payload (newEntry);
+          Ptr<EntryImpl> newEntry = Create<EntryImpl> (this, prefix);
+          newEntry->SetTrie (result.first);
+          result.first->set_payload (newEntry);
         }
   
       super::modify (result.first,
diff --git a/model/fib/ndn-fib-impl.h b/model/fib/ndn-fib-impl.h
index 57d7d50..3054420 100644
--- a/model/fib/ndn-fib-impl.h
+++ b/model/fib/ndn-fib-impl.h
@@ -40,8 +40,8 @@
     ndnSIM::counting_policy_traits
     > trie;
 
-  EntryImpl (const Ptr<const Name> &prefix)
-    : Entry (prefix)
+  EntryImpl (Ptr<Fib> fib, const Ptr<const Name> &prefix)
+    : Entry (fib, prefix)
     , item_ (0)
   {
   }