Semi success with NACK enabled. Now need more NACK types and different processing
diff --git a/model/fw/per-fib-limits.cc b/model/fw/per-fib-limits.cc
index 8190329..43355e3 100644
--- a/model/fw/per-fib-limits.cc
+++ b/model/fw/per-fib-limits.cc
@@ -151,17 +151,20 @@
NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
super::WillEraseTimedOutPendingInterest (pitEntry);
- // Ptr<Packet> pkt = Create<Packet> ();
- // Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
- // nackHeader->SetNack (99);
- // pkt->AddHeader (*nackHeader);
+ if (pitEntry->GetOutgoing ().size () == 0)
+ {
+ Ptr<Packet> pkt = Create<Packet> ();
+ Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+ nackHeader->SetNack (99);
+ pkt->AddHeader (*nackHeader);
- // for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
- // face != pitEntry->GetIncoming ().end ();
- // face ++)
- // {
- // face->m_face->Send (pkt->Copy ());
- // }
+ for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+ face != pitEntry->GetIncoming ().end ();
+ face ++)
+ {
+ face->m_face->Send (pkt->Copy ());
+ }
+ }
PitQueue::Remove (pitEntry);
@@ -246,33 +249,32 @@
uint32_t nackCode,
Ptr<pit::Entry> pitEntry)
{
- // super::DidReceiveValidNack (inFace, nackCode, pitEntry);
// NS_LOG_FUNCTION (this << pitEntry->GetPrefix ());
- // Ptr<Packet> pkt = Create<Packet> ();
- // Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
- // nackHeader->SetNack (99);
- // pkt->AddHeader (*nackHeader);
+ Ptr<Packet> pkt = Create<Packet> ();
+ Ptr<InterestHeader> nackHeader = Create<InterestHeader> (*pitEntry->GetInterest ());
+ nackHeader->SetNack (99);
+ pkt->AddHeader (*nackHeader);
- // for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
- // face != pitEntry->GetIncoming ().end ();
- // face ++)
- // {
- // face->m_face->Send (pkt->Copy ());
- // }
+ for (pit::Entry::in_container::iterator face = pitEntry->GetIncoming ().begin ();
+ face != pitEntry->GetIncoming ().end ();
+ face ++)
+ {
+ face->m_face->Send (pkt->Copy ());
+ }
- // PitQueue::Remove (pitEntry);
+ PitQueue::Remove (pitEntry);
- // for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
- // face != pitEntry->GetOutgoing ().end ();
- // face ++)
- // {
- // face->m_face->GetLimits ().RemoveOutstanding ();
- // }
+ for (pit::Entry::out_container::iterator face = pitEntry->GetOutgoing ().begin ();
+ face != pitEntry->GetOutgoing ().end ();
+ face ++)
+ {
+ face->m_face->GetLimits ().RemoveOutstanding ();
+ }
- // m_pit->MarkErased (pitEntry);
+ m_pit->MarkErased (pitEntry);
- // ProcessFromQueue ();
+ ProcessFromQueue ();
}