fw: honor NextHopFaceId universally
NextHopFaceId usage no longer depends on client-control strategy.
refs #3783
Change-Id: Ie49c453f90fa34b517b576fe401c8e4e8f23eab7
diff --git a/daemon/fw/forwarder.cpp b/daemon/fw/forwarder.cpp
index f0186f5..9ef3c75 100644
--- a/daemon/fw/forwarder.cpp
+++ b/daemon/fw/forwarder.cpp
@@ -201,6 +201,18 @@
// set PIT unsatisfy timer
this->setUnsatisfyTimer(pitEntry);
+ // has NextHopFaceId?
+ shared_ptr<lp::NextHopFaceIdTag> nextHopTag = interest.getTag<lp::NextHopFaceIdTag>();
+ if (nextHopTag != nullptr) {
+ // chosen NextHop face exists?
+ Face* nextHopFace = m_faceTable.get(*nextHopTag);
+ if (nextHopFace != nullptr) {
+ // go to outgoing Interest pipeline
+ this->onOutgoingInterest(pitEntry, *nextHopFace);
+ }
+ return;
+ }
+
// dispatch to strategy: after incoming Interest
this->dispatchToStrategy(*pitEntry,
[&] (fw::Strategy& strategy) { strategy.afterReceiveInterest(inFace, interest, pitEntry); });