diff --git a/daemon/face/generic-link-service.cpp b/daemon/face/generic-link-service.cpp index 000245e1c..807928774 100644 --- a/daemon/face/generic-link-service.cpp +++ b/daemon/face/generic-link-service.cpp @@ -128,6 +128,14 @@ GenericLinkService::encodeLpFields(const ndn::TagHost& netPkt, lp::Packet& lpPac if (congestionMarkTag != nullptr) { lpPacket.add(*congestionMarkTag); } + + shared_ptr hopCountTag = netPkt.getTag(); + if (hopCountTag != nullptr) { + lpPacket.add(*hopCountTag); + } + else { + lpPacket.add(0); + } } void @@ -262,6 +270,11 @@ GenericLinkService::decodeInterest(const Block& netPkt, const lp::Packet& firstP // forwarding expects Interest to be created with make_shared auto interest = make_shared(netPkt); + // Increment HopCount + if (firstPkt.has()) { + interest->setTag(make_shared(firstPkt.get() + 1)); + } + if (firstPkt.has()) { if (m_options.allowLocalFields) { interest->setTag(make_shared(firstPkt.get())); @@ -297,6 +310,10 @@ GenericLinkService::decodeData(const Block& netPkt, const lp::Packet& firstPkt) // forwarding expects Data to be created with make_shared auto data = make_shared(netPkt); + if (firstPkt.has()) { + data->setTag(make_shared(firstPkt.get() + 1)); + } + if (firstPkt.has()) { ++this->nInNetInvalid; NFD_LOG_FACE_WARN("received Nack with Data: DROP"); diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp index 5d7abdf7a..bd109134f 100644 --- a/daemon/fw/forwarder.cpp +++ b/daemon/fw/forwarder.cpp @@ -315,11 +315,14 @@ Forwarder::onIncomingData(Face& inFace, const Data& data) return; } + shared_ptr dataCopyWithoutTag = make_shared(data); + dataCopyWithoutTag->removeTag(); + // CS insert if (m_csFromNdnSim == nullptr) - m_cs.insert(data); + m_cs.insert(*dataCopyWithoutTag); else - m_csFromNdnSim->Add(data.shared_from_this()); + m_csFromNdnSim->Add(dataCopyWithoutTag); std::set pendingDownstreams; // foreach PitEntry