[ndnSIM] lp, face: Add lp::HopCountTagField

Change-Id: I2c25bcf29f3928049d1040a3e421e1c7151b3ba2
diff --git a/ndn-cxx/face.cpp b/ndn-cxx/face.cpp
index a4185e4..5f50fbf 100644
--- a/ndn-cxx/face.cpp
+++ b/ndn-cxx/face.cpp
@@ -274,6 +274,10 @@
 {
   addTagFromField<lp::IncomingFaceIdTag, lp::IncomingFaceIdField>(netPacket, lpPacket);
   addTagFromField<lp::CongestionMarkTag, lp::CongestionMarkField>(netPacket, lpPacket);
+
+  if (lpPacket.has<lp::HopCountTagField>()) {
+    netPacket.setTag(make_shared<lp::HopCountTag>(lpPacket.get<lp::HopCountTagField>() + 1));
+  }
 }
 
 void
diff --git a/ndn-cxx/lp/fields.hpp b/ndn-cxx/lp/fields.hpp
index f705b36..ff9fd40 100644
--- a/ndn-cxx/lp/fields.hpp
+++ b/ndn-cxx/lp/fields.hpp
@@ -114,6 +114,11 @@
                   tlv::PrefixAnnouncement> PrefixAnnouncementField;
 BOOST_CONCEPT_ASSERT((Field<PrefixAnnouncementField>));
 
+typedef FieldDecl<field_location_tags::Header,
+                  uint64_t,
+                  tlv::HopCountTag> HopCountTagField;
+BOOST_CONCEPT_ASSERT((Field<HopCountTagField>));
+
 /** \brief Declare the Fragment field.
  *
  *  The fragment (i.e. payload) is the bytes between two provided iterators. During encoding,
@@ -140,7 +145,8 @@
   AckField,
   TxSequenceField,
   NonDiscoveryField,
-  PrefixAnnouncementField
+  PrefixAnnouncementField,
+  HopCountTagField
   > FieldSet;
 
 } // namespace lp
diff --git a/ndn-cxx/lp/tags.hpp b/ndn-cxx/lp/tags.hpp
index 9863700..54a189b 100644
--- a/ndn-cxx/lp/tags.hpp
+++ b/ndn-cxx/lp/tags.hpp
@@ -72,6 +72,13 @@
  */
 typedef SimpleTag<PrefixAnnouncementHeader, 15> PrefixAnnouncementTag;
 
+/** \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/ndn-cxx/lp/tlv.hpp b/ndn-cxx/lp/tlv.hpp
index d524bcf..32e5f6d 100644
--- a/ndn-cxx/lp/tlv.hpp
+++ b/ndn-cxx/lp/tlv.hpp
@@ -35,6 +35,7 @@
   Sequence = 81,
   FragIndex = 82,
   FragCount = 83,
+  HopCountTag = 84,
   PitToken = 98,
   Nack = 800,
   NackReason = 801,