NDN layer now knows how to process ContentObject packets
diff --git a/model/ccnx-pit-entry.cc b/model/ccnx-pit-entry.cc
index a6629d0..b9ca8d4 100644
--- a/model/ccnx-pit-entry.cc
+++ b/model/ccnx-pit-entry.cc
@@ -22,6 +22,8 @@
 #include "ccnx-name-components.h"
 #include "ccnx-fib.h"
 
+#include "ns3/simulator.h"
+
 namespace ns3
 {
 
@@ -98,15 +100,21 @@
 }
 
 void
+CcnxPitEntry::DeleteIncoming::operator() (CcnxPitEntry &entry)
+{
+  entry.m_incoming.erase (m_face);
+}
+
+void
 CcnxPitEntry::AddOutgoing::operator() (CcnxPitEntry &entry)
 {
   entry.m_outgoing.insert (CcnxPitEntryOutgoingFace (m_face));
 }
 
 void
-CcnxPitEntry::DeleteIncoming::operator() (CcnxPitEntry &entry)
+CcnxPitEntry::DeleteOutgoing::operator() (CcnxPitEntry &entry)
 {
-  entry.m_incoming.erase (m_face);
+  entry.m_outgoing.erase (m_face);
 }
 
 void
@@ -115,5 +123,33 @@
   entry.m_incoming.clear ();
 }
 
+CcnxPitEntry::UpdateFibStatus::UpdateFibStatus (Ptr<CcnxFace> face, CcnxFibFaceMetric::Status status)
+  : m_face (face)
+  , m_status (status)
+{
+}
+
+void
+CcnxPitEntry::UpdateFibStatus::operator() (CcnxPitEntry &entry)
+{
+  entry.m_fib->UpdateStatus (m_face, m_status);
+}
+
+void
+CcnxPitEntry::EstimateRttAndRemoveFace::operator() (CcnxPitEntry &entry)
+{
+  // similar to Karn's Algorithm, we don't use RTT measurements for retx packets
+  if (m_outFace->m_retxNum>0)
+    return;
+
+  CcnxFibFaceMetricContainer::type::iterator metric = entry.m_fib->m_faces.find (m_outFace->m_face);
+  NS_ASSERT_MSG (metric != entry.m_fib->m_faces.end (),
+                 "Something wrong. Cannot find entry for the face in FIB");
+
+  Time rtt = Simulator::Now() - m_outFace->m_sendTime;
+  entry.m_fib->m_faces.modify (metric, CcnxFibFaceMetric::UpdateRtt (rtt));
+
+  entry.m_outgoing.erase (m_outFace);
+}
 
 }