[ndnSIM] lp: Adding HopCount as an lp packet tag

Change-Id: I2c25bcf29f3928049d1040a3e421e1c7151b3ba2
diff --git a/src/lp/fields.hpp b/src/lp/fields.hpp
index 7d898d0..82b5c99 100644
--- a/src/lp/fields.hpp
+++ b/src/lp/fields.hpp
@@ -73,6 +73,11 @@
                           tlv::CongestionMark> CongestionMarkField;
 BOOST_CONCEPT_ASSERT((Field<CongestionMarkField>));
 
+typedef detail::FieldDecl<field_location_tags::Header,
+                          uint64_t,
+                          tlv::HopCountTag> HopCountTagField;
+BOOST_CONCEPT_ASSERT((Field<HopCountTagField>));
+
 /**
  * The value of the wire encoded field is the data between the provided iterators. During
  * encoding, the data is copied from the Buffer into the wire buffer.
@@ -94,7 +99,8 @@
   NextHopFaceIdField,
   CachePolicyField,
   IncomingFaceIdField,
-  CongestionMarkField
+  CongestionMarkField,
+  HopCountTagField
   > FieldSet;
 
 } // namespace lp
diff --git a/src/lp/tags.hpp b/src/lp/tags.hpp
index 5e2b3d6..e2439b1 100644
--- a/src/lp/tags.hpp
+++ b/src/lp/tags.hpp
@@ -56,6 +56,13 @@
  */
 typedef SimpleTag<uint64_t, 13> CongestionMarkTag;
 
+/** \class HopCountTag
+ *  \brief a packet tag for HopCount field
+ *
+ * This tag can be attached to Interest, Data, Nack.
+ */
+typedef SimpleTag<uint64_t, 0x60000000> HopCountTag;
+
 } // namespace lp
 } // namespace ndn
 
diff --git a/src/lp/tlv.hpp b/src/lp/tlv.hpp
index e7a5cca..ab4ea62 100644
--- a/src/lp/tlv.hpp
+++ b/src/lp/tlv.hpp
@@ -35,6 +35,7 @@
   Sequence = 81,
   FragIndex = 82,
   FragCount = 83,
+  HopCountTag = 84,
   Nack = 800,
   NackReason = 801,
   NextHopFaceId = 816,