Adding patch to enable PathStretch trace to tracers plugin
diff --git a/plugins/tracers/README b/plugins/tracers/README
new file mode 100644
index 0000000..9d4a069
--- /dev/null
+++ b/plugins/tracers/README
@@ -0,0 +1,2 @@
+A set of tracers that can be useful for NDN and IP scenarios
+
diff --git a/plugins/tracers/patches/enable-path-stretch-trace.patch b/plugins/tracers/patches/enable-path-stretch-trace.patch
new file mode 100644
index 0000000..396f40b
--- /dev/null
+++ b/plugins/tracers/patches/enable-path-stretch-trace.patch
@@ -0,0 +1,105 @@
+diff --git a/apps/ccnx-consumer.cc b/apps/ccnx-consumer.cc
+index 1ddc0b1..ac60412 100644
+--- a/apps/ccnx-consumer.cc
++++ b/apps/ccnx-consumer.cc
+@@ -33,7 +33,7 @@
+ #include "../model/ccnx-local-face.h"
+ #include "ns3/ccnx-interest-header.h"
+ #include "ns3/ccnx-content-object-header.h"
+-// #include "ns3/weights-path-stretch-tag.h"
++#include "ns3/weights-path-stretch-tag.h"
+ 
+ #include <boost/ref.hpp>
+ #include <boost/lexical_cast.hpp>
+@@ -288,14 +288,14 @@ CcnxConsumer::OnContentObject (const Ptr<const CcnxContentObjectHeader> &content
+ 
+   m_rtt->AckSeq (SequenceNumber32 (seq));
+ 
+-  // Ptr<const WeightsPathStretchTag> tag = payload->RemovePacketTag<WeightsPathStretchTag> ();
+-  // if (tag != 0)
+-  //   {
+-  //     // Notify trace about path weights vector (e.g., for path-stretch calculation)
+-  //     m_pathWeightsTrace (GetNode (), tag->GetSourceNode (), seq, tag->GetTotalWeight ());
+-  //     // if (Names::FindName (GetNode ()) == "36")// || Names::FindName (GetNode ()) == "40"|| Names::FindName (GetNode ()) == "5")
+-  //     //   std::cout << Simulator::Now () << "\t" << boost::cref(*tag) << " = " << tag->GetTotalWeight () << "\n";
+-  //   }
++  Ptr<const WeightsPathStretchTag> tag = payload->RemovePacketTag<WeightsPathStretchTag> ();
++  if (tag != 0)
++    {
++      // Notify trace about path weights vector (e.g., for path-stretch calculation)
++      m_pathWeightsTrace (GetNode (), tag->GetSourceNode (), seq, tag->GetTotalWeight ());
++      // if (Names::FindName (GetNode ()) == "36")// || Names::FindName (GetNode ()) == "40"|| Names::FindName (GetNode ()) == "5")
++      //   std::cout << Simulator::Now () << "\t" << boost::cref(*tag) << " = " << tag->GetTotalWeight () << "\n";
++}
+ }
+ 
+ void
+diff --git a/model/ccnx-face.cc b/model/ccnx-face.cc
+index 86daa26..25cc0a5 100644
+--- a/model/ccnx-face.cc
++++ b/model/ccnx-face.cc
+@@ -30,7 +30,7 @@
+ #include "ns3/boolean.h"
+ #include "ns3/simulator.h"
+ 
+-// #include "ns3/weights-path-stretch-tag.h"
++#include "ns3/weights-path-stretch-tag.h"
+ 
+ #include <boost/ref.hpp>
+ 
+@@ -59,10 +59,10 @@ CcnxFace::GetTypeId ()
+                    MakeDoubleAccessor (&CcnxFace::m_bucketLeak),
+                    MakeDoubleChecker<double> ())
+                    
+-    // .AddAttribute ("MetricTagging", "Enable metric tagging (path-stretch calculation)",
+-    //                BooleanValue (false),
+-    //                MakeBooleanAccessor (&CcnxFace::m_enableMetricTagging),
+-    //                MakeBooleanChecker ())
++    .AddAttribute ("MetricTagging", "Enable metric tagging (path-stretch calculation)",
++                   BooleanValue (false),
++                   MakeBooleanAccessor (&CcnxFace::m_enableMetricTagging),
++                   MakeBooleanChecker ())
+     ;
+   return tid;
+ }
+@@ -157,23 +157,23 @@ CcnxFace::Send (Ptr<Packet> packet)
+   if (!IsUp ())
+     return false;
+ 
+-  // if (m_enableMetricTagging)
+-  //   {
+-  //     // update path information
+-  //     Ptr<const WeightsPathStretchTag> origTag = packet->RemovePacketTag<WeightsPathStretchTag> ();
+-  //     Ptr<WeightsPathStretchTag> tag;
+-  //     if (origTag == 0)
+-  //       {
+-  //         tag = CreateObject<WeightsPathStretchTag> (); // create a new tag
+-  //       }
+-  //     else
+-  //       {
+-  //         tag = CreateObject<WeightsPathStretchTag> (*origTag); // will update existing tag
+-  //       }
+-
+-  //     tag->AddPathInfo (m_node, GetMetric ());
+-  //     packet->AddPacketTag (tag);
+-  //   }
++  if (m_enableMetricTagging)
++    {
++      // update path information
++      Ptr<const WeightsPathStretchTag> origTag = packet->RemovePacketTag<WeightsPathStretchTag> ();
++      Ptr<WeightsPathStretchTag> tag;
++      if (origTag == 0)
++        {
++          tag = CreateObject<WeightsPathStretchTag> (); // create a new tag
++        }
++      else
++        {
++          tag = CreateObject<WeightsPathStretchTag> (*origTag); // will update existing tag
++        }
++
++      tag->AddPathInfo (m_node, GetMetric ());
++      packet->AddPacketTag (tag);
++    }
+   
+   SendImpl (packet);
+   return true;
diff --git a/plugins/tracers/ccnx-aggregate-app-tracer.cc b/plugins/tracers/tracers/ccnx-aggregate-app-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-aggregate-app-tracer.cc
rename to plugins/tracers/tracers/ccnx-aggregate-app-tracer.cc
diff --git a/plugins/tracers/ccnx-aggregate-app-tracer.h b/plugins/tracers/tracers/ccnx-aggregate-app-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-aggregate-app-tracer.h
rename to plugins/tracers/tracers/ccnx-aggregate-app-tracer.h
diff --git a/plugins/tracers/ccnx-aggregate-l3-tracer.cc b/plugins/tracers/tracers/ccnx-aggregate-l3-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-aggregate-l3-tracer.cc
rename to plugins/tracers/tracers/ccnx-aggregate-l3-tracer.cc
diff --git a/plugins/tracers/ccnx-aggregate-l3-tracer.h b/plugins/tracers/tracers/ccnx-aggregate-l3-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-aggregate-l3-tracer.h
rename to plugins/tracers/tracers/ccnx-aggregate-l3-tracer.h
diff --git a/plugins/tracers/ccnx-app-tracer.cc b/plugins/tracers/tracers/ccnx-app-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-app-tracer.cc
rename to plugins/tracers/tracers/ccnx-app-tracer.cc
diff --git a/plugins/tracers/ccnx-app-tracer.h b/plugins/tracers/tracers/ccnx-app-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-app-tracer.h
rename to plugins/tracers/tracers/ccnx-app-tracer.h
diff --git a/plugins/tracers/ccnx-consumer-window-tracer.cc b/plugins/tracers/tracers/ccnx-consumer-window-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-consumer-window-tracer.cc
rename to plugins/tracers/tracers/ccnx-consumer-window-tracer.cc
diff --git a/plugins/tracers/ccnx-consumer-window-tracer.h b/plugins/tracers/tracers/ccnx-consumer-window-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-consumer-window-tracer.h
rename to plugins/tracers/tracers/ccnx-consumer-window-tracer.h
diff --git a/plugins/tracers/ccnx-l3-tracer.cc b/plugins/tracers/tracers/ccnx-l3-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-l3-tracer.cc
rename to plugins/tracers/tracers/ccnx-l3-tracer.cc
diff --git a/plugins/tracers/ccnx-l3-tracer.h b/plugins/tracers/tracers/ccnx-l3-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-l3-tracer.h
rename to plugins/tracers/tracers/ccnx-l3-tracer.h
diff --git a/plugins/tracers/ccnx-path-weight-tracer.cc b/plugins/tracers/tracers/ccnx-path-weight-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-path-weight-tracer.cc
rename to plugins/tracers/tracers/ccnx-path-weight-tracer.cc
diff --git a/plugins/tracers/ccnx-path-weight-tracer.h b/plugins/tracers/tracers/ccnx-path-weight-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-path-weight-tracer.h
rename to plugins/tracers/tracers/ccnx-path-weight-tracer.h
diff --git a/plugins/tracers/ccnx-rate-l3-tracer.cc b/plugins/tracers/tracers/ccnx-rate-l3-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-rate-l3-tracer.cc
rename to plugins/tracers/tracers/ccnx-rate-l3-tracer.cc
diff --git a/plugins/tracers/ccnx-rate-l3-tracer.h b/plugins/tracers/tracers/ccnx-rate-l3-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-rate-l3-tracer.h
rename to plugins/tracers/tracers/ccnx-rate-l3-tracer.h
diff --git a/plugins/tracers/ccnx-seqs-app-tracer.cc b/plugins/tracers/tracers/ccnx-seqs-app-tracer.cc
similarity index 100%
rename from plugins/tracers/ccnx-seqs-app-tracer.cc
rename to plugins/tracers/tracers/ccnx-seqs-app-tracer.cc
diff --git a/plugins/tracers/ccnx-seqs-app-tracer.h b/plugins/tracers/tracers/ccnx-seqs-app-tracer.h
similarity index 100%
rename from plugins/tracers/ccnx-seqs-app-tracer.h
rename to plugins/tracers/tracers/ccnx-seqs-app-tracer.h
diff --git a/plugins/tracers/ipv4-app-tracer.cc b/plugins/tracers/tracers/ipv4-app-tracer.cc
similarity index 100%
rename from plugins/tracers/ipv4-app-tracer.cc
rename to plugins/tracers/tracers/ipv4-app-tracer.cc
diff --git a/plugins/tracers/ipv4-app-tracer.h b/plugins/tracers/tracers/ipv4-app-tracer.h
similarity index 100%
rename from plugins/tracers/ipv4-app-tracer.h
rename to plugins/tracers/tracers/ipv4-app-tracer.h
diff --git a/plugins/tracers/ipv4-l3-tracer.cc b/plugins/tracers/tracers/ipv4-l3-tracer.cc
similarity index 100%
rename from plugins/tracers/ipv4-l3-tracer.cc
rename to plugins/tracers/tracers/ipv4-l3-tracer.cc
diff --git a/plugins/tracers/ipv4-l3-tracer.h b/plugins/tracers/tracers/ipv4-l3-tracer.h
similarity index 100%
rename from plugins/tracers/ipv4-l3-tracer.h
rename to plugins/tracers/tracers/ipv4-l3-tracer.h
diff --git a/plugins/tracers/ipv4-rate-l3-tracer.cc b/plugins/tracers/tracers/ipv4-rate-l3-tracer.cc
similarity index 100%
rename from plugins/tracers/ipv4-rate-l3-tracer.cc
rename to plugins/tracers/tracers/ipv4-rate-l3-tracer.cc
diff --git a/plugins/tracers/ipv4-rate-l3-tracer.h b/plugins/tracers/tracers/ipv4-rate-l3-tracer.h
similarity index 100%
rename from plugins/tracers/ipv4-rate-l3-tracer.h
rename to plugins/tracers/tracers/ipv4-rate-l3-tracer.h
diff --git a/plugins/tracers/ipv4-seqs-app-tracer.cc b/plugins/tracers/tracers/ipv4-seqs-app-tracer.cc
similarity index 100%
rename from plugins/tracers/ipv4-seqs-app-tracer.cc
rename to plugins/tracers/tracers/ipv4-seqs-app-tracer.cc
diff --git a/plugins/tracers/ipv4-seqs-app-tracer.h b/plugins/tracers/tracers/ipv4-seqs-app-tracer.h
similarity index 100%
rename from plugins/tracers/ipv4-seqs-app-tracer.h
rename to plugins/tracers/tracers/ipv4-seqs-app-tracer.h