apps+model+utils: Implementing Interest/Data hop counting using new PacketTag
diff --git a/apps/ndn-producer.cc b/apps/ndn-producer.cc
index 4f7afc4..f0d464a 100644
--- a/apps/ndn-producer.cc
+++ b/apps/ndn-producer.cc
@@ -30,7 +30,8 @@
 
 #include "ns3/ndn-app-face.h"
 #include "ns3/ndn-fib.h"
-// #include "../model/ndn-fib-impl.h"
+
+#include "ns3/ndnSIM/utils/ndn-fw-hop-count-tag.h"
 
 #include <boost/ref.hpp>
 #include <boost/lambda/lambda.hpp>
@@ -123,22 +124,17 @@
   NS_LOG_INFO ("node("<< GetNode()->GetId() <<") respodning with ContentObject:\n" << boost::cref(*header));
   
   Ptr<Packet> packet = Create<Packet> (m_virtualPayloadSize);
-  // Ptr<const WeightsPathStretchTag> tag = origPacket->RemovePacketTag<WeightsPathStretchTag> ();
-  // if (tag != 0)
-  //   {
-  //     // std::cout << Simulator::Now () << ", " << m_app->GetInstanceTypeId ().GetName () << "\n";
-
-  //     // echo back WeightsPathStretchTag
-  //     packet->AddPacketTag (CreateObject<WeightsPathStretchTag> (*tag));
-
-  //     // \todo
-  //     // packet->AddPacketTag should actually accept Ptr<const WeightsPathStretchTag> instead of
-  //     // Ptr<WeightsPathStretchTag>.  Echoing will be simplified after change is done
-  //   }
   
   packet->AddHeader (*header);
   packet->AddTrailer (tail);
 
+  // Echo back FwHopCountTag if exists
+  FwHopCountTag hopCountTag;
+  if (origPacket->RemovePacketTag (hopCountTag))
+    {
+      packet->AddPacketTag (hopCountTag);
+    }
+
   m_protocolHandler (packet);
   
   m_transmittedContentObjects (header, packet, this, m_face);