Issue #27    Fix hop counting bug when NACKs are enabled
diff --git a/model/fw/nacks.cc b/model/fw/nacks.cc
index 8c24157..00bf840 100644
--- a/model/fw/nacks.cc
+++ b/model/fw/nacks.cc
@@ -27,6 +27,7 @@
 #include "ns3/ndn-pit.h"
 #include "ns3/ndn-fib.h"
 #include "ns3/ndn-content-store.h"
+#include "ns3/ndnSIM/utils/ndn-fw-hop-count-tag.h"
 
 #include "ns3/assert.h"
 #include "ns3/ptr.h"
@@ -118,6 +119,16 @@
       Ptr<Packet> nack = Create<Packet> ();
       nack->AddHeader (*nackHeader);
 
+      FwHopCountTag hopCountTag;
+      if (origPacket->PeekPacketTag (hopCountTag))
+        {
+     	  nack->AddPacketTag (hopCountTag);
+        }
+      else
+        {
+          NS_LOG_DEBUG ("No FwHopCountTag tag associated with received duplicated Interest");
+        }
+
       inFace->Send (nack);
       m_outNacks (nackHeader, inFace);
     }
@@ -136,6 +147,16 @@
       nackHeader->SetNack (InterestHeader::NACK_GIVEUP_PIT);
       packet->AddHeader (*nackHeader);
 
+      FwHopCountTag hopCountTag;
+      if (origPacket->PeekPacketTag (hopCountTag))
+        {
+     	  packet->AddPacketTag (hopCountTag);
+        }
+      else
+        {
+          NS_LOG_DEBUG ("No FwHopCountTag tag associated with original Interest");
+        }
+
       BOOST_FOREACH (const pit::IncomingFace &incoming, pitEntry->GetIncoming ())
         {
           NS_LOG_DEBUG ("Send NACK for " << boost::cref (nackHeader->GetName ()) << " to " << boost::cref (*incoming.m_face));
@@ -186,6 +207,16 @@
       nonNackHeader->SetNack (InterestHeader::NORMAL_INTEREST);
       nonNackInterest->AddHeader (*nonNackHeader);
 
+      FwHopCountTag hopCountTag;
+      if (origPacket->PeekPacketTag (hopCountTag))
+        {
+     	  nonNackInterest->AddPacketTag (hopCountTag);
+        }
+      else
+        {
+          NS_LOG_DEBUG ("No FwHopCountTag tag associated with received NACK");
+        }
+
       bool propagated = DoPropagateInterest (inFace, nonNackHeader, nonNackInterest, pitEntry);
       if (!propagated)
         {