model.fw: Correcting a "slightly" broken NACKs, though still not sure if everything works as it should.
diff --git a/model/fw/nacks.cc b/model/fw/nacks.cc
index 4a4245c..511b022 100644
--- a/model/fw/nacks.cc
+++ b/model/fw/nacks.cc
@@ -104,29 +104,7 @@
   //
   // inFace->LeakBucketByOnePacket ();
 
-  // pitEntry->SetWaitingInVain (inFace);
-
-  DidReceiveValidNack (inFace, header->GetNack (), pitEntry);
-  
-  // if (!pitEntry->AreAllOutgoingInVain ()) // not all ougtoing are in vain
-  //   {
-  //     NS_LOG_DEBUG ("Not all outgoing are in vain");
-  //     // suppress
-  //     // Don't do anything, we are still expecting data from some other face
-  //     m_dropNacks (header, inFace);
-  //     return;
-  //   }
-  
-  // Ptr<Packet> nonNackInterest = Create<Packet> ();
-  // Ptr<InterestHeader> nonNackHeader = Create<InterestHeader> (*header);
-  // nonNackHeader->SetNack (InterestHeader::NORMAL_INTEREST);
-  // nonNackInterest->AddHeader (*nonNackHeader);
-  
-  // bool propagated = DoPropagateInterest (inFace, nonNackHeader, nonNackInterest, pitEntry);
-  // if (!propagated)
-  //   {
-  //     DidExhaustForwardingOptions (inFace, nonNackHeader, nonNackInterest, pitEntry);
-  //   }  
+  DidReceiveValidNack (inFace, header->GetNack (), header, origPacket, pitEntry);
 }
 
 void
@@ -178,6 +156,8 @@
 void
 Nacks::DidReceiveValidNack (Ptr<Face> inFace,
                             uint32_t nackCode,
+                            Ptr<const InterestHeader> header,
+                            Ptr<const Packet> origPacket,
                             Ptr<pit::Entry> pitEntry)
 {
   // If NACK is NACK_GIVEUP_PIT, then neighbor gave up trying to and removed it's PIT entry.
@@ -187,7 +167,32 @@
       pitEntry->RemoveIncoming (inFace);
     }
 
-  pitEntry->GetFibEntry ()->UpdateStatus (inFace, fib::FaceMetric::NDN_FIB_YELLOW);
+  if (nackCode == InterestHeader::NACK_LOOP ||
+      nackCode == InterestHeader::NACK_CONGESTION ||
+      nackCode == InterestHeader::NACK_GIVEUP_PIT)
+    {
+      pitEntry->SetWaitingInVain (inFace);
+
+      if (!pitEntry->AreAllOutgoingInVain ()) // not all ougtoing are in vain
+        {
+          NS_LOG_DEBUG ("Not all outgoing are in vain");
+          // suppress
+          // Don't do anything, we are still expecting data from some other face
+          m_dropNacks (header, inFace);
+          return;
+        }
+  
+      Ptr<Packet> nonNackInterest = Create<Packet> ();
+      Ptr<InterestHeader> nonNackHeader = Create<InterestHeader> (*header);
+      nonNackHeader->SetNack (InterestHeader::NORMAL_INTEREST);
+      nonNackInterest->AddHeader (*nonNackHeader);
+  
+      bool propagated = DoPropagateInterest (inFace, nonNackHeader, nonNackInterest, pitEntry);
+      if (!propagated)
+        {
+          DidExhaustForwardingOptions (inFace, nonNackHeader, nonNackInterest, pitEntry);
+        }
+    }
 }
 
 } // namespace fw